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

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

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

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

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

 

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

    Удобная модерация объявлений, публикуемых на сайте


    Предположим, есть проект вроде www.weddingrush.ru, на котором пользователи могут размещать свою информацию. Объявления сохраняются в простой таблице (см. статью про организацию гостевых книг). Макрос Form настроен чтобы при каждом добавлении нового объявления модератору отсылалось письмо. Далее, классическая схема предполагает что модератор войдет в админзону и удалит или отредактирует сообщение.

    Это, естественно, требует времени. Хотелось бы откровенный спам с досок удалять проще и быстрее. Реализуем ссылку в письме, при нажатии на которую объявление будет удалено из базы минуя админзону.

    1. Создадим страницу, ссылку на которую разместим в шаблоне письма, которая и будет у нас удалять сообщения. Плюс нам понадобятся еще две страницы с сообщениями об успешном и неупешном удалении записи. Размещать их в hidden зоне menu.xml или в публичном дереве с assign="content" - решать разработчику.

    Вы можете взять в качестве примера вот эту папку и вставить в ваш menu.xml

    <folder id="mod_001" locked="true" title="Модерация">
        <node id="delrec_001" title="Удалить запись">
            <alias editable="true" title="Псевдоним страницы">
                deleterecord
            </alias>
            <template editable="true" title="Шаблон фронтзоны" type="front-templates">
                blank
            </template>
            <admin_template editable="false" title="Шаблон админзоны" type="back-templates">
                page_simple_edit
            </admin_template>
        </node>
        <node id="delrec_002" title="Запись удалена">
            <alias editable="true" title="Псевдоним страницы">
                deleterecord_success
            </alias>
            <template editable="true" title="Шаблон фронтзоны" type="front-templates">
                blank
            </template>
            <admin_template editable="false" title="Шаблон админзоны" type="back-templates">
                page_simple_edit
            </admin_template>
        </node>
        <node id="delrec_003" title="Запись не найдена">
            <alias editable="true" title="Псевдоним страницы">
                deleterecord_failure
            </alias>
            <template editable="true" title="Шаблон фронтзоны" type="front-templates">
                blank
            </template>
            <admin_template editable="false" title="Шаблон админзоны" type="back-templates">
                page_simple_edit
            </admin_template>
        </node>
    </folder>

    Обратите внимание, что мы рекомендуем заменить выделенный boldом псевдоним на любое бессмысленное сочетание букв или хотя бы добавьте к нему несколько цифр, это усложнит угадывание этого служебного URL потенциальным негодяям. Хотя, все равно мы будем далее все шифровать, но, как говорится, береженого бог бережет.

    2. В странице deleterecord мы пишем следующий макрос:

    $RegistrationConfirm[source: yourtable; filter: id=$Decrypt[]$; action: delete; onsuccess: deleterecord_success; onfailure: deleterecord_failure]$

    То есть, при входе на данную страницу мы примем ключ yourkey из URL, расшифруем его макросом Decrypt, удалим запись из таблицы yourtable и в случае успеха покажем страницу deleterecord_success, а в случае ошибки (например, если запись с таким id не найдена) - deleterecord_failure.

    3. На указанные страницы введите сообщения для модератора, вроде "Запись удалена" и "Запись не найдена".

    4. Создадим ссылку в письме. Идем в шаблон email оповещения, который отвечает за письмо при добавлении сообщения на доску объявлений. Туда вбиваем что-то вроде:

    <A href="http://www.weddingrush.ru/deleterecord/?yourkey=$Crypt[$id$]$" target=_new>Удалить объявление с сайта</A>

    Данная ссылка при нажатии на неё в письме приведет модератора на страницу deleterecord, передавая туда шифрованный макросом Crypt атрибут id добавленной записи.

    Все шифрования и дешифровка базируются на уникальных для сайта ключах, вся система шифрования поддерживается полностью автоматически, подобрать шифрованный id практически невозможно, но письмами с подобными URL все равно лучше не разбрасываться. Если с сайтом начинает работать другой контент-менеджер, на всякий случай рекомендуется сбросить кэш сайта и удалить файл cryptkey.twl в папке Data, чтобы перегенерировать ключи шифрования.

    Естественно, вместо удаления записи можно организовать update некоторых полей, например разрешать публикацию устанавливая поле типа state в значение on или off, или делать любые другие действия. Смотрите документацию по макросам, возможности широкие.

    « к списку

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

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

    Реклама: