2

Yii のブレッドクラム ウィジェットのリンクをカスタマイズするには?

プロパティを変更できますtagNameが、コンテナ用です。a各リンクのタグを からに変更したいli。どうすればいいですか?

4

2 に答える 2

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>orを使用できます。CHtml::tag('li',//other options)CHtml::link

編集:

<a>for each リンクを<li>(置き換えるのではなく) で囲むことをお勧めしますが:

$links[]='<li>'.CHtml::link($this->encodeLabel ? CHtml::encode($label) : $label, $url).'</li>';
于 2012-07-14T15:54:24.837 に答える
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,
             ));

または、'homeLink'=>false と書くこともできます。しかし、この場合、毎回 $this->breadcrumbs でホーム URL を設定する必要があります。

于 2015-04-10T11:18:36.320 に答える