【问题标题】:Hide content on a sidebar depending on the page根据页面隐藏侧边栏上的内容
【发布时间】:2013-09-10 16:56:21
【问题描述】:

我有一个具有以下设置的网站:

overview.php 酒店1.php 酒店2.php hotel3.php

概览有一个侧边栏,其中包含指向酒店 1、2 和 3 的链接,每个酒店页面都有一个侧边栏,其中包含指向其他两家酒店(不包括自身)的链接以及概览页面。

此刻,我正在对每个 php 页面中的侧边栏进行硬编码,因为它们都略有不同。

我想知道是否有一种方法可以在一个单独的文件 (sidebar.php) 中编写一个侧边栏,其中包含指向四个页面中每一个的链接,并使用 php include() 函数添加侧边栏。

然后,根据页面(将有一个标识符)显示所有链接,除了指向自身的链接。

问题是,我不知道该怎么做,或者是否可以做到。

该网站是 php 和 html(带有 css 和 javascript)。

如果它是相关的,我有大约 100 个文件夹,其中包含一个概述,然后是多个我想在其上实施的酒店。

【问题讨论】:

  • 创建一个单独的文件(sidebar.php),然后在hotels.php文件(您希望侧边栏显示哪个酒店文件)中包含sidebar.php
  • 您可以使用if ($currentPageId == 1) {echo "class='active'";}else {} 的影响,并为您希望隐藏的项目使用 CSS 类。与switchcase 结合使用。当我在 SO 上找到这个问题/答案时,我的菜单文件中有这个。来源:stackoverflow.com/a/11075949/1415724

标签: php html css show-hide sidebar


【解决方案1】:

最简单的方法是将侧边栏代码包装在一个函数中。

sidebar.php

<?php
    function print_all_sidebar_links_except_self($self = NULL){
        $hotels_text = array(
            "hotel1" => "Gryffindor Tower",
            "hotel2" => "Ravenclaw Tower",
            "hotel3" => "Slytherin Dungeons"
        );

        if (isset($self)){
            unset($hotels_text[$self]);
        }

        foreach ($hotels_text as $page => $name){
            echo "<a href='".$page.".php'>".$name."</a>";
        }
    }
?>
  • overview.php:print_all_sidebar_links_except_self();
  • hotel1.php:print_all_sidebar_links_except_self('hotel1');
  • hotel2.php:print_all_sidebar_links_except_self('hotel2');
  • hotel3.php:print_all_sidebar_links_except_self('hotel3');

【讨论】:

  • “根据页面在侧边栏隐藏内容” – 隐藏在哪里生效?
  • 在我的旧代码中,if 进行了自我检查,然后跳过了回显。我重构了我的代码以使其更具可扩展性,现在应该很清楚了。 “隐藏”涉及根本不将其传递给用户。
  • 啊,好吧,这对我来说很有意义。
  • +1 关于代码和“酒店”的选择。只是不确定我是否想留在“斯莱特林地下城”;-)
  • 嗯,我认为你是对的;我认为他们不太喜欢我们麻瓜。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 2014-04-05
  • 2016-11-19
  • 1970-01-01
  • 2017-05-16
  • 2021-05-29
  • 1970-01-01
相关资源
最近更新 更多