Вход для клиентов и партнеров
в начало сайта
Партнерская программаОнлайн демоСкачатьКарта сайта
 

Регламент
Документация
Часто задаваемые вопросы (FAQ)
Решения типовых вопросов
Форум поддержки
Библиотека разработчика

Посмотрите демо-ролики и убедитесь в том, что "Twilight CMS" очень удобна в управлении, понятна и проста.

Бесплатно скачайте "Twilight.Basic", установите на своем компьютере и изучите систему более детально.

Если вам нужно установить "Twilight CMS" на существующий сайт или разработать новый - обращайтесь в отдел интеграции.

 

Ваше имя
Ваш Email
Вопрос
Twilight.basic
  • Узнайте больше
  • Сравните версии
  • Twilight.selection
  • Узнайте больше
  • Сравните версии
  • Twilight.evolution
  • Узнайте больше
  • Сравните версии
  •  
    Главная // Библиотека разработчика // Справочники // Книга рецептов (Cookbook) // Стандартные решения типовых задач //

    Реализация гостевой книги, комментариев к статьям, новостям и т.п.


    Гостевая книга легко реализуется из пары макросов $News[]$ и $Form[]$. Для безопасной реализации потребуется макрос $Replace[]$, который доступен начиная с пакета Selection.

    Подобный функционал также подходит для реализации комментариев к статьям, товарам. Как пример рассмотрим как сделан и работает блок комментариев к товарам на сайте http://www.cellafon.ru.

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

    Принцип работы на примере комментариев к элементам каталога

    Работать будет все примитивно: мы разместим на странице с товаром ленту комментариев, а под ней форму для добавления отзывов. Добавляются сообщения пользователями, они записываются в определенную таблицу. Поскольку макрос Form будет записывать в таблицу кроме полей формы также идентификаторы товара и категории из URL (параметры iid/sid), то в таблице у нас получится набор комментариев с полями iid/sid тех товаров, к которым они привязаны. По ним можно будет фильтровать комментарии для вывода на странице только тех, которые относятся к данному товару.

    Код вывода комментариев (положить в дизайн вывода конкретного товара/новости/категории и т.п.):
    $News[source: guestbook; design: guestbook; filter: iid=6D4D6C8CFDCE46C78AF0D2B9568A7FE7, state=on; sort: created, desc, auto; items_per_page: 10]$

    Данный код при нахождении на странице с каким-то товаром выводит из таблицы guestbook те записи, у которых в поле iid будет найдено значение равное идентификатору текущего товара (берется из параметра iid в URL).

    Под этим блоком (или где нужно по дизайну) добавляем макрос Form:

    $Form[html: GuestbookForm; savetodb: guestbook; redirect_after: add_message_result; email_label: email_guestbook]$

    Одновременно с добавлением комментария в таблицу guestbook.dat, админу сайта отправляется письмо по email (метка email_guestbook) и пользователя переводят на страницу с псевдонимом add_message_result. Форма имеет нужный разработчику дизайн и перечень полей. Также, в ней можно реализовать Javascript валидаторы для проверки на заполненность полей и другие возможности.

    Код дизайна вывода записей в гостевой (news_design.xml):
        <newsdesign id="guestbook">
            <header>
                <![CDATA[
                <HR size=1>
                <TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0" WIDTH=100%>]]>
            </header>
            <delimiter>
                <![CDATA[
                    <TR><TD colspan=2><HR size=1></TD></TR>
                ]]>
            </delimiter>
            <item>
                <![CDATA[
                    <tr>
                        <td valign=top>
                            <B>$Attribute:created$ <SPAN style="font-size: 11pt"><a href="mailto:$Attribute:email$">$Attribute:name$</A></B></SPAN>
                            <P>
    $Dehtmlize[$Attribute:message$]$
                        </td>
                    </tr>
                ]]>
            </item>
            <footer>
                <![CDATA[
                    </TABLE>
                    <HR size=1>
                    $Text[source: "<SPAN style="font-size: 10pt"><P align=right>Страницы: </P></SPAN>"; condition: $NotEmpty[]$]$
                ]]>
            </footer>
        </newsdesign>

    Этот дизайн используется в нашем вышеописанном $News[]$, выводит перечень комментариев в простейшей форме. Макрос DeHTMLize позволяет отфильтровать все HTML тэги кроме <BR> непосредственно при выводе на страницу. Более сложные варианты фильтрации можно реализовать макросом Replace, который поддерживает как простые поиск и замену, так и регулярные выражения в нотации языка Perl.

    Пример простой формы добавления отзыва о товаре без валидации и капчи (в примере файл Templates/GuestbookForm.html):
    <H1>Добавить отзыв о товаре</H1>
    <FORM action="" method=POST>
    <TABLE class=system cellSpacing=0 cellPadding=5 border=0>
    <TR>
    <TD align=right>Как Вас зовут</TD>
    <TD><INPUT name=name></TD></TR>
    <TR>
    <TD align=right>Email</TD>
    <TD><INPUT name=email></TD></TR>
    <TR>
    <TD align=right>Сообщение</TD>
    <TD><TEXTAREA name=message rows=8 cols=60></TEXTAREA></TD></TR>
    <TR>
    <TD> </TD>
    <TD><input type="submit" value="» Отправить"></TD></TR></FORM></TABLE>

    Сущность для записи:
     <entity id="guestbookitem" name="Комментарий">
      <field id="created" type="locked" sortas="datetime[hh:mm:ss DD.MM.YYYY]" name="Дата"/>
      <field id="state" type="checkbox" name="Опубликована"/>
      <field id="name" type="string" sortas="literal" name="Имя"/>
      <field id="email" type="string" sortas="literal" name="Email"/>
      <field id="message" type="text" sortas="literal" name="Сообщение"/>
     </entity>

     

    Справочник с сообщениями выводится через $News[]$ обычным образом. При выводе с помощью макроса $Replace[]$ мы сначала модифицируем HTML тэги, чтобы на сайт нельзя было опубликовать какую-нибудь гадость, а затем "разрешаем обратно" тэг <B>, чтобы пользователям он был доступен. Перечень разрешенных тэгов, естественно, можно расширить произвольным образом.

    Для удобства модерирования его можно подключить в админзоне через $ListEditor[table: guestbook; entity: guestbook_item]$ и редактировать, удалять или добавлять сообщения через админзону.

    « к списку

    версия для печати

     
    © 2003-19 Страта Технологии (создание сайтов, разработка cms), Twilight CMS in english.
    Наш адрес: Москва, пр. Маршала Жукова д.51
    Тел.: (495) 222-6436, E-mail: , карта сайта, условия использования информации о CMS
    Звоните через Skype:  

    Реклама: