Как добавить гостевую книгу?
На примере гостевой книги можно понять, что очень многие новые функции можно составить из основных. В частности, в гостевой книге требуется возможность добавить сообщение, возможность администратора ответить на сообщение и архив сообщений. Мы имеем однотипную структуру данных (которая реализуется одним инфоблоком) - Имя, e-mail, дата, текст, ответ администратора - и форму ввода (создать элемент) и список предыдущих постов (список элементов).
Таким образом, сначала мы создаём инфоблок "Гостевая книга" с указанными полями и создаём в нём тестовый элемент. Дальше создаём страницу "Создать элемент" (например, назовём её guestbook.php, а шаблон - guestbook_add). Выберем включение капчи, выберем, что нам нужно вводить только поля Имя, e-mail и текст. Завершим создание. (Более подробно об этом можно прочитать в статье Как добавить форму обратной связи (или любую другую форму для заполнения)?)
Дальше создадим страницу "Список элементов" (назовём её test.php, сама страница не потребуется, а шаблон - guestbook_list). Выберем вывод всех полей, 10 позиций на страницу, счётчики страниц сверху и снизу, в сообщении об отсутствии элементов напишем "Нет записей в гостевой книге!". Завершим создание. (Подробнее об этом можно прочитать в статье Как добавить каталог товаров, новости или список однотипных данных на сайт?)
Далее скопируем из этой страницы следующие include-директивы:
include_once($root_dir.$engine_path."engine/gcomponents/news_list/guestbook_list_controller.php");
include_once($root_dir.$engine_path."engine/gcomponents/news_list/guestbook_list_template.php");
И вставим их в файл guestbook.php в следующем порядке:
include_once($root_dir.$engine_path."engine/gcomponents/news_list/guestbook_add_controller.php");
include_once($root_dir.$engine_path."engine/gcomponents/news_list/guestbook_list_controller.php");
include_once($root_dir.$engine_path."engine/templates/new/new_header.php");
include_once($root_dir.$engine_path."engine/gcomponents/news_list/guestbook_add_template.php");
include_once($root_dir.$engine_path."engine/gcomponents/news_list/guestbook_list_template.php");
Порядок такой вот по какой причине:
контроллеры - сначала идёт обработка добавления, а потом обработка списка. Таким образом, при вводе нового сообщения оно сразу попадёт в список и будет показано в гостевой.
темплейты - потому что форма ввода сверху.
Теперь осталось только привести к красивому виду темплейты (это делается вручную) и добавить необходимые проверки и автоматическое заполнение данных в контроллер guestbook_add_controller (примеры приведены в статье Как добавить форму обратной связи (или любую другую форму для заполнения)?).
Гостевая книга готова.
|