Комментарии

Модуль относится к части CMS «Интерактив» и может быть установлен опционально.

Модуль «Комментарии» подключается к другим модулям. В стандартной комплектации DIAFAN.CMS «Комментарии» подключены к следующим модулям: Фотогалерея, Новости, Статьи, Вопрос-Ответ, Магазин, Файлы, Страницы сайта, Объявления. В рамках модуля комментарии подключаются в настройках конкретного модуля.

В пользовательской части сайта комментарии добавляются с помощью технологии Ajax, то есть без перезагрузки всей страницы. Комментарии, содержащие слова длиннее 20 символов, не пропускаются.

Подключение

Подключаемая часть – файл modules/comments/comments.inc.php. В нем описан класс Comments_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_comments. Экземпляр класса создается при первом вызове переменной.

Методы

string get ([integer $element_id = 0], [string $module_name = ''], [string $element_type = 'element'], [integer $site_id = 0], [boolean $ajax = false]) – Показывает комментарии, прикрепленные к элементу, и форму добавления комментария.

  • integer $element_id: номер элемента, по умолчанию текущий элемент модуля
  • string $module_name: название модуля, по умолчанию текущий модуль
  • string $element_type: тип данных
  • integer $site_id: страница сайта, к которой прикреплен элемент, по умолчанию текущая страница сайта
  • boolean $ajax: маркер загрузки результатов без перезагрузки страницы

Пример:

// получаем комментарии к новости и форму добавления комментария
// в файле modules/news/news.model.php
$comments = $this->diafan->_comments->get();

// выводим комментарии в шаблоне модуля
// в файле modules/news/views/news.view.id.php
echo $comments; `

count ([integer $element_id = 0], [string $module_name = ''], [string $element_type = 'element'], [integer $site_id = 0]) – Возвращает количество комментариев, прикрепленных к элементу.

  • integer $element_id: номер элемента, по умолчанию текущий элемент модуля
  • string $module_name: название модуля, по умолчанию текущий модуль
  • string $element_type: тип данных
  • integer $site_id: страница сайта, к которой прикреплен элемент, по умолчанию текущая страница сайта

void element (array &$row, array $params_list, integer $element_id, string $module_name, string $element_type, array $params_form, [boolean $hide_form = false]) – Формирует данные об одном комментарие.

  • array $row: массив данных о комментарии
  • array $params_list: дополнительные поля для списка
  • integer $element_id: номер элемента, по умолчанию текущий элемент модуля
  • string $module_name: название модуля, по умолчанию текущий модуль
  • string $element_type: тип данных
  • array $params_form: дополнительные поля для формы
  • boolean $hide_form: скрыть форму ответа на добавленный комментарий

Пример:

// получаем данные о комменарии из базы данных
$row = DB::query_fetch_array("SELECT * FROM {comments} WHWRE id=5");

// получаем поля, которые выводятся для комментария в списке
$params_list = DB::query_fetch_all("SELECT * FROM {comments_param} WHERE show_in_list='1'");

// получаем поля, которые используются в форме добавления комментария
$params_form = DB::query_fetch_all("SELECT * FROM {comments_param} WHERE show_in_form_auth='1' OR show_in_form_no_auth='1'");

// подготавливаем данные для вывода в шаблоне: форматируем данные о комментарии,
// добавлем форму ответа на комментарий
$this->diafan->_comments->element($row, $params_list, $params_form);

array get_param_values (integer $id, array $params) – Получает дополнительные поля комментариев.

  • integer $id: номер комментария
  • array $params: дополнительные поля комментариев

Пример:

// получаем поля, которые выводятся для комментария в списке
$params_list = DB::query_fetch_all("SELECT * FROM {comments_param} WHERE show_in_list='1'");

// получаем значения дополнительных полей для комментария ID=15
$row["params"] = $this->diafan->_comments->get_param_values(15, $params_list);

void prepare_param_values (integer $id) – Запоминает номера комментариев, для которых понядобятся значения доп. полей.

  • integer $id: номер комментария

Пример:

// в этом примере будет выполенено три SQL-запроса к базе данных
// для получения значений дополнительных полей ко всем заданным комментариям
$ids = array(3, 5, 7);
foreach(
$ids as $id)
{
    
$params[$id] = $this->diafan->_comments->get_param_values($id, $params_list);
}

Пример:

// в этом примере будет выполенен один SQL-запроса к базе данных
// для получения значений дополнительных полей ко всем заданным комментариям
$ids = array(3, 5, 7);
foreach(
$ids as $id)
{
    
$this->diafan->_comments->prepare($id);
}
foreach(
$ids as $id)
{
    
$params[$id] = $this->diafan->_comments->get_param_values($id, $params_list);
}

void delete (integer|array $element_ids, string $module_name, [string $element_type = 'element']) – Удаляет комментарий для одного или нескольких элементов.

  • integer|array $element_ids: номер одного или нескольких элементов
  • string $module_name: название модуля
  • string $element_type: тип данных

Пример:

// удалит комментарии к категории новостей ID=3
$this->diafan->_comments->delete(3, 'news', 'cat');

// удалит комментарии к новостям ID=3,4,5
$this->diafan->_comments->delete(array(3, 4, 5) 'news');

void delete_module (string $module_name) – Удаляет все комментарии модуля.

  • string $module_name: название модуля

Пример:

// удалит комментарии ко всем новостям и категориям новостей
$this->diafan->_comments->delete_module('news');

Как добавлять комментарии к модулю

В настройках модуля (modules/модуль/admin/модуль.admin.config.php) и в файле редактирования элементов модуля (modules/модуль/admin/модуль.admin.php) необходимо добавить параметр 'comments':

Пример:

public $variables = array(
    
'main' => array(
        
'comments' => 'module',
        

    
),
    

);

Комментарии

Список комментариев

В административной части модуля все комментарии собираются в одну таблицу и отображаются в порядке поступления. Комментарии можно сортировать по принадлежности к отдельному элементу. Для этого предусмотрены ссылки «Комментарии» в административной части модулей, к которым подключаются комментарии. К примеру, при редактировании фотографии появится ссылка «Комментарии» на комментарии к этой фотографии или надпись «Комментариев нет» при их отсутствии.

При удалении какого-либо элемента, удаляются все комментарии, прикрепленные к нему.

Редактирование комментария

Комментарии имеют следующие характеристики.

Основные:

  • Дата добавления – В формате дд.мм.гггг чч:мм.
  • Пользователь – Пользователь, добавивший комментарий (если комментарий добавлен зарегистрированным пользователем).
  • Комментарий.
  • Дополнительные поля – Поля, добавленные в конструкторе формы.
  • Опубликовать на сайте – Если не отмечена, комментарий не будет виден на сайте.
  • Комментарий к – Объект, к которому прикреплены комментарии, ссылка на все комментарии к этой странице.
  • Вложенность: принадлежит – Комментарий верхнего уровня.

Конструктор формы

Список полей формы

Количество и содержание полей комментариев может быть различно. Это обеспечивает конструктор формы.

Конструктор – это дополнительные поля формы комментариев.

Редактирование поля формы

Дополнительные поля имеют следующие параметры.

Основные:

  • Название – Параметр имеет разные значения для разных языковых версий сайта.
  • Модуль – Возможность ограничить применением поля комментариями, прикрепленными к выбранному модулю.
  • Тип – Возможные значения:
    • строка,
    • число,
    • дата,
    • дата и время,
    • поле с редактором,
    • галочка,
    • переключатель,
    • выпадающий список,
    • список с выбором нескольких значений,
    • электронный ящик,
    • телефон,
    • заголовок группы характеристик,
    • файлы,
    • изображения.
  • Максимальное количество добавляемых файлов – Количество добавляемых файлов. Если значение равно нулю, то форма добавления файлов не выводится. Параметр выводится, если тип характеристики задан как «файлы».
  • Доступные типы файлов (через запятую) – Параметр выводится, если тип характеристики задан как «файлы».
  • Распознавать изображения – Позволяет прикрепленные файлы в формате JPEG, GIF, PNG отображать как изображения. Параметр выводится, если тип характеристики задан как «файлы».
  • Размер для большого изображения – Размер изображения, отображаемый в пользовательской части сайта при увеличении изображения предпросмотра. Параметр выводится, если тип характеристики задан как «файлы» и отмечена опция «Распознавать изображения».
  • Размер для маленького изображения – Размер изображения предпросмотра. Параметр выводится, если тип характеристики задан как «файлы» и отмечена опция «Распознавать изображения».
  • Использовать анимацию при увеличении изображений – Параметр добавляет JavaScript код, позволяющий включить анимацию при увеличении изображений. Параметр выводится, если отмечена опция «Распознавать изображения». Параметр выводится, если тип характеристики задан как «файлы» и отмечена опция «Распознавать изображения».
  • Максимальный размер загружаемых файлов – Параметр показывает максимально допустимый размер загружаемых файлов, установленный в настройках хостинга. Параметр выводится, если тип характеристики задан как «файлы».
  • Генерировать размеры изображений – Размеры изображений, заданные в модуле «Изображения». Параметр выводится, если тип характеристики задан как «изображение».
  • Обязательно для заполнения.
  • Выводить в списке – Выводит значение поля для комментариев на сайте в списке комментариев
  • Выводить в форме для авторизованных пользователей.
  • Выводить в форме для неавторизованных пользователей.
  • Сортировка: установить перед – Редактирование порядка следования поля в форме
  • Описание – Параметр имеет разные значения для разных языковых версий сайта.

Настройки

Настройки

  • Формат даты – Позволяет настроить отображение даты в модуле. Возможные значения:
    • 01.05.2016,
    • 01.05.2016 14:45,
    • 1 мая 2016 г.,
    • 1 мая,
    • 1 мая 2016, понедельник,
    • вчера 15:30,
    • не отображать.
  • Максимальная вложенность – Ограничивает вложенность дерева комментариев.
  • Количество комментариев на странице – Количество комментариев первого уровня, показываемых на одной странице.
  • Включить «Показать ещё» – На странице комментариев появится кнопка «Показать ещё». Увеличивает количество одновременно выводимых комментариев в списке.
  • Отображать имя пользователя, добавившего комментарий – Выводит имя пользователя, добавившего комментарий на сайте
  • Только для зарегистрированных пользователей – Параметр позволяет запретить незарегистрированным пользователям добавлять комментарии.
  • Использовать защитный код (капчу) – Для добавления комментария пользователь должен ввести защитный код.
  • Модерация сообщений – Если отмечена, комментарии будут отображаться на сайте только после того, как администратор вручную установит активность. Если пользователь, добавивший комментарий имеет права администратора модуля, то комментарий появится на сайте сразу.
  • Ваше сообщение уже имеется в базе – Сообщение пользователю при попытке повторного добавления сообщения. Параметр имеет разные значения для разных языковых версий сайта.
  • Спасибо! Ваш комментарий будет проверен в ближайшее время и появится на сайте. – Сообщение пользователю при удачном добавлении комментария. Параметр имеет разные значения для разных языковых версий сайта.
  • Подписываться на новые комментарии – Возможность при комментировании на сайте оставить e-mail, на который будут приходить уведомления о новых комментариях ветки.
  • Тема письма для уведомлений о новых комментариях – Можно добавлять:
    • %title – название сайта,
    • %url – адрес сайта (например, site.ru).
    Параметр имеет разные значения для разных языковых версий сайта. Параметр появляется, если отмечена опция «Подписываться на новые комментарии».

    Пример:

    Новый комментарий на сайте %title (%url)
  • Сообщение для уведомлений о новых комментариях – Можно добавлять:
    • %title – название сайта,
    • %url – адрес сайта (например, site.ru),
    • %message – комментарий,
    • %link – ссылка на страницу на сайте, где комментарий отображается,
    • %actlink – ссылка для отмены подписки.
    Параметр имеет разные значения для разных языковых версий сайта. Параметр появляется, если отмечена опция «Подписываться на новые комментарии».

    Пример:

    Здравствуйте! Вы подписались на комментарии на сайте %title (%url).<br> На странице появился <a href="%link">новый комментарий</a>:<br>%message <br><br> Отписаться можете по <a href="%actlink">ссылке</a>.
  • E-mail, указываемый в обратном адресе пользователю – Возможные значения:
    • e-mail, указанный в параметрах сайта;
    • другой (при выборе этого значения появляется дополнительное поле впишите e-mail).
    Параметр появляется, если отмечена опция «Подписываться на новые комментарии».
  • Уведомлять о поступлении новых комментариев на e-mail – Возможность уведомления администратора о поступлении новых комментариев из формы в пользовательской части сайта.
  • E-mail для уведомлений администратора – Возможные значения:
    • e-mail, указанный в параметрах сайта;
    • другой (при выборе этого значения появляется дополнительное поле впишите e-mail).
    Параметр появляется, если отмечена опция «Уведомлять о поступлении новых комментариев на e-mail».
  • Тема письма для уведомлений – Можно добавлять:
    • %title – название сайта,
    • %url – адрес сайта (например, site.ru).
    Параметр появляется, если отмечена опция «Уведомлять о поступлении новых комментариев на e-mail».

    Пример:

    %title (%url). Новый комментарий
  • Сообщение для уведомлений – Можно добавлять:
    • %title – название сайта,
    • %url – адрес сайта (например, site.ru),
    • %message – комментарий,
    • %urlpage – ссылка на страницу на сайте, где комментарий отображается.
    Параметр появляется, если отмечена опция «Уведомлять о поступлении новых комментариев на e-mail».

    Пример:

    Здравствуйте, администратор сайта %title (%url)!<br>На странице %urlpage появился новый комментарий:<br>%message.
  • Уведомлять о поступлении новых комментариев на телефон – Возможность отправлять сообщения на телефон администратору при поступлении комментария. Параметр можно подключить, если в Параметрах сайта настроены уведомления.
  • Номер телефона в федеральном формате – Номер телефона для уведомлений администратора о новом комментарии. Параметр появляется, если отмечена опция «Уведомлять о поступлении новых комментариев на телефон».
  • Сообщение для уведомлений – Текст сообщения для уведомлений администратора о новом комментарии. Не более 800 символов. Параметр появляется, если отмечена опция «Уведомлять о поступлении новых комментариев на телефон».

Шаблонные теги

Для работы с модулем «Комментарии» служат следующие шаблонные теги:

show_block – выводит последние комментарии.

Атрибуты:

count – количество выводимых комментариев (по умолчанию 3);

modules – модули (разделенные запятой), к которым подключены комментарии;

element_id – идентификаторы элементов модулей (разделенные запятой), к которым подключены комментарии;

element_type – тип данных (element – элемент (по умолчанию), cat – категория);

sort – сортировка комментариев: date – по дате (по умолчанию), rand – в случайном порядке;

defer – маркер отложенной загрузки шаблонного тега: event – загрузка контента только по желанию пользователя при нажатии кнопки "Загрузить", emergence – загрузка контента только при появлении в окне браузера клиента, async – асинхронная (одновременная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, sync – синхронная (последовательная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, по умолчанию отложенная загрузка не используется, обычный вывод шаблонных тегов в коде страницы;

defer_title – текстовая строка, выводимая на месте появления загружаемого контента с помощью отложенной загрузки шаблонного тега;

template – шаблон тега (файл modules/comments/views/comments.view.show_block_template.php; по умолчанию шаблон modules/comments/views/comments.view.show_block.php).

Пример:

<insert name="show_block" module="comments" modules="shop" count="2">

выведет 2 последних комментария к товарам

В шаблоне тега можно получить значение любого атрибута через переменную $result["attributes"]["название атрибута"].

База данных

{comments} – Комментарии

{comments_mail} – Подписка пользователей на новые комментарии

{comments_param} – Дополнительные поля комментариев

{comments_param_element} – Значения дополнительных полей комментариев

{comments_param_select} – Варианты значения дополнительных полей комментариев с типом список

{comments_parents} – Родительские связи комментариев

Файлы

  1. modules/comments/admin/comments.admin.php – редактирование комментариев;

  2. modules/comments/admin/comments.admin.config.php – настройки модуля;

  3. modules/comments/admin/comments.admin.count.php – количество непроверенных коммментариев, если подключено модерирование комментариев, для меню административной панели;

  4. modules/comments/admin/comments.admin.dashboard.php – комментарии для событий;

  5. modules/comments/admin/comments.admin.inc.php – подключение модуля к административной части других модулей;

  6. modules/comments/admin/comments.admin.param.php – конструктор комментариев;

  7. modules/comments/admin/js/comments.admin.inc.config.js – поле "Комментарии", JS-сценарий;

  8. modules/comments/admin/js/comments.admin.param.js – конструктор комментариев, JS-сценарий;

  9. modules/comments/comments.php – контроллер;

  10. modules/comments/comments.action.php – обработка запроса при добавления комментария;

  11. modules/comments/comments.inc.php – подключение модуля;

  12. modules/comments/comments.install.php – установка модуля;

  13. modules/comments/comments.model.php – модель;

  14. modules/comments/comments.rss.php – RSS лента комментариев;

  15. modules/comments/js/comments.get.js – JS-сценарий модуля;

  16. modules/comments/views/comments.view.form.php – шаблон формы добавления комментария;

  17. modules/comments/views/comments.view.get.php – шаблон вывода комментариев;

  18. modules/comments/views/comments.view.id.php – шаблон одного комментария;

  19. modules/comments/views/comments.view.images.php – шаблон прикрепленных к комментарию изображения, выводимых в форме добавления комментария;

  20. modules/comments/views/comments.view.list.php – шаблон списка комментариев;

  21. modules/comments/views/comments.view.rows_block.php – шаблон блока комментариев;

  22. modules/comments/views/comments.view.show_block.php – шаблон блока комментариев;

  23. modules/comments/views/comments.view.show_block_main.php – шаблон блока комментариев.

Ваши комментарии и дополнения

Ваш комментарий будет первым.

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.