gpt4 book ai didi

php - 使用 CodeIgniter 进行高效的网站导航

转载 作者:行者123 更新时间:2023-12-02 07:11:00 25 4
gpt4 key购买 nike

我在一个网站上工作,该网站的导航层次结构最多可以有 3 层。

  • 顶部标题中的主要部分
  • 左侧子导航
  • 下方可选的子子导航

过去,当我自己使用 PHP 时,我会创建一个文件 navigation.php,其中包含一个类和数组,用于所有部分和子部分,以及几个用于输出导航的函数。我会在站点的每个页面上设置变量 (current_section ='', current_sub_section=''),以便导航功能知道要突出显示的内容。

在 CodeIgniter 中,我想知道这是否仍然是一个好的使用方法?

最佳答案

我假设您的主要导航部分几乎直接映射到您的 Controller ,即。

主页 |新闻 |事件

在您的顶部栏中,映射到:

  • /家
  • /新闻
  • /事件

如果是这种情况,您已经有了一种选择导航阵列的简单方法。

您可以在 Controller 构造函数中放置一组导航项-链接对,并将它们传递给输出中的 subview 。

例子:

class HomeController extends CI_Controller 
{
private $nav;
public function __construct()
{
parent::__construct();

$this->nav = array(
array('Browse', site_url('news/browse')),
array('Edit', site_url('news/edit'))
);

$this->load->vars(array('NavigationArray' => $this->nav));
}

// ...

}

现在您所做的是在您的所有 View $NavigationArray 中自动注册一个变量,该变量包含一个Display Name - Link 对数组。

然后您可以加载一个基本的导航 View ,该 View 从该变量构建您的子导航(因为它随处可用)。

<? foreach($NavigationArray as $entry): ?>
<a href="<?=$entry[1];?>"><?=$entry[0];?></a>
<? endforeach; ?>

在下面你可以寻找一个子导航数组的存在,你可以选择在你的 Controller 中设置它,或者其他任何东西(你谈到的第三个可选导航)

<? if(exists($SubNavigationArray)): ?>
<? foreach($SubNavigationArray as $entry): ?>
<a href="<?=$entry[1];?>"><?=$entry[0];?></a>
<? endforeach; ?>
<? endif; ?>

请记住,这个示例非常基础,但这通常是我们传递数据的方式,我不希望您将全局变量放在任何地方并尝试将它们排入队列。只需将变量“加载”到 View 引擎中,当您​​渲染 View / subview 时它们就可用了。

这样 Controller 就可以控制显示哪些导航项。

另请注意:

您可以显式传递变量,而不是相信它们将存在于您的 View 范围内。

$this->load->view('myview', array('NavigationArray' => $this->nav));

希望这对您有所帮助。

关于php - 使用 CodeIgniter 进行高效的网站导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5876961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com