Появилась необходимость в материалы Joomla 1.5 добавить новое поле, точне добавление поля в стандртный компонент Joomla com_content.
Ну приступим
1. Добавление в шаблон интерфейса back-end
Открываем файл administrator/components/com_content/admin.content.html.php - здесь содержится шаблон страницы добавляемого/редактируемого материала. Идем на строку номер 833* где видим закрывающий тег. Непосредственно после него добавляем свою таблицу:
<table class="adminform">
<tbody>
<tr>
<td>Новое поле:</td>
<td><input id="new_field" class="inputbox" maxlength="255" name="new_field" size="40" type="text" value="<php echo $row->new_field; ?>" /></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
2. Добавление в шаблон интерфейса front-end
Для возможности работы с новым полем непосредственно со страниц сайта, дабовляем в файл components/com_content/views/article/tmpl/form.php:
<table class="adminform">
<tbody>
<tr>
<td>Новое поле:</td>
<td><input id="new_field" class="inputbox" maxlength="255" name="new_field" size="40" type="text" value="<php echo $row->new_field; ?>" /></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
3. Работа с базой данных
Нам надо в таблице #_content добавить новое поле. Я сделал это через phpMyAdmin. Зашел в таблицу #_content и сделал запрос:
ALTER TABLE jos_content ADD new_field VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
Только примите во внимание что я добавляю поле с названием new_field, если выбудете добавлять с иным название, то вам надо поменять во всем коде его название!
4. Вытаскивание данных
Открываем файл libraries/joomla/database/table/content.php , находим строку class JTableContent extends JTable и добавляем свойство var $new_field = null;
class JTableContent extends JTable {
/** @var string This is our new field */
var $new_field = null;
/** @var int Primary key */
var $id = null;
/** @var string */
var $title = null;
5. Изменение модели компонента
В папке components/com_content/models расположены несколько файлов, функциональное назначение которых отражено в их названии. Например, category.php содержит код отвечающего за вывод данных в формате списка/блога. В случае использования данных из нового поля вне пределов страницы материала/статьи, за которую отвечает файл article.php который не требует модификаций, необходимо будет внести изменения в запрос для выборки из таблицы . Проще всего это сделать найдя в нужном файле текст a.title_alias и добавив в список столбцов a.new_field .
Для категорий в файла category.php найти текст:
$query = 'SELECT cc.title AS category, a.id, a.title, a.alias, a.title_alias, a.introtext, ...
И вставить a.new_field:
$query = 'SELECT cc.title AS category, a.id, a.title, a.alias, a.title_alias, a.new_field, a.introtext, ...
6. Вывод нового поля
Для вывода нового поля в самом материале необходимо открыть файл components/com_content/views/article/tmpl/default.php и, добавив в него код, в том месте где хотите его видеть:
<?php echo $this->article->new_field; ?>
Для вывода в списке материалов категории, надо в файле components/com_content/views/category/default_items.php добавить новый столбик в таблице, в верхней стоке будет название, а в строке вывода добавить код:
<?php echo $this->item->new_field; ?>
Ну все, теперь должно все заработать и не забудьте отчистить кэшь
Если у кого что то не получиться, задавайте вопросы, помогу по мере свободного времени.
Интересные статьи:
1. Скопируйте файл templates/system/error.php в собственый шаблон temp...
Давно уже разрабатывается компонент для перехода движка с версии 1.5 д...
UMI.CMS - это быстрая и удобная система управления сайтами. Почему у...