Частный вебмастер г. Псков.
Создание сайтов - Магия & Креатив!

Admin
Дата: 28-06-2016
Просмотров: 995
Комментарии: 0

Страница отзывы

Страница отзывы

В этой статье речь пойдет о том, как создать страницу "Отзывы" на Вашем сайте не используя дополнительных приложений.


MODX Revolution

Очень часто наличие страницы "Отзывы" актуально при создании корпоративных или одностраничных сайтов.

1. В первую очередь создаем новый шаблон, скажем "ReviewsTemplate", за основу которого можно взять страницу "blog-single" Вашего сайта. Убираем лишние элементы, оставляя, так сказать, "чистый лист"и форму. Затем создаем новый документ называем его "Отзывы" и назначаем ему наш созданный шаблон.

2. Теперь, что касается формы заполнения, здесь все можно оставить "default", лишь присвоив значения атрибуту "name":

<form action="[[~[[*id]]]]" method="post" id="reply-form">       
    <p>
    <label for="name">Имя:</label>
    <input type="text" name="name" id="name" value="[[!+fi.name]]" class="field required"> <!-- Атрибуту "name" присвоить значение "name" и определяем и сохраняем значение элемента формы value используя параметр сниппета !+fi-->
    </p>
    <p class="messager">
    <label for="comment">Текст:</label>
    <input name="message" id="message" value="[[!+fi.message]]" class="textarea required" rows="10" cols="10"> <!-- Атрибуту "name" присвоить значение "message" и также определяем и сохраняем значение элемента формы value используя параметр сниппета +!fi -->
    </p>
    <p>
    <i class="mode">Сообщения проходят премодерацию.</i>
    <input type="submit" id="submit" class="btn btn-primary-right submit"  value="Отправить">
    </p>        
</form>

3. Затем необходимо написать сниппет, который будет отвечать за обработку нашей формы, сохранение и модерацию сообщений, назовем его, например "hookfeedback":

<?php
if ( null === $_name = $hook->getValue('name') ) { /*Присваиваем значение переменной name*/
    $hook->addError('preHook', 'false');
    return false;
}

if ( null === $_message = $hook->getValue('message') ) { /* Присваиваем значение переменной message*/
    $hook->addError('preHook', 'false');
    return false;
}

$_name = trim(htmlspecialchars(strip_tags($_name))); /* Прверка и преобразование символов в html (вообщем удаление и чистка)*/
$_message = trim(htmlspecialchars(strip_tags($_message)));

if ( empty($_name) || empty($_message) ) { /* Проверка и возврат сообщений со значением "Пусто"*/
    $hook->addError('preHook', 'false');
    return false;
}

$_feedback = $modx->newObject('modResource'); /* Параметры обработки (строки, дата, шаблон, публикация, ресурс и т.д.)*/
    $_feedback->set('template', 12); /* Шаблон "ReviewsTemplate" */
    $_feedback->set('pagetitle', $_name);
    $_feedback->set('content', $_message);
    $_feedback->set('published', 0); /* Публикация авто или модерация */
    $_feedback->set('parent', 28); /* Наш id ресурса куда будут сохранятся сообщения */
    $_feedback->set('alias', 'review'.time()); /* Псевдоним */
    $_feedback->set('publishedon', time());
    $_feedback->set('createdon', time());
    $_feedback->set('createdby', 1);
$_feedback->save();

return true;

4. Что касается отображения самих отзывов на странице, чтобы не нарушать стилистику сайта, его можно взять из блока комментариев, шаблона "blog-single", и вставить в новый чанк "oneEntrieReviewTpl" пример:

<div class="comments_post">
	<div class="avatar"><img src="[[+tv.image:is=``:then=`/userload/avatar@2x.png`:else=`[[+tv.image]]`]]" alt="[[+pagetitle]]" /></div>
    <div class="user_post">
        <div id="statistics">
            <div class="icon-user"> Автор: [[+pagetitle]]</div>
            <div class="icon-clock"> Дата: [[+publishedon:strtotime:date=`%d-%m-%Y`]]</div>
         </div>
    <p>[[+content]]</p>
    </div>
<br class="clear" />
</div>

6. Понадобится еще один чанк, форма отправки на почту, назовем его feedbackTpl:

<h3>Отзыв с сайта...</h3>
<p>Имя: [[+name]]</p>
<p>Сообщение: [[+message]]</p>

5. И последнее что нам осталось, это вывести наши наши чанки в шаблоне (вместо текста) при помощи "getResources" или "pdoResources" и добавить "FormIt":

[[getResources? 
    &amp;tpl=`oneEntrieReviewTpl` 
    &amp;includeTVs=`1` 
    &amp;processTVs=`1` 
    &amp;includeContent=`1` 
    &amp;limit=`0` 
    &amp;depth=`0`
    &amp;sortby=`{"publishedon":"DESC"}`
 ]]
 [[!FormIt? 
    &amp;hooks=`hookfeedback,email` 
    &amp;emailTpl=`feedbackTpl` 
    &amp;emailTo=`...@mail.ru` 
    &amp;emailSubject=`Новый отзыв на сайте ...` 
]]

Теперь новое сообщение будет добавлено в наши "Отзывы", где Вы можете его отредактировать и опубликовать.

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

Комментарии (0)