happydemon/elements

A Kohana 模块,帮助构建 HTML 导航菜单和面包屑

安装: 55

依赖: 1

建议者: 0

安全: 0

星级: 7

关注者: 2

分支: 0

开放问题: 1

类型:kohana-module

1.4.1 2014-02-02 21:27 UTC

This package is auto-updated.

Last update: 2024-09-12 21:37:26 UTC


README

简化简单、动态标准化导航菜单和面包屑的渲染、构建和维护。而不是 ...

<? if ($user->get_role() === Role::ANONYMOUS):?>
<ul>
	<li><a href="/" <?= $page === 'home' ? 'class="active"' : NULL?>>Home</a></li>
	<li><a href="/about" <?= $page === 'about' ? 'class="active"' : NULL?>>About</a></li>
</ul>
<? // elseif (...)?>

... 我们这样做

<?
return [
'items' => [
            'url'     => 'home',
            'title'   => 'Home',
        ],
        [
            'route'     => 'about',
            'title'   => 'About',
        ],
];

如你所见,第一个项目使用 url 属性,正如原始 Kohana-menu 模块所要求的,而第二个项目使用路由属性。

添加路由属性是为了利用 Kohana 的自有路由系统和使用反向路由,这使得检查链接是否当前活动变得更加容易。

我建议为项目中的每个控制器动作定义路由。

安装

将文件放在你的模块目录中。

作为 Git 子模块

git clone git://github.com/happyDemon/elements.git modules/elements

作为 Composer 依赖

{
	"require": {
		"php": ">=5.4.0",
		"composer/installers": "*",
		"happyDemon/elements":"*"
	}
}

MODPATH.elements/config/navigation/navbar.php 复制到 APPPATH/config/navigation/navbar.php 并进行自定义

bootstrap.php 中激活模块。

<?php
Kohana::modules(array(
	...
	'elements' => MODPATH.'elements',
));

示例用法

一个类似 WordPress 的博客可能需要...

  • 公共主导航菜单
  • 公共页脚菜单
  • 当管理员登录时,公共页面上的仅管理员菜单
  • 管理员界面上的仅管理员菜单

通常,您会使用 ulli 元素构建 HTML 视图,然后编写一些 PHP 代码来突出显示活动链接。这很难维护(DRY)且太麻烦(更不用说丑陋了)。

相反,您可以在配置文件中描述您的(标准化)菜单,并让 Kohana 做繁重的工作。

同样适用于面包屑,您可能需要它们用于

  • 管理面板
  • 论坛
  • 目录

并且可以与您菜单的相同结构

此分支相对于 Kohana-menu 的优势

Kohana-menu 有一个特定的任务并且做得很好,我个人还需要一种管理网站特定区域面包屑的方法。

由于我的面包屑与我菜单的数据结构相同(并且许多可以共享 1 个配置文件),我决定扩展此模块,以便我可以同时用于两端。

基础

您在 Kohana 配置文件中定义您的菜单(请参阅 config/navigation/navbar.php)。然后,在您的(主要)控制器(或模板)中,构造一个新的 Element 对象,设置活动链接,并在模板中渲染它。完成。

在模板中输出菜单输出(使用包含的 Twitter Bootstrap 模板)

<div class="navbar navbar-fixed-top">
	<div class="navbar-inner">
		<div class="container">
			<?=Element::factory('navbar')->render('Menu', 'bootstrap/navbar')?>
		</div>
	</div>
</div>

并在您想要的位置输出面包屑(我们将使用 Bootstrap 样式)

<?=Element::factory('navbar')->render('Breadcrumb', 'bootstrap')?>

您可能希望在主控制器中实例化菜单,因为这为您提供了在与它渲染之前与 Element 对象交互的方式。

配置文件

您可以通过设置工厂的 $config 参数来使用不同的配置文件。

示例:根据用户角色加载菜单配置

	$element = Element::factory($role); // this could use `config/navigation/(user|admin).php`

标记当前菜单项

如果您的控制器中没有使用路由,请使用 set_current() 在控制器中标记当前菜单项

	$element->set_current('article/show');

set_current() 的参数是相应项的 URL 值或其(数值)数组键。

但是,如果在该项中定义了 'route' 属性,并且您使用 Route::set 在 bootstrap.php 或 init.php 中定义了所有路由,则可以自动检测

硬设置活动面包屑项

在某些页面上,您可能希望显示一个动态的活跃面包屑项(树形结构的最后一个项)以明确显示正在执行的操作。

您可以通过在您的 Element 对象上调用 last_item 并定义您想要渲染的内容,来代替在配置文件中定义的默认文本来完成此操作。

	$element->last_item('editing user "happyDemon"');

文档

代码大部分都有注释,用户指南正在制作中,将包含更多示例。

许可证

Kohana模块最初是Anroot的Kohana-menu的分支,而Kohana-menu又是Bastian Bräu原始Kohana Menu模块的分支,但现在它是在MIT许可证下独立开发的。AnrootBastian Bräu

Gittip Badge