Комментарии
- Подключение
- Как добавлять комментарии к модулю
- Комментарии
- Конструктор формы
- Настройки
- Шаблонные теги
- База данных
- Файлы
Модуль относится к части 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',
…
),
…
);
Комментарии
В административной части модуля все комментарии собираются в одну таблицу и отображаются в порядке поступления. Комментарии можно сортировать по принадлежности к отдельному элементу. Для этого предусмотрены ссылки «Комментарии» в административной части модулей, к которым подключаются комментарии. К примеру, при редактировании фотографии появится ссылка «Комментарии» на комментарии к этой фотографии или надпись «Комментариев нет» при их отсутствии.
При удалении какого-либо элемента, удаляются все комментарии, прикрепленные к нему.
Комментарии имеют следующие характеристики.
Конструктор формы
Количество и содержание полей комментариев может быть различно. Это обеспечивает конструктор формы.
Конструктор – это дополнительные поля формы комментариев.
Дополнительные поля имеют следующие параметры.
Настройки
Шаблонные теги
Для работы с модулем «Комментарии» служат следующие шаблонные теги:
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} – Родительские связи комментариев
Файлы
modules/comments/admin/comments.admin.php – редактирование комментариев;
modules/comments/admin/comments.admin.config.php – настройки модуля;
modules/comments/admin/comments.admin.count.php – количество непроверенных коммментариев, если подключено модерирование комментариев, для меню административной панели;
modules/comments/admin/comments.admin.dashboard.php – комментарии для событий;
modules/comments/admin/comments.admin.inc.php – подключение модуля к административной части других модулей;
modules/comments/admin/comments.admin.param.php – конструктор комментариев;
modules/comments/admin/js/comments.admin.inc.config.js – поле "Комментарии", JS-сценарий;
modules/comments/admin/js/comments.admin.param.js – конструктор комментариев, JS-сценарий;
modules/comments/comments.php – контроллер;
modules/comments/comments.action.php – обработка запроса при добавления комментария;
modules/comments/comments.inc.php – подключение модуля;
modules/comments/comments.install.php – установка модуля;
modules/comments/comments.model.php – модель;
modules/comments/comments.rss.php – RSS лента комментариев;
modules/comments/js/comments.get.js – JS-сценарий модуля;
modules/comments/views/comments.view.form.php – шаблон формы добавления комментария;
modules/comments/views/comments.view.get.php – шаблон вывода комментариев;
modules/comments/views/comments.view.id.php – шаблон одного комментария;
modules/comments/views/comments.view.images.php – шаблон прикрепленных к комментарию изображения, выводимых в форме добавления комментария;
modules/comments/views/comments.view.list.php – шаблон списка комментариев;
modules/comments/views/comments.view.rows_block.php – шаблон блока комментариев;
modules/comments/views/comments.view.show_block.php – шаблон блока комментариев;
modules/comments/views/comments.view.show_block_main.php – шаблон блока комментариев.
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
Ваш комментарий будет первым.