Как добавить новое поле в модуль
При необходимости можно добавить в административную часть любого из модулей дополнительное поле и вывести его значение в пользовательской части.
В качестве примера добавим поле «Автор» в модуль новостей.
Для этого в таблицу {news} с помощью, например, phpMyAdmin, добавим поле author с типом varchar(250).
Выполним следующий SQL-запрос:
Пример:
ALTER TABLE `ВАШ_ПРЕФИКС_news` ADD `author` VARCHAR(250) NOT NULL;
Далее добавим в массив $variables файла modules/news/admin/news.admin.php в следующую запись:
Пример:
'main' => array (
'author' => array(
'type' => 'text',
'name' => 'Автор'
),
…
где:
- type – тип поля (подробнее о типах полей можно посмотреть здесь);
- name – название поля, которое будет отображаться в административной части.
Все! Этого достаточно, чтобы поле «Автор» появилось в административной части сайта на странице редактирования новости. Естественно, его можно заполнять, сохранять, редактировать.
Далее нужно вывести это поле где-нибудь в пользовательской части сайта, например, на странице списка новостей. Рассматривается случай, когда в настройках модуля не подключены категории.
Внесем изменения в файл modules/news/news.model.php. Корректировка затронет метод list_query, где происходит выборка всех полей новости.
Пример:
$rows = DB::query_range_fetch_all("SELECT e.id, e.author, e.created, ...");
Теперь, добавим в цикл вывода новостей файла modules/news/views/news.view.list.php код:
Пример:
if(! empty($row["author"]))
{
echo $row["author"];
}
Все! У новостей в списке отобразится наше поле «Автор».
Если категории подключены, нужно править метод list_category_elements_query в файле modules/news/news.model.php:
Пример:
$rows = DB::query_range_fetch_all("SELECT e.id, e.author, e.[name], ...");
Далее нужно действовать аналогично примеру с отключенными категориями. Файл modules/news/views/news.view.list.php:
Пример:
if(! empty($row["author"]))
{
echo $row["author"];
}
Для вывода автора в подробном описании новости нужно внести изменения в метод id_query все того же файла modules/news/news.model.php:
Пример:
$row = DB::query_fetch_array("SELECT id, author, [name], [anons], ...");
Шаблон вывода подробного описания новости находится в файле
modules/news/views/news.view.id.php. Имя автора хранится в $result['author']
. Чтобы его отобразить добавим в нужное место файла код:
Пример:
if(! empty($result['author']))
{
echo $result['author'];
}
Возможно, понадобится вывести имя автора в блоке последних новостей. Откроем файл modules/news/news.model.php и в метод show_block() внесем следующие изменения:
Пример:
$result["rows"] = DB::query_range_fetch_all("SELECT e.id, e.author, ...");
Далее в файле modules/news/views/news.view.show_block.php в цикле вывода новостей добавим:
Пример:
if(! empty($row["author"]))
{
echo $row["author"];
}
Добавление полей в другие модули осуществляется аналогично.
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.