如何基于php foreach向菜单内的一个按钮添加类?

问题描述 投票:0回答:1

我有一个像 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 按钮中删除。

javascript php class foreach menu
1个回答
0
投票

如果您想在当前 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
    }
}
?>
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.