(转)
Yii中的CBreadcrumbs简介~俗称:面包屑
功能介绍:zii.widgets 下的CBreadcrumbs类,其继承关系: CBreadcrumbs » CWidget »
CBaseController » CComponent .源代码位置:
framework/zii/widgets/CBreadcrumbs.php
面包屑类显示一个链接列表以表明当前页面在整个网站中的位置.
由于面包屑通常会出现在网站的近乎所有的页面,此插件最好在视图的layout中进行部署.
你可以定义一个breadcrumbs属性并且在布局文件中指派给(网站)基础控制器插件,如下所示:
$this->widget('zii.widgets.CBreadcrumbs', array(
'links'=>$this->breadcrumbs,
));
注意:
$this->breadcrumbs//是一个数组,具体是下面这样的
$crumbss=array(
'特价专区'=>'http://www.baidu.com',
'猕猴桃'=>'',
);
key=>value key 链接的名字 value 链接的地址
我之前就不是这么写的,导致链接地址一直不对,不是我想要的.我又看了看Yii的官方手册
以上是官方提供的文档文件的介绍.
下面介绍视图文件中写法:
$this->breadcrumbs=array(
'Users'=>array('index'),
'Create',
// 形式 : 'key' =>'value' key的位置相当于最后显示出来的a标签内的名字, value则相当于a标签的href属性.
// 'Create'表示当前页 故没有设置链接.
);
面包屑 顶级导航Home 改为 中文 首页 方法
<?php $this->widget('zii.widgets.CBreadcrumbs', array(
'homeLink'=>CHtml::link('首页',Yii::app()->homeUrl), //设置顶级导航Home为中文 "首页"
'htmlOptions'=>array('class'=>'lnk'),//添加样式
'separator'=>'->',//breadcrumbs中链接之间的分隔符。默认是‘ » ’。
'links'=>$this->breadcrumbs,));
?>
上面的一些属性,Yii手册上有,请看手册~~
别一种方法,就是修改Yii框架系统文件.个人不建议这么做.
找到CBreadcrumbs.php | framework/zii/jui/CBreadcrumbs.php
在116行.
public function run()
{
if(empty($this->links))
return;
echo CHtml::openTag($this->tagName,$this->htmlOptions)."\n";
$links=array();
if($this->homeLink===null)
$links[]=CHtml::link(Yii::t('zii','Home'),Yii::app()->homeUrl); // 116行 Home改为你想要的中文文字
elseif($this->homeLink!==false)
$links[]=$this->homeLink;
foreach($this->links as $label=>$url)
{
if(is_string($label) || is_array($url))
$links[]=strtr($this->activeLinkTemplate,array(
'{url}'=>CHtml::normalizeUrl($url),
'{label}'=>$this->encodeLabel ? CHtml::encode($label) : $label,
));
else
$links[]=str_replace('{label}',$this->encodeLabel ? CHtml::encode($url) : $url,$this->inactiveLinkTemplate);
}
echo implode($this->separator,$links);
echo CHtml::closeTag($this->tagName);
}
}