Новый модуль cclive (Прямой эфир)

cctracker

Пока только для тестирования.
Новый модуль реализует показ блока и страницы так называемого "Прямого эфира", т.е. показывает информацию по самым последним изменениям при комментировании материалов.
Отличается от аналогичных модулей широкой возможностями по темизации вывода.
Т.е. вы можете настроить вывод (через шаблоны tpl.php) практически в любом удобном для вас формате. Для этого в модуле реализован вывод шаблоны практически для всех элементов.

Темизация страницы:
cclive-page-wrapper.tpl.php
Шаблон вывода страницы
доступны переменные
$livedata - непосредственно данные
$pager - стандартный пэйджинг

<div id="cclive-page">
<table>
<tbody>
<?php print $livedata; ?>
</tbody>
</table>
<?php print $pager; ?>
</div>

Шаблон вывода страницы элемента (одной записи в странице)
cclive-page-item.tpl.php

доступны переменные
$zebra - (odd,even)
$cclive_item - массив с данными записи
$cclive_item['node_title'] - заголовок ноды
$cclive_item['node_title_link'] - заголовок ноды в виде ссылки на ноду
$cclive_item['node_title_link_to_comment'] - заголовок ноды в виде ссылки на последний комментарий
$cclive_item['node_type'] - тип ноды
$cclive_item['node_type_name'] - наименование типа ноды
$cclive_item['node_timestamp'] - дата время создания ноды в виде timestamp
$cclive_item['node_date'] - дата время создания ноды в формате установленном в настройках модуля
$cclive_item['node_uid'] - uid автора ноды
$cclive_item['node_username'] - имя автора ноды
$cclive_item['node_usermail'] - email автора ноды
$cclive_item['node_user_link'] - имя автора ноды в виде ссылки на профиль
$cclive_item['node_avatar'] - аватарка автора ноды
$cclive_item['comment_uid'] - uid последнего комментария
$cclive_item['comment_username'] - имя автора последнего комментария
$cclive_item['comment_usermail'] - email автора последнего комментария
$cclive_item['comment_homepage'] - homepage автора последнего комментария
$cclive_item['comment_subject'] - заголовок последнего комментария
$cclive_item['comment_user_link'] - имя автора последнего комментария в виде ссылки на профиль
$cclive_item['comment_avatar'] - аватарка автора последнего комментария
$cclive_item['comment_timestamp']- дата время создания последнего комментария в виде timestamp
$cclive_item['comment_date'] - дата время создания последнего комментария в формате установленном в настройках модуля
$cclive_item['comment_content'] - содержание комментария
$cclive_item['comment_content_link_to_comment'] - содержание комментария в виде ссылки на этот комментарий
$cclive_item['href_node'] - url на ноду
$cclive_item['href_comment']- url на последний комментарий
$cclive_item['comment_count'] - количество опубликованных комментариев в ноде

<?php
// $Id$
/**
 *  @File
 */

?>
<tr class="cclive-page-row <?php print $zebra; ?>">
<td class="cclive-page-node">
<?php print  $cclive_item['node_user_link'] . ' &raquo; ' . $cclive_item['node_type_name']. ' &raquo; ' . $cclive_item['node_date'] . ' &raquo; ' . $cclive_item['node_title_link']; ?>
</td>
<td class="cclive-page-comment">
<div class="submited">
<?php print $cclive_item['comment_user_link'] . ' &raquo; ' . $cclive_item['comment_date'] . ' &raquo; <a href="'.$cclive_item['href_comment'].'" class="cclive-cnt">'.format_plural($cclive_item['comment_count'], '1 comment', '@count comments') .'</a>'; ?>
</div>
<div class="cclive-page-comment-body">
<?php print $cclive_item['comment_content'];?>
</div>
</td>
</tr>

так же доступна для переопределения функция темизации
function theme_cclive_page($liveitem) {
         foreach ($liveitem as $key => $value) {
            $livedata .= $value;
   }
         return $livedata;
}

Темизация блока:
cclive-block-wrapper.tpl.php
Шаблон вывода блока
доступны переменные
$livedata - непосредственно данные
$more - ссылка на страницу cclive

<?php
// $Id$
/**
 *  @File
 */

?>
<div id="cclive-block">
<?php print $livedata; ?>
<?php print $more; ?>
</div>

В свою очередь $livedata выводиться через функцию темизации
function theme_cclive_block($liveitem) {
         return theme('item_list',$liveitem);
}

где $liveitem - это массив элементов, каждый из которых определен
через шаблон
cclive-block-item.tpl.php
переменные аналогичны шаблону cclive-page-item.tpl.php
<?php
// $Id$
/**
 *  @File
 */

?>
<?php
print $cclive_item['comment_user_link'] .
' &raquo; (' . $cclive_item['node_type_name'] .
')  &raquo;  <a href="' . $cclive_item['href_comment'] . '" title="' . check_plain($cclive_item['comment_content']) . '" class="ccfilter tooltip">'.$cclive_item['node_title'] . ' (' . $cclive_item['comment_count'] . ')</a>' ;
?>
</div>

Ну и небольшая функция для темизации ссылки на страницу из блока
function theme_cclive_more() {
  return '<div class="more-link">' . l(t('Read more'), 'cclive') . '</div>';
}

Установка модуля производиться как обычно, распаковываем архив в папку sites/all/modules
На странице настройки модулей включаем модуль cclive
В настройках модуля (admin/settings/cclive) - настраиваем вывод страницы "Прямой эфир"
На странице настройки блоков (admin/build/block) - включаем и настраиваем блок cclive и помещаем его в нужный регион.
Если хотим подредактировать вывод, копируем файлы *.tpl.php из папки модулей в директорию со своей темой и там их подправляем как надо. Если надо переопределить функции темизации, то переопределяем в файле вашей темы template.php
нужные функции
вашатема_cclive_block($liveitem)
вашатема_cclive_page($liveitem)
вашатема_cclive_more()

Файл перевода и README.TXT будет чуть позже.

ПредпросмотрВложениеРазмер
cclive.zip9.39 кб
 

Комментарии

Нашел сурьозный баг для суперадмина и пользователей с админскими правами

http://drupal.ru/node/55578#comment-304558

olk аватар

Обновлен модуль cclive.
Добавлена настройка на типы материалов, доступные для «прямого эфира».
Добавлена проверка на доступ к материалам (т.е. добавлены операторы db_rewrite_sql для запросов).
Добавлен файл перевода.
Обновленный архив в топике.

модуль не учитывает разграничение прав доступа?
Я под гостем вижу комментарии переписки админов (модуль OG)

olk аватар

ok, спасибо учтем в следующим релизе.

что нужно сделать, чтобы ваш модуль мог взаимодействовать с i18n? То есть при переключении языка отображались только комментарии и ноды этого языка?