如何为Yii定制面包屑小部件的链接?
我可以更改属性tagName
,但它可以更改为容器。我想为a
到li
的每个链接更改标记。我该怎么做?
答案 0 :(得分:2)
您可以为默认的CBreadcrumbs窗口小部件类指定没有设置/属性值,它将为您提供<li>
。如果您查看其run()
方法,可以确认这一点。在源代码中,您可以看到:
public function run(){
// code
foreach($this->links as $label=>$url)
{
if(is_string($label) || is_array($url))
$links[]=CHtml::link($this->encodeLabel ? CHtml::encode($label) : $label, $url);
else
$links[]='<span>'.($this->encodeLabel ? CHtml::encode($url) : $url).'</span>';
}
// more code
}
所以你要做的就是extend
这个类,并指定你自己的run
方法,你可以使用<li>
或CHtml::tag('li',//other options)
代替默认<a>
{3}}
修改强>
虽然我建议为<li>
封闭每个链接的$links[]='<li>'.CHtml::link($this->encodeLabel ? CHtml::encode($label) : $label, $url).'</li>';
(而不是替换它):
{{1}}
答案 1 :(得分:0)
您可以使用'activeLinkTemplate'和'inactiveLinkTemplate'属性执行此操作:
$this->widget('zii.widgets.CBreadcrumbs',
array('tagName'=>'ul',
'homeLink'=>'<li>'.CHtml::link('Home', array('/')).'</li>',
'activeLinkTemplate'=>'<li><a href="{url}">{label}</a></li>',
'inactiveLinkTemplate'=>'<li class="active">{label}</li>',
'htmlOptions'=> array('class'=>'breadcrumb'),
'separator'=>' / ',
'links'=>$this->breadcrumbs,
));
或者U可以写'homeLink'=&gt; false。但在这种情况下,每次使用$ this-&gt; breadcrumbs时,你都必须设置Home url。