我有一个像 youtube 这样的视频网站。 管理员可以无限制地添加许多类别。 这些类别作为水平菜单显示在网站顶部。 这是显示类别的代码: PHP-
<?php
foreach($pt->categories as $key => $category) {
if (1) {
?>
<div class="swiper-slide">
<a class=""
href="{{LINK videos/category/<?php echo $key?>}}"
data-load="?link1=videos&page=category&id=<?php echo $key?>">
<?php echo $category?></a>
</div>
<?php
}
}
?>
js-
<script>
function copyLinkfnH() {
var copyText = document.getElementById("copyLinkH");
copyText.select();
document.execCommand("copy");
};
var swiper = new Swiper('.pt_sec_nav_slide_prnt', {
loop: false,
slidesPerView: "auto",
// Navigation arrows
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
</script>
通过这段代码,如果我将“active”添加到 class="" ,菜单的所有按钮都将具有“active”。
我需要的是:
每个按钮单击时都有“活动”类。
example :
categories : CARS , SPORT , NEWS , KIDS .
buttons : CARS , SPORT , NEWS , KIDS .
点击
SPORT
按钮将打开体育页面,体育按钮必须有
单击后为“active”类,并且 CARS
、 NEWS
、 KIDS
按钮没有“active”类。
单击 KIDS 按钮将打开儿童页面,KIDS 按钮获得“活动”类别并将其从 SPORT 按钮中删除。
如果您想在当前 URL 的菜单项上使用
active
类,则需要识别它。我尝试通过从查询字符串中提取 id
来识别它,但也许更好的方法是提取 category
。是用ajax吗?例如,指向类别 SPORT
的典型链接是什么样的?
为了安全起见,我还添加了一个在输出 html 之前对其进行 esc 的功能。
<?php
function esc_attr($str)
{
return htmlspecialchars((string) $str, ENT_QUOTES);
}
// get id from request
$id = $_GET['id'] ?? null;
foreach ($pt->categories as $key => $category) {
if (1) {
$class = '';
if ($key == $id) {
$class = 'active';
}
?>
<div class="swiper-slide">
<a class="<?php echo esc_attr($class); ?>" href="{{LINK videos/category/<?php echo esc_attr($key); ?>}}" data-load="?link1=videos&page=category&id=<?php echo esc_attr($key); ?>">
<?php echo $category ?></a>
</div>
<?php
}
}
?>