Columns for CListView
В составе лучшего PHP фреймворка в мире — Yii есть класс для отображения списка элементов — CListView. К сожалению он не отображает список в несколько колонок, для одного из моих проектов понадобилось именно это.
Представляю ColumnListView
<?php Yii::import('zii.widgets.CListView'); class ColumnListView extends CListView { public $columns = array("leftblock", "midblock", "rightblock"); //@override) public function renderItems() { $y = 0; if(sizeof($this->columns)) foreach ($this->columns as $column) { echo CHtml::openTag('div',array('class'=>'column '.$column,))."\n"; $columns = sizeof($this->columns); $data=$this->dataProvider->getData(); if(count($data)>0) { $owner=$this->getOwner(); $render=$owner instanceof CController ? 'renderPartial' : 'render'; foreach($data as $i=>$item) { if( ($i+ ($columns - $y)) % $columns == 0) { $data=$this->viewData; $data['index']=$i; $data['data']=$item; $data['widget']=$this; $owner->$render($this->itemView,$data); } } } else $this->renderEmptyText(); echo CHtml::closeTag('div'); $y++; } } }
Использование:
Скопируйте файл ColumnListView.php в папку protected/components.
В том месте где нужно вывести список должен выполнится примерно такой код:
<?php $this->widget('application.components.ColumnListView', array( 'dataProvider'=>$dataProvider, 'itemView'=>'_view', 'columns'=>array("one","two","three","four"), )); ?>
Все наши элементы будут выведены в четырех колонках.
Обратите внимание, добавился новый параметр columns — массив, каждый элемент которого это див с одноименным классом. Правильное отображение этих дивов вам нужно обеспечить самостоятельно.

4 comments to “Columns for CListView”
Декабрь 3rd, 2010 at 03:16
Thanks.
But, the width of the columns is variable, they can be fixed???
Best regards.
Декабрь 3rd, 2010 at 11:21
Each column has it’s own css class. You can specify collumn width in CSS file
.one{width:300px; float:left}
...
Декабрь 3rd, 2010 at 14:22
Thanks again.
Wait more examples about Yii.
Thanks and best regards from Spain.
Июнь 9th, 2011 at 23:42
good stuff. new to yii & Google Translate helps me with the language, how about the pagination as CGridView does?