我需要修改Yii框架小部件-zii.widgets.CBreadcrumbs。
默认情况下,它打印:
<div class="breadcrumbs">
<a href="/dr/dr/public_html/">Home</a> » <span>News</span></div>
但是我需要:
<ul class="menu">
<li><a href="/dr/dr/public_html/">Home</a></li>
<li>News</li>
</ul>
那么我该如何改变呢?
最佳答案
activeLinkTemplate
和inactiveLinkTemplate
,并使用它们(以及tagName
)可以轻松实现您的要求。您只需要在包含面包屑小部件的文件中为这些选项添加值,默认情况下,它位于布局文件中:protected / views / layouts / main.php,如下所示:
<?php if(isset($this->breadcrumbs)):?>
<?php $this->widget('zii.widgets.CBreadcrumbs', array(
'links'=>$this->breadcrumbs,
'tagName'=>'ul', // will change the container to ul
'activeLinkTemplate'=>'<li><a href="{url}">{label}</a></li>', // will generate the clickable breadcrumb links
'inactiveLinkTemplate'=>'<li>{label}</li>', // will generate the current page url : <li>News</li>
'homeLink'=>'<li><a href="'.Yii::app()->homeUrl.'">Home</a></li>' // will generate your homeurl item : <li><a href="/dr/dr/public_html/">Home</a></li>
)); ?><!-- breadcrumbs -->
<?php endif?>
'activeLinkTemplate'
生成 Activity /可点击链接的链接,'inactiveLinkTemplate'
生成当前不可点击且没有url的URL。{url}
和{label}
是每个视图的面包屑对象提供的url和标签值。例如:-// in some view.php file, you'll see this
$this->breadcrumbs=array( // array is label=>url
'Label1'=>array('route1'),
'Label2'=>array('route2'),
'Label3',
);
extend
CBreadcrumbs类,并修改run()
方法以输出面包屑,并用<li>
括起来。一旦看到了现有的run()
方法,您将很清楚如何做到这一点。 编辑:
错过了如何添加css类的方法。为此,您可以在htmlOptions数组中为此小部件添加类键值:
<?php $this->widget('zii.widgets.CBreadcrumbs', array(
'links'=>$this->breadcrumbs,
'tagName'=>'ul', // will change the container to ul
'htmlOptions'=>array('class'=>'menu'),
// ... rest of the code ...
)); ?><!-- breadcrumbs -->
关于php - 如何修改zii.widgets.CBreadcrumbs自动生成的HTML?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11886211/