<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Класс комментариев - LabCMS</title>
    <link>https://labcms.ru/discussion-theme.62/</link>
    <atom:link href="https://labcms.ru/discussion-theme.62.xml" rel="self" type="application/rss+xml"/>
    <description>Тема в форуме LabCMS</description>
    <language>ru-ru</language>
    <pubDate>Fri, 12 Jun 2026 10:39:49 +0300</pubDate>
    <lastBuildDate>Fri, 12 Jun 2026 10:39:49 +0300</lastBuildDate>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>LabCMS Feeder</generator>
    <item>
      <title>jen</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p539</link>
      <description><![CDATA[Да-а… Ну я и м***!!!<br />
Что стоило отметить чекбокс, ведь смотрел на него десять раз! А главное, что первоначально у меня все сразу заработало, значит все сделал правильно. А потом провал в сознании <img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley_confuse.png" alt="">
<br />&#160;<br />
Спасибо, Loki!]]></description>
      <pubDate>Mon, 15 Aug 2011 01:37:57 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p539</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p538</link>
      <description><![CDATA[На самом деле тут штука вот в чем:<br />
для суперадмина нет настройки прав, так как в этом нет смысла: в независимости от выставленных прав, ему будет все позволяться. Вы спросите для чего же он тогда вообще присутствует в настройках? А присутствует он потому, что кроме раздачи прав есть еще и раздача настроек. По умолчанию, настройки раздаются только группе незарегистрированных пользователей и от них наследуются всеми остальными. Если же требуется чтобы у каждой группы были свои настройки, то эта опция включается в настройках сайта, после чего появляются дополнительные элементы в настройках групп.<br />
В общем, Вы напрасно искали настройки модулей в настройках групп - они находятся в соседней закладке настроек сайта.<br />
А я постараюсь подумать как спрятать лишнее из групп<img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley.png" alt="">&#160;&#160;]]></description>
      <pubDate>Mon, 15 Aug 2011 00:55:37 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p538</guid>
    </item>
    <item>
      <title>jen</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p537</link>
      <description><![CDATA[Здравствуйте, Loki! После перерыва вернулся к LabCMS и сразу уперся в проблему: не активировались комментарии. Когда Вы выложили версию с классом комментариев, сразу попробовал и все работало (3.4.733 -&gt; 3.5.750). У меня 2 хоста с LabCMS: рабочий и эталонный. Рабочий я обновляю, а эталонный сношу и устанавливаю заново с каждой версией. Так вот рабочий, с действующими комментами, нормально обновился (3.5.750 -&gt; 3.6.752), а на чистой установке (3.6.752) они не появились.<br />
А в каком, собственно, поле отмечал чекбокс комментариев, забыл по прошествии времени. Короче, на второй день поисков догадался проверить формы с Firebug, и когда отключитл стили, чекбоксы нашлись.
<br />&#160;<br />
Скриншоты <strong class="bb"><a class="bb" href="http://www.dropbox.com/gallery/21872445/1/lab_groups?h=8a9f3b">здесь</a></strong>
<br />&#160;<br />
То есть, при обновлении функция комментирования сохраняется, а интерфейс меняется.<br />
При чистой установке комменты по умолчанию отключены, а добраться до них нельзя.
<br />&#160;<br />
Или это не ошибка, а такой фильтр для юзеров, пока версия не зарелизена? <img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley_lol.png" alt="">
<br />&#160;<br />
Пока искал концы, поставил LabCMS под Win 7, там то же самое.]]></description>
      <pubDate>Sat, 13 Aug 2011 18:52:51 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p537</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p483</link>
      <description><![CDATA[Для незарегистрированных выглядит так:<br />
Smarty&lt;form action=&quot;{url action=&quot;comment_add&quot; var1=$comments.add_id}&quot; method=&quot;post&quot;&gt;<br />
&#160; &#160; &#160; &#160; &lt;input type=&quot;hidden&quot; value=&quot;{$_user-&gt;token}&quot; name=&quot;token&quot; /&gt;<br />
&#160; &#160; &#160; &#160; Имя<br />
&#160; &#160; &#160; &#160; &lt;input type=&quot;text&quot; class=&quot;catch&quot; value=&quot;&quot; name=&quot;login&quot;&gt;<br />
&#160; &#160; &#160; &#160; &lt;input type=&quot;text&quot; name=&quot;{$core_config.catcher}&quot;&gt;<br />
&#160; &#160; &#160; &#160; Email<br />
&#160; &#160; &#160; &#160; &lt;input type=&quot;text&quot; name=&quot;email&quot;&gt;<br />
&#160; &#160; &#160; &#160; Комментарий<br />
&#160; &#160; &#160; &#160; &lt;textarea name=&quot;text&quot;&gt;&lt;/textarea&gt;<br />
&#160; &#160; &#160; &#160; &lt;input type=&quot;submit&quot;&quot; value=&quot;Сохранить&quot;&gt;<br />
&lt;/form&gt;<br />
тут поле<br />
Smarty&lt;input type=&quot;text&quot; class=&quot;catch&quot; value=&quot;&quot; name=&quot;login&quot;&gt;<br />
является скрытым и служит для отлова роботов. Настоящий же логин вводится в поле<br />
Smarty&lt;input type=&quot;text&quot; name=&quot;{$core_config.catcher}&quot;&gt;
<br />&#160;<br />
Структура нарушилась в результате неудачной попытки добавления комментария.<br />
Про устройство nested sets можно почитать <a class="bb" href="http://www.getinfo.ru/article610.html">тут</a>.<br />
Если разбираться нет желания и важных комментариев нет, можно просто очистить таблицы _comments и _comments_item]]></description>
      <pubDate>Tue, 02 Aug 2011 16:56:03 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p483</guid>
    </item>
    <item>
      <title>mushtat</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p479</link>
      <description><![CDATA[тут же всплывает еще пара вопросов:<br />
-как должна выглядеть форма для незарегистрированного пользователя?<br />
-где и каким образом я могу с ней разобраться, со структурой? <img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley_evil.png" alt=""> что и в какую сторону исправлять? Почистить не вопрос, но нужно ведь разобраться. Так и не понял, почему она нарушилась... ]]></description>
      <pubDate>Tue, 02 Aug 2011 14:49:19 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p479</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p477</link>
      <description><![CDATA[Форма комментариев на странице должна выглядеть примерно так:<br />
Smarty&lt;form action=&quot;{url action=&quot;comment_add&quot; var1=$comments.add_id}&quot; method=&quot;post&quot;&gt;<br />
&lt;input type=&quot;hidden&quot; value=&quot;{$_user-&gt;token}&quot; name=&quot;token&quot; /&gt;<br />
Комментарий&lt;textarea name=&quot;text&quot;&gt;&lt;/textarea&gt;<br />
&lt;input type=&quot;submit&quot; value=&quot;Сохранить&quot;/&gt;<br />
&lt;/form&gt;<br />
это для авторизованного пользователя.
<br />&#160;<br />
Сообщение выдается только админу и выдается тогда, когда действительно нарушена структура комментариев. Структура nested sets в этом плане более уязвима чем adjacency list. Так что придется Вам либо разобраться с ней и исправить ключи руками, либо почистить таблицы с комментариями, чтобы они создавались заново.]]></description>
      <pubDate>Tue, 02 Aug 2011 09:33:44 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p477</guid>
    </item>
    <item>
      <title>mushtat</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p476</link>
      <description><![CDATA[Здравстуйте! Прошу, пожалуйста, обьяснить, как встроить форму добавления коментариев прямо на страницу комментария, а не на отдельную, как это сделано сейчас. Тыкался всю ночь, но не разобрался.<br />
UPD: Чего-то наделал, после ошибки пишет вот такое - <strong class="bb">Нарушена структура комментариев. Максимальный ключ равен 8 и не равен 2</strong> Ну тем не менее страница показывается. Что я делал - указал в свойствах дива смарти-условие<br />
<strong class="bb">&lt;div class="commentsection" {if $comments.counter eq 0} style=\visibility:hidden;\{/if} &gt;</strong>. Это, как Вы понимаете, скрывает див с коментами если коментов ноль (поставить условие {if $comments} в шаблоне не позволяет структура). И пишет такую надпись. Но на странице с опубликованным коментарием её нету. При удалении моего условия напись с ошибкой сохраняется. Что мне делать? Сайт <a class="bb" href="http://www.mushtat.ru/">тот же</a>, всё видно своими глазами ).]]></description>
      <pubDate>Tue, 02 Aug 2011 05:45:37 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p476</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p450</link>
      <description><![CDATA[Ну вот, класс переместился в trunk, так что теперь доступен даже тем, кто совсем не дружен с svn<img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley.png" alt="">]]></description>
      <pubDate>Wed, 20 Jul 2011 11:38:06 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p450</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p438</link>
      <description><![CDATA[<blockquote class="bb bb_quote">mushtat:<strong class="bb">Loki</strong>, вроде нужно будет ещё антиспам реализовать? В релизе комментарии будут только у новостей или это с возможностью подключения к иным модулям? (Ведь Вы писали об универсальности).</blockquote><br />
Уже сделал. Я и сам собираюсь комментарии использовать, так что засилие роботов на сайте мне совсем не улыбается<img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley.png" alt="">
<br />&#160;<br />
Под релизом я в данном случае имел ввиду объединение с рабочей веткой. До стабильного релиза еще много что хотелось бы сделать.
<br />&#160;<br />
Из модулей, как мне кажется, стоило бы интегрировать комментарии с модулем новостей, модулем статичных страниц (причем, чтобы еще можно было включать/выключать комментарии для отдельных страниц) и фотоальбомом.
<br />&#160;<br />
Еще бы, наверное, было интересно сделать комментарии к <a class="bb" href="https://labcms.ru/discussion-theme.58/1/">результатам голосования</a>, но Дмитрий куда-то пропал. Наверное, в отпуске.<br />
]]></description>
      <pubDate>Wed, 13 Jul 2011 19:53:03 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p438</guid>
    </item>
    <item>
      <title>mushtat</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p437</link>
      <description><![CDATA[<blockquote class="bb bb_quote">Если никаких косяков не вылезет, то можно документировать, оформлять и релизить.</blockquote><br />
<strong class="bb">Loki</strong>, вроде нужно будет ещё антиспам реализовать? В релизе комментарии будут только у новостей или это с возможностью подключения к иным модулям? (Ведь Вы писали об универсальности).]]></description>
      <pubDate>Wed, 13 Jul 2011 17:47:35 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p437</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p436</link>
      <description><![CDATA[<blockquote class="bb bb_quote">Defari:<br />
1. Добавил для зарег. пользователей право пожаловаться на спам, но иконки нет.<br />
2. Удалил ветку комментариев, счетчик показывает старое к-во сообщений. </blockquote><br />
Спасибо. Поправил - вечером обновлю.
<br />&#160;<br />
Еще добавил модерацию, премодерацию и подсветку сообщений (в общем, все то, что планировал). Если никаких косяков не вылезет, то можно документировать, оформлять и релизить.]]></description>
      <pubDate>Wed, 13 Jul 2011 16:26:27 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p436</guid>
    </item>
    <item>
      <title>Defari</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p435</link>
      <description><![CDATA[Все, разобрался. Не посмотрел в настройках...<br />
Сейчас потестим <img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley.png" alt="">
<br />&#160;<br />
Update:<br />
Посмотрел. Всё работает славно<img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley.png" alt=""><br />
Что сейчас замечено:<br />
1. Добавил для зарег. пользователей право пожаловаться на спам, но иконки нет.<br />
2. Удалил ветку комментариев, счетчик показывает старое к-во сообщений. <br />
Сегодня вечером посмотрю подробнее.]]></description>
      <pubDate>Wed, 13 Jul 2011 14:19:59 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p435</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p434</link>
      <description><![CDATA[<blockquote class="bb bb_quote">Defari:Почему-то нет ссылки для добавления комментария к новости, зашел админом.</blockquote><br />
А в настройках модуля комментарии включили?]]></description>
      <pubDate>Wed, 13 Jul 2011 14:08:38 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p434</guid>
    </item>
    <item>
      <title>Defari</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p433</link>
      <description><![CDATA[Почему-то нет ссылки для добавления комментария к новости, зашел админом.]]></description>
      <pubDate>Wed, 13 Jul 2011 13:43:22 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p433</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p431</link>
      <description><![CDATA[Выложил версию с новой версией смарти и комментариями в отдельную ветку<br />
<a rel="nofollow" href="svn://labcms.ru/repos/flex/branches/smrty_3.1+comments">svn://labcms.ru/repos/flex/branches/smrty_3.1+comments</a><br />
Пока что комментарии подключены только к модулю новостей... Да и вообще это еще черновик. Номер версии не обновлял, так что обновления БД не произойдет. Необходимо либо установить заново, либо создать недостающие таблицы ?_comments и ?_comments_items (структура в файле kernel/install/kernel.sql).
<br />&#160;<br />
Что сделано:<br />
- древовидные комментарии к каждой новости<br />
- счетчик комментариев для каждой новости (скрытые новости считает как существующие)<br />
- добавление/редактирование/удаление<br />
- модерирование<br />
- администрирование<br />
- жалобы на спам
<br />&#160;<br />
Жалобы на комментарии оставлять можно, но интерфейса модерации еще нет<img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley.png" alt=""><br />
Так же пока не работает премодерация, ну и какой-никакой антиспам нужен.<br />
Так же нужно будет в дизайне предусмотреть подсветку удаленных сообщений для администратора.
<br />&#160;<br />
В модуле новостей изменения внесены в трех местах: в index.php подключено управление коментариями, в show.php - вывод комментариев к новости, в news.php - к новостям добавлены счетчики комментариев. Естественно присутствуют правки config.xml и шаблонов. В остальном комментарии вполне автономны.
<br />&#160;<br />
Пробуйте, высказывайтесь.<br />
Будем допиливать постепенно.]]></description>
      <pubDate>Tue, 12 Jul 2011 23:13:17 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p431</guid>
    </item>
    <item>
      <title>Defari</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p430</link>
      <description><![CDATA[<blockquote class="bb bb_quote">Loki:<br />
Или это будет недостаточно гибко? <br />
</blockquote><br />
Скорее всего проще будет, если ввести понятие модератора и администратора, и за ними четко закрепить права. <br />
Согласен, что не так гибко, но зато четкая логика и порядок.]]></description>
      <pubDate>Tue, 12 Jul 2011 11:38:30 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p430</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p429</link>
      <description><![CDATA[Какие нужны права?<br />
Сейчас я сделал такие:<br />
1. добавление комментария<br />
2. редактирование собственного комментария<br />
3. удаление собственного комментария<br />
4. возможность пожаловаться на комментарий<br />
5. публикация премодерируемого комментария<br />
6. редактирование чужого комментария<br />
7. удаление чужого комментария (сокрытие)<br />
8. восстановление удаленного комментария<br />
9. удаление ветви комментариев
<br />&#160;<br />
Не слишком ли я размахался? Возможно, просто стоит ввести понятие модератора и администратора. За модератором закрепить права 5 и 7 (6 - под вопросом), а за администратором - все остальное.<br />
Или это будет недостаточно гибко? ]]></description>
      <pubDate>Mon, 11 Jul 2011 17:48:00 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p429</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p427</link>
      <description><![CDATA[<blockquote class="bb bb_quote">Defari:Как планируете организовать модерацию?</blockquote><br />
Не очень понял вопрос, поэтому просто расскажу что у меня получается сейчас:<br />
будет два класса. Один занимается только работой с комментариями и их структурой (добавление, изменение, выборка и пр). Он ничего не знает ни о политике прав, ни о группах ни о чем другом. Просто проверяет корректность входных данных.<br />
Второй класс отвечает за взаимодействие с пользователем, построение форм, проверка прав и пр. Его можно просто подключить к своему модулю, получив стандартные комментарии. Или можно от него создать наследника с какими-нибудь экзотическими возможностями. В базе планируется что он будет уметь реализовывать взаимодействие со всеми функциями первого класса традиционным образом или через аякс (json).]]></description>
      <pubDate>Sun, 10 Jul 2011 19:05:54 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p427</guid>
    </item>
    <item>
      <title>Defari</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p426</link>
      <description><![CDATA[<blockquote class="bb bb_quote">Loki:Ну тут больше речь не об возможностях управления через интерфейс, а об удобном инструменте для разработчиков, быстро интегрировать комментарии в свои модули. На месте разработчика модуля я бы все равно сделал настройку для включения/выключения комментариев. Вполне возможно что он захочет реализовать какие-нибудь хитрые правила комментирования, возможность исправления комментариев и т.п.<br />
</blockquote><br />
Полностью с Вами согласен.<br />
<blockquote class="bb bb_quote">Loki:<br />
С пунктом 3 я пока не знаю что делать. Теоретически, эта уязвимость позволяет просматривать подзамочные комментарии. Так что либо не выводить текст комментария на который отвечают, либо придумывать какое-то решение.<br />
</blockquote><br />
Скорее всего этот вопрос можно будет решить в дальнейшем. Пока сложно подкинуть какую либо идею, прежде чем увидеть в действии.
<br />&#160;<br />
Как планируете организовать модерацию?]]></description>
      <pubDate>Sat, 09 Jul 2011 14:02:31 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p426</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p424</link>
      <description><![CDATA[Ну тут больше речь не об возможностях управления через интерфейс, а об удобном инструменте для разработчиков, быстро интегрировать комментарии в свои модули. На месте разработчика модуля я бы все равно сделал настройку для включения/выключения комментариев. Вполне возможно что он захочет реализовать какие-нибудь хитрые правила комментирования, возможность исправления комментариев и т.п.
<br />&#160;<br />
С пунктом 3 я пока не знаю что делать. Теоретически, эта уязвимость позволяет просматривать подзамочные комментарии. Так что либо не выводить текст комментария на который отвечают, либо придумывать какое-то решение.]]></description>
      <pubDate>Fri, 08 Jul 2011 12:43:33 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p424</guid>
    </item>
    <item>
      <title>Defari</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p423</link>
      <description><![CDATA[Значит через саму админку ничего подключать не придется? <br />
Интересно насчет пункта № 3, потому что в сложных модулях навернека есть распределение прав.]]></description>
      <pubDate>Fri, 08 Jul 2011 11:58:53 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p423</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p422</link>
      <description><![CDATA[На самом деле, полностью обкатанной схемы пока нет (собственно, и класс пока не закончен), но предварительно мне это представляется как-то так:<br />
В начале файла index.php модуля подключается обработчик для работы с комментариями. Он проверяет не относится ли переданная переменная action&#160;&#160;к его компетенции, если относится&#160;&#160;- берет управление на себя, если нет - снова передает его модулю. Брать на себя управление он будет при любых операциях связанных с комментариями, кроме отображения комментариев - этим должен будет заниматься сам модуль. Вроде бы получается все достаточно просто и логично. Из неочевидного следующее:
<br />&#160;<br />
1. Настройки и права на комментарии. Автор модуля должен будет их добавить в config.xml. Это не проблема, так как он все равно будет править модуль, но если они будут изменяться и дополняться - он должен это отслеживать.
<br />&#160;<br />
2. Непонятно где хранить шаблон для форм (и нужен ли он вообще). В принципе, форму можно генерить прямо в переменную, но тогда из простой кастомизации ее останется только css.
<br />&#160;<br />
3. Нельзя будет сделать внутри модуля закрытых публикаций. То есть если одна публикация видна всем пользователям, а другая - только отдельной группе, то закрытую публикацию смогут комментировать все, так как класс комментариев не имеет ни малейшего представления о разграничении прав внутри модуля. Правда, для того чтобы оставить такой комментарий надо будет знать (или подобрать) id одного из комментариев к закрытой публикации.]]></description>
      <pubDate>Thu, 07 Jul 2011 15:45:01 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p422</guid>
    </item>
    <item>
      <title>Defari</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p421</link>
      <description><![CDATA[Понятно. А как будет выглядеть интеграция этого модуля с самодельными модулями?]]></description>
      <pubDate>Thu, 07 Jul 2011 14:48:09 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p421</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p419</link>
      <description><![CDATA[Пока что таблицы выглядят так:
<br />&#160;<br />
MySQLCREATE TABLE IF NOT EXISTS ?_comments &#40;<br />
&#160; `comment_id` int&#40;11&#41; NOT NULL auto_increment,<br />
&#160; `item_id` int&#40;11&#41; NOT NULL,<br />
&#160; `text` text,<br />
&#160; `text_html` text,<br />
&#160; `putdate` datetime NOT NULL default '0000-00-00 00:00:00',<br />
&#160; `updated` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,<br />
&#160; `user_id` int&#40;11&#41; default NULL,<br />
&#160; `login` varchar&#40;50&#41; default NULL,<br />
&#160; `email` varchar&#40;50&#41; default NULL,<br />
&#160; `status` tinyint&#40;1&#41; NOT NULL,<br />
&#160; `level` tinyint&#40;1&#41; NOT NULL default '0',<br />
&#160; `left_key` int&#40;11&#41; NOT NULL,<br />
&#160; `right_key` int&#40;11&#41; NOT NULL,<br />
&#160; `moderate` varchar&#40;255&#41; default NULL,<br />
&#160; PRIMARY KEY &#160;&#40;`comment_id`&#41;<br />
&#41; ENGINE=MyISAM &#160;DEFAULT CHARSET=utf8;
<br />&#160;<br />
CREATE TABLE IF NOT EXISTS ?_comments_items &#40;<br />
&#160; `item_id` int&#40;11&#41; NOT NULL auto_increment,<br />
&#160; `item_key` char&#40;20&#41; NOT NULL,<br />
&#160; `url` char&#40;100&#41; NOT NULL,<br />
&#160; `module_id` int&#40;11&#41; NOT NULL,<br />
&#160; PRIMARY KEY &#160;&#40;`item_id`&#41;,<br />
&#160; UNIQUE KEY `module_id` &#40;`module_id`,`item_key`&#41;<br />
&#41; ENGINE=MyISAM &#160;DEFAULT CHARSET=utf8;
<br />&#160;<br />
right_key, right_key и level - ключи необходимые для построения структуры nested sets. Обо всем остальном я написал выше.]]></description>
      <pubDate>Thu, 07 Jul 2011 09:20:18 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p419</guid>
    </item>
    <item>
      <title>Defari</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p418</link>
      <description><![CDATA[Каким образом Вы планируете организовать структуру таблицы mysql? Я так понял что ключи в массивах и будут основными полями таблицы в бд? ]]></description>
      <pubDate>Thu, 07 Jul 2011 00:58:57 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p418</guid>
    </item>
    <item>
      <title>Loki</title>
      <link>https://labcms.ru/discussion-theme.62/1/#p416</link>
      <description><![CDATA[Начал проектировать класс для работы с комментариями. Пришлось немного поломать голову, чтобы он сравнительно легко интегрировался с модулями<img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley.png" alt=""><br />
Но, в общем, постепенно начинает вырисовываться.<br />
Для хранения комментариев принято решение использовать структуру nested sets. Она позволяет избежать рекурсии и вообще построить дерево одним запросом. Правда, у нее есть и свои ограничения. Например, она не позволяет строить лес (то есть несколько деревьев сразу). Чтобы обойти это ограничение, пришлось ввести суррогатный пустой комментарий. Но в общем-то это даже не плохо - теперь комментарии почти не имеют жесткой связи с модулями.
<br />&#160;<br />
Попробую немного описать как это работает. Вопросы и комментарии приветствуются.
<br />&#160;<br />
При запросе комментариев модуль передает суррогатный ключ, уникальный в пределах модуля, и url страницы.<br />
ключ может быть как просто числовым (например, в модуле новостей можно просто передать id новости), так и составным (например, страница с альбомом 'album_1', а страница с фотографией альбома - 'image_1').<br />
url нужен для того, чтобы можно было узнать на какой странице размещен комментарий (например, при модерации).
<br />&#160;<br />
Метод LabComments::getComments($key, $url) возвращает массив вида
<br />&#160;<br />
Text<br />
array<br />
&#160; 'add_id' =&gt; 2 //id скрытого комментария. Будет использоваться <br />
&#160; ля ссылки &quot;добавить комментарий&quot;<br />
&#160; 'comments' =&gt; //непосредственно массив пользовательских комментариев<br />
&#160; &#160; array<br />
&#160; &#160; &#160; 0 =&gt; <br />
&#160; &#160; &#160; &#160; array<br />
&#160; &#160; &#160; &#160; &#160; 'comment_id' =&gt; 3<br />
&#160; &#160; &#160; &#160; &#160; 'text' =&gt; '[b]test[/b]'<br />
&#160; &#160; &#160; &#160; &#160; 'text_html' =&gt; '&lt;b&gt;test&lt;/b&gt;' //не уверен до конца надо ли хранить<br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; распарсенные комментарии или рассчитывать на кэширование выборки<br />
&#160; &#160; &#160; &#160; &#160; 'putdate' =&gt; '0000-00-00 00:00:00'<br />
&#160; &#160; &#160; &#160; &#160; 'user_id' =&gt; 1<br />
&#160; &#160; &#160; &#160; &#160; 'login' =&gt; 'user' //пока рассматриваю вариант хранения логинов<br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; и для зарегистрированных пользователей тоже, так как логины<br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; в системе не меняются, а таблицу пользователей не придется дергать<br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; при каждой выборке<br />
&#160; &#160; &#160; &#160; &#160; 'email' =&gt; 'email@domain.com'<br />
&#160; &#160; &#160; &#160; &#160; 'status' =&gt; 1 //статус комментария. Пока что придумал следующие статусы:<br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; ожидает модерации, опубликован, удален автором, удален модератором, скрыт.<br />
&#160; &#160; &#160; &#160; &#160; 'level' =&gt; 1 //уровень вложенности дерева. Начинается с 1,<br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; так как уровень вложенности 0 имеет скрытый комментарий<br />
&#160; &#160; &#160; &#160; &#160; 'leaf' =&gt; true //ключ, показывающий что данный элемент не имеет наследников.<br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Это для удобства построения дерева.<br />
&#160; &#160; &#160; &#160; &#160; 'moderate' =&gt; array //массив пользователей (или массив id пользователей),<br />
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; пожаловавшихся на этот комментарий<br />
&#160;
<br />&#160;<br />
Что радует, удалось избежать передачи ключа материала практически везде, кроме запроса списка комментариев и удаления всех комментариев. Так что серьезных переделок в модулях, вроде бы, не потребуется.
<br />&#160;<br />
Если есть вопросы (а они наверняка есть<img width="16" height="16" src="https://labcms.ru/skins/labcms/images/smiles/smiley.png" alt=""> ) - милости прошу.]]></description>
      <pubDate>Wed, 06 Jul 2011 16:53:50 +0400</pubDate>
      <guid>https://labcms.ru/discussion-theme.62/1/#p416</guid>
    </item>
  </channel>
</rss>
