如何修改zii.widgets.CBreadcrumbs自动生成的html?

时间:2012-08-09 14:56:32

标签: php yii

我需要修改Yii框架widget-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>

那我怎么能改变呢?

1 个答案:

答案 0 :(得分:13)

  1. 如果您使用的是Yii (1.1.11)的最新版本,则CBreadcrumbs中有一些选项,即:activeLinkTemplate和{ {1}}并使用这些(以及inactiveLinkTemplate)您可以轻松达到您的要求。

    您只需要在包含breadcrumb小部件的文件中添加这些选项的值,默认情况下,它位于布局文件中: protected / views / layouts / main.php ,像这样:

    tagName

    <?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'生成无法点击且没有网址的当前网址。

    'inactiveLinkTemplate'{url}是每个视图的痕迹导体对象提供的 url 标签值。例如: -

    {label}
  2. 如果您使用的是1.1.11之前的版本,那么您必须// in some view.php file, you'll see this $this->breadcrumbs=array( // array is label=>url 'Label1'=>array('route1'), 'Label2'=>array('route2'), 'Label3', ); CBreadcrumbs类并修改extend方法以输出包含在run()中的面包屑。一旦您看到现有的<li>方法,您就会非常清楚如何做到这一点。

  3. 修改

    错过了如何添加css类。您可以通过在此小部件的htmlOptions数组中添加类键值来完成此操作:

    run()