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

Главные вкладки

Аватар пользователя olk olk 24 мая 2010 в 16:55

cclive
Пока только для тестирования.
Новый модуль реализует показ блока и страницы так называемого "Прямого эфира", т.е. показывает информацию по самым последним изменениям при комментировании материалов.
Отличается от аналогичных модулей широкими возможностями по темизации вывода.
Т.е. вы можете настроить вывод (через шаблоны 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'] - количество опубликованных комментариев в ноде

<?php
// $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>

так же доступна для переопределения функция темизации

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'] .
' » (' . $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>

Ну и небольшая функция для темизации ссылки на страницу из блока

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 будет чуть позже.
После всестороннего тестирования выложу на org

ВложениеРазмер
Иконка пакета cclive.zip6.42 КБ

Комментарии

Аватар пользователя olk olk 24 мая 2010 в 19:28

"worona" wrote:
А можно как-нибудь убрать - Гость (не проверено)

Ну это вопрос больше не к модулю а темизации, у меня например в файле template.php переопределена следующая функция
(hotel_fix в имени функции надо заменить на наименование вашей темы)

function hotel_fix_username($object) {
  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;
}

Аватар пользователя Sky Cat Sky Cat 6 июня 2010 в 2:09

Скажите пожалуйста, а вы планируете в следующих версиях выводить комментарии пользователей в его профиле? Насколько я понял из описания, этого пока нет. Просто вот думаю, подождать ваш модуль или сниппет ставить.

Аватар пользователя olk olk 10 ноября 2015 в 11:46

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

Аватар пользователя olk olk 25 августа 2010 в 16:26

"orangeudav" wrote:
автообновление через ahah/ajax есть?

Нет, особо не вижу смысла, да и по какому событию обновлять, если только по таймеру ?

Аватар пользователя orangeudav orangeudav 25 августа 2010 в 16:51

ну да каждые 5 секунд дергать сервер
еще круче - открыть постоянное соединение с сервером и чтобы он сам присылал события

Аватар пользователя olk olk 26 августа 2010 в 12:25

"seaji" wrote:
Скажите, Вы планировали выкладывать свои модули в оф репозиторий?
Я могу помоч с этим.

Да у меня с этим тоже проблем нет Smile там два моих модуля уже есть (cctags, ccfilter).
Просто пока данный модуль тестирую, накапливаю так сказать пожелания и "выколупываю" баги Smile
Да и редме надо бы написать.
Намедни выложу.

Аватар пользователя iNFerNo iNFerNo 27 марта 2011 в 12:29

а как убрать из блока alt описание ответа? а то там только текст выводиться нормально а теги видео все кодами - н екрасиво. вот хочеться убрать эту функцию показа. раз уж нет всплывающего поп окна с оригинальным отображением.

Аватар пользователя olk olk 28 марта 2011 в 20:34

"Valeratal" wrote:
а того, версия для 7-ки будет?

Будет
"iNFerNo" wrote:

а как убрать из блока alt описание ответа? а то там только текст выводиться нормально а теги видео все кодами - н екрасиво. вот хочеться убрать эту функцию показа. раз уж нет всплывающего поп окна с оригинальным отображением.

в шаблоне cclive-block-item.tpl.php (cclive-page-item.tpl.php) построить ссылку из имеющихся переменных так как вам надо (примечание за вывод подсказки отвечает атрибут title сгенерированной ссылки, т.е. вам достаточно в шаблоне убрать (или переопределить) определение атрибута title


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