[Plugin] Comlist
Главная / Форумы / Форумы сообщества / Расширения / [Plugin] ComlistПлагин вывода комментариев через функцию по условиям (аргументам)
| Автор | Сообщение |
|---|---|
|
admin
Администратор |
[Plugin] Comlist
К вопросу о реализации вывода в зависимости от группы пользователя. Как это можно сделатьПрежде всего, структура таблицы cot_com: /* Comments schema */ -- Main comments table CREATE TABLE IF NOT EXISTS `cot_com` ( `com_id` int UNSIGNED NOT NULL auto_increment, `com_code` varchar(255) NOT NULL, `com_area` varchar(64) NOT NULL, `com_author` varchar(100) NOT NULL DEFAULT '', `com_authorid` int UNSIGNED NOT NULL, `com_authorip` varchar(64) NOT NULL DEFAULT '', `com_text` text NOT NULL, `com_date` int UNSIGNED NOT NULL DEFAULT '0', `com_count` mediumint UNSIGNED NOT NULL DEFAULT '0', -- Not using anywhere `com_isspecial` tinyint UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`com_id`), KEY (`com_area`, `com_code`) ); Как видим, привязка к объекту идет через условную зону (com_area) и код / ID объекта (com_code). Это означает, что для страницы, например, это может, например, быть page и 20 соответственно, т. е. страница с ID 20. Даже привязка к разделу не предусматривается (я этот вопрос обсуждал с Алексом, но решили что это излишняя информация). И не забываем о том, что комментарии могут привязываться не только к страницам, но и к разделам и любым другим объектам. Также не забываем и то, что групп у пользователя может быть несколько. И права доступа в Cotonti реализуются не на уровне конечных объектов (страниц), а на уровне разделов, в которых они размещаются. Вывод следующий: для того, чтобы реализовать возможность выводить комментарии в зависимости от группы пользователя, необходимом через хук Надо ли это делать?При большом желании можно натянуть сову на глобус. Вопрос лишь в том, стоит ли оно того. Комментарии в данном случае (или для данной задачи) не самый лучший функционал. Логичнее было бы воспользоваться форумами и ограничивать доступ на уровне веток. В любом случае, указание группы пользователя – не лучший вариант. Скорее в расширении необходимо реализовывать функционал, ограничивающий любому пользователю доступ к любой выводимой информации в соответствии с его правами в системе. А это, к слову, сразу же убьет возможность кэширования. В данном конкретном случае проще будет все же использовать логику в шаблоне типа:
<!-- IF {PHP.usr.maingrp} == 1 -->
...
<!-- ENDIF -->
<!-- IF {PHP.usr.maingrp} == 2 -->
...
<!-- ENDIF -->
И добавить функционал по использованию черного и белого списка, поскольку уже понятно в чем необходимо ограничивать пользователей. Если не хочется все это конструировать в шаблоне, можно выводить переменную или даже TPL-тег, который будет сформирован по той же логике, но уже через PHP-код из проектного плагина. |
| Поблагодарили: 1 |