Разберем пример вывода списка статей (таблица posts) и данных об авторе статьи (таблица user, для примера сортировки по связанным таблицам). Структуру таблиц описывать не будем (в таблице posts данные о статьях, в таблице user данные об авторах).

Модели для таблиц user и posts стандартные, единственное, что необходимо заметить - это в модели posts необходимо добавить связь с авторами (по id автора) для примера сортировки по связанной таблице (путь к модели: /protected/models/Posts.php):

<?php

class Posts extends CActiveRecord {

    //...код модели ...

    public function relations() {
        return array(
            'user' => array(self::BELONGS_TO, 'User', 'userId'),
        );
    }

    //...код модели ...

}

Код контроллера PostsController (путь к файлу: /protected/controllers/PostsController.php):

<?php

class PostsController extends Controller {

    public function actionIndex() {
        $criteria = new CDbCriteria(array(
            'condition' => 'visibility=1',
            'with' => 'user',
        ));

        $dataProvider = new CActiveDataProvider('Posts', array(
            'pagination' => array(
                //количество элементов на странице
                'pageSize' => 5,
            ),
            'criteria' => $criteria,
            //настройки для сортировки
            'sort' => array(
                //атрибуты по которым происходит сортировка
                'attributes' => array(
                    //заголовок
                    'header' => array(
                        'asc' => 'header ASC',
                        'desc' => 'header DESC',
                        //по умолчанию, сортируем поле header по убыванию (desc)
                        'default' => 'DESC',
                    ),
                    'user' => array(
                        'asc' => 'user.name ASC',
                        'desc' => 'user.name DESC',
                        //по умолчанию, сортируем поле user по убыванию (desc)
                        'default' => 'DESC',
                    ),
                    'date' => array(
                        'asc' => 't.date ASC',
                        'desc' => 't.date DESC',
                        //по умолчанию, сортируем поле date по убыванию (desc)
                        'default' => 'DESC',
                    ),
                ),
                //сортировка по умолчанию
                'defaultOrder' => array(
                    'date' => CSort::SORT_DESC,
                )
            ),
        ));

        $this->render('index', array(
            'dataProvider' => $dataProvider,
        ));
    }

    //... код контроллера ...

}

Код представления (view, путь к файлу: /themes/themeName/views/posts/index.php):

<?php

$this->widget('zii.widgets.CListView', array(
    'dataProvider' => $dataProvider,
    'itemView' => '_list', // представление для одной записи
    'ajaxUpdate' => true, // true - ajax обновление данных, false - без ajax
    'emptyText' => 'В данной категории записей.',
    'summaryText' => "{start} &mdash; {end} из {count}",
    'template' => '{pager} {summary} {sorter} {items} <hr/> {pager}',
    'sorterHeader' => 'Сортировать по:',
    // ключи, которые были описаны $sort->attributes
    // если не описывать $sort->attributes, можно использовать атрибуты модели
    // настройки CSort перекрывают настройки sortableAttributes
    'sortableAttributes' => array('header', 'user' => 'Автор', 'date'),
    'pagerCssClass' => 'text-center',
    'loadingCssClass' => 'preloader',
    'pager'=>array(
        'nextPageLabel' => '<span>&raquo;</span>',
        'prevPageLabel' => '<span>&laquo;</span>',
        'lastPageLabel' => '<span>&raquo;&raquo;</span>',
        'firstPageLabel' => '<span>&laquo;&laquo;</span>',
        'selectedPageCssClass' => 'active',
        'hiddenPageCssClass' => 'disabled',
        'htmlOptions' => array('class' => 'pagination'),        
        'class' => 'CLinkPager',
        'header' => false,
    ),
));

Код представления для записи (itemView, путь к файлу: /themes/themeName/views/posts/_list.php):


<div class="media-body-list">
    <h3 class="media-heading mrgn-btn-10">
        <a href="<?php echo $data->url; ?>" class="link-h3"><?php echo $data->name; ?></a>
    </h3>
    <?php echo $data->shortText; ?>
    <div class="overflow-hidden">
        <a href="<?php echo $data->url; ?>" class="detail btn btn-default pull-right">Подробнее...</a>
    </div>
</div>

Список записей готов.

Основные свойства виджета для настройки вывода данных:

Свойство Тип Описание
afterAjaxUpdate string JavaScript функция, которая будет вызвана после успешного выполнения AJAX запроса.
ajaxType string Тип AJAX запроса, "GET" или "POST".
ajaxUpdate mixed ID контейнера в который будет записаны данные из ответа AJAX. false - отключит AJAX обновление данных.
ajaxUpdateError string JavaScript функция, которая будет вызываться при возникновении ошибки обновления AJAX.
ajaxUrl mixed URL для AJAX запросов.
ajaxVar string Имя GET переменной, что указывает на AJAX запрос который вызван из текущего виджета.
beforeAjaxUpdate string JavaScript функция, которая будет вызвана, перед AJAX запросом.
cssFile string Путь к CSS файлу для виджета.
emptyCssClass string Имя CSS класса для контейнера при пустом списке.
emptyTagName string Имя HTML тега для контейнера при пустом списке.
emptyText string Сообщение, которое отображается при пустом списке.
htmlOptions array HTML атрибуты для контейнера списка.
itemView string Вид (view) для рендеринга элемента списка.
itemsCssClass string CSS класс элемента списка.
itemsTagName string HTML тег для контейнера списка.
loadingCssClass string CSS класс, который будет назначен в виджет элемента контейнера при обновлении контента AJAX запросом.
pager array|string Конфигурация постраничного навигатора.
pagerCssClass string CSS класс постраничного навигатора.
sortableAttributes array Список атрибутов сортировки.
sorterCssClass string CSS класс для контейнера сортировки.
sorterHeader string Текст, отображаемый до сортировки.
sorterFooter string Текст, отображаемый после сортировки.
summaryCssClass string CSS класс для суммарного текста контейнера.
summaryTagName string HTML тег суммарного контейнера.
summaryText string Шаблон текста для суммарного контейнера.
tagName string Тег контейнера списка.
template string Шаблон, использоваться для управления размещением различных компонентов.
viewData array Дополнительные данные которые будут переданы в itemView.
Больше информации о настройке виджета смотрите по адресу: http://www.yiiframework.com/doc/api/1.1/CListView