2

我需要修改 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>

那我怎么改呢?

4

1 回答 1

14
  1. 如果您使用的是最新版本的Yii (1.1.11) ,那么您在CBreadcrumbs中有一些选项,即:并且使用这些(以及)您可以轻松实现您的要求。activeLinkTemplateinactiveLinkTemplatetagName

    您只需在包含面包屑小部件的文件中为这些选项添加值,默认情况下,它位于布局文件中: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'为活动/可点击链接生成链接,并'inactiveLinkTemplate'生成不可点击且没有 url 的当前 url。

    {url}并且{label}是每个视图的面包屑对象提供的urllabel值。例如:-

    // in some view.php file, you'll see this
    $this->breadcrumbs=array( // array is label=>url
        'Label1'=>array('route1'),
        'Label2'=>array('route2'),
        'Label3',
    );
    
  2. 如果您使用的是 1.1.11 之前的版本,则必须使用extendCBreadcrumbs 类并修改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 -->
于 2012-08-10T07:13:55.857 回答