Пока только для тестирования.
Новый модуль реализует показ блока и страницы так называемого "Прямого эфира", т.е. показывает информацию по самым последним изменениям при комментировании материалов.
Отличается от аналогичных модулей широкими возможностями по темизации вывода.
Т.е. вы можете настроить вывод (через шаблоны tpl.php) практически в любом удобном для вас формате.
В модуле реализован вывод шаблоны практически для всех элементов.
Оригинал материала на моем сайте там-же можно посмотреть как это выглядит.
Темизация страницы:
cclive-page-wrapper.tpl.php
Шаблон вывода страницы
доступны переменные
$livedata - непосредственно данные
$pager - стандартный пэйджинг
<?php
<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'] - количество опубликованных комментариев в ноде
// $Id$
/**
* File
*/
?>
<tr class="cclive-page-row <?php print $zebra; ?>">
<td class="cclive-page-node">
<?php print $cclive_item['node_user_link'] . ' » ' . $cclive_item['node_type_name']. ' » ' . $cclive_item['node_date'] . ' » ' . $cclive_item['node_title_link']; ?>
</td>
<td class="cclive-page-comment">
<div class="submited">
<?php print $cclive_item['comment_user_link'] . ' » ' . $cclive_item['comment_date'] . ' » <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>
так же доступна для переопределения функция темизации
foreach ($liveitem as $key => $value) {
$livedata .= $value;
}
return $livedata;
}
Темизация блока:
cclive-block-wrapper.tpl.php
Шаблон вывода блока
доступны переменные
$livedata - непосредственно данные
$more - ссылка на страницу cclive
В свою очередь $livedata выводиться через функцию темизации
где $liveitem - это массив элементов, каждый из которых определен
через шаблон
cclive-block-item.tpl.php
переменные аналогичны шаблону cclive-page-item.tpl.php
// $Id$
/**
* File
*/
?>
<?php
print $cclive_item['comment_user_link'] .
' » (' . $cclive_item['node_type_name'] .
') » <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>
Ну и небольшая функция для темизации ссылки на страницу из блока
Установка модуля производиться как обычно, распаковываем архив в папку 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 будет чуть позже.
После всестороннего тестирования выложу на org
Вложение | Размер |
---|---|
cclive.zip | 6.42 КБ |
Комментарии
А можно как-нибудь убрать - Гость
(не проверено)Ну это вопрос больше не к модулю а темизации, у меня например в файле template.php переопределена следующая функция
(hotel_fix в имени функции надо заменить на наименование вашей темы)
if ($object->uid && $object->name) {
if (drupal_strlen($object->name) > 20) {
$name = drupal_substr($object->name, 0, 15) . '...';
}
else {
$name = $object->name;
}
if (user_access('access user profiles')) {
$output = l($name, 'user/' . $object->uid, array('attributes' => array('title' => t('View user profile username.',array('username'=>$object->name)),'class' => 'ccfilter tooltip user')));
}
else {
$output = check_plain($name);
}
}
else if ($object->name) {
if (!empty($object->homepage)) {
$output = l($object->name, $object->homepage, array('attributes' => array('rel' => 'nofollow')));
}
else {
$output = check_plain($object->name);
}
$output = '<span class="ccfilter tooltip user" title="Не зарегистрированный пользователь">'.$output.'</span>' ;
}
else {
$output = variable_get('anonymous', t('Anonymous'));
}
return $output;
}
О, это тот самый модуль который был обещан
Здорово, попробую
Скажите пожалуйста, а вы планируете в следующих версиях выводить комментарии пользователей в его профиле? Насколько я понял из описания, этого пока нет. Просто вот думаю, подождать ваш модуль или сниппет ставить.
Обновлен модуль cclive.
Добавлена настройка на типы материалов, доступные для «прямого эфира».
Добавлена проверка на доступ к материалам (т.е. добавлены операторы db_rewrite_sql для запросов)
Добавлен файл перевода.
автообновление через ahah/ajax есть?
Нет, особо не вижу смысла, да и по какому событию обновлять, если только по таймеру ?
ну да каждые 5 секунд дергать сервер
еще круче - открыть постоянное соединение с сервером и чтобы он сам присылал события
Скажите, Вы планировали выкладывать свои модули в оф репозиторий?
Я могу помоч с этим.
Да у меня с этим тоже проблем нет там два моих модуля уже есть (cctags, ccfilter).
Просто пока данный модуль тестирую, накапливаю так сказать пожелания и "выколупываю" баги
Да и редме надо бы написать.
Намедни выложу.
косяк
http://drupal.ru/node/55578#comment-304558
а как убрать из блока alt описание ответа? а то там только текст выводиться нормально а теги видео все кодами - н екрасиво. вот хочеться убрать эту функцию показа. раз уж нет всплывающего поп окна с оригинальным отображением.
а того, версия для 7-ки будет?
Будет
в шаблоне cclive-block-item.tpl.php (cclive-page-item.tpl.php) построить ссылку из имеющихся переменных так как вам надо (примечание за вывод подсказки отвечает атрибут title сгенерированной ссылки, т.е. вам достаточно в шаблоне убрать (или переопределить) определение атрибута title
<?php
print $cclive_item['comment_user_link'] .
' » (' . $cclive_item['node_type_name'] .
') » <a href="' . $cclive_item['href_comment'] . '" title="" class="ccfilter tooltip">'.$cclive_item['node_title'] . ' (' . $cclive_item['comment_count'] . ')</a>' ;
?>