Jump to content
  • 0

J 1.5: Дополнительные поля в статье


Radiocity
 Share

Question

Многие из пользователей Joomla 1.5 сталкивались с необходимостью вывода дополнительной информации в статье. Будь то информация о фотографе, или дополнительное изображение, или краткая сноска. Оказывается, ставить тяжелые компоненты, подобные K2 для решения поставленной задачи, совершенно необязательно.

Реализация заключается в расширении стандартного компонента com_content, путем манипуляций с базой данных и исходным кодом.

Добавление поля "Информация"

В базе данных MySQL выполним скрипт, добавляющий дополнительное поле для статей:

ALTER TABLE `jos_content` ADD `article_info` VARCHAR( 255 ) NOT NULL

Для того, чтобы в редакторе статьи можно было редактировать примечание в следующем файле administrator/components/com_content/models/article.xml добавим код после 14 строки:

<param name="article_info" type="text" default="" label="Info" description="" />

Теперь необходимо в классе JTableContent задать переменную, которая будет отвечать за новое поле. Откроем файл libraries/joomla/database/table/content.php и в строке 92 добавим следующий код:

var $article_info = null;

Поле и переменная созданы. Давайте заставим Joomla работать с ними, сохраняя данные. Откроем файл administrator/components/com_content/controller.php и в функции editContent() перед выводом мета-данных (567 строка) вставим следующий код:

$form->set('article_info', $row->article_info);

Как в шаблоне добавить поле?

Поле создано и обрабатывается. Однако, его еще нужно вывести посетителю. Необходимо поправить используемый шаблон.

В файле /templates/<my template>/html/com_content/article/default.php необходимо вставить строку:

<?php echo trim($this->item->article_info);?>

В шаблоне блога категории ничего не выводится! Что делать?

Для вывода информации в com_content для этих шаблонов используется собственная функция, поэтому необходимо ее поправить.

В файле /components/com_content/models/category.php найдите функцию _buildQuery() и добавьте ваше поле в mysql запрос:

$query = 'SELECT cc.title AS category, a.id, a.title, a.article_info

Поле успешно обрабатывается, однако необходимо добавить вывод в шаблон также, как это делалось ранее. В файле /templates/<my template>/html/com_content/category/blog_item.php вставьте строку:

<?php echo trim($this->item->article_info);?>

Постскриптум

Текущая информация основана на данной статье, а также посте S.M. Saidur Rahman на одном из форумов.

Edited by Radiocity
  • Like 1
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0
А можно ли это сделать в подключаемом плагине или компоненте?

можно как в установленном' date=' но здесь речь идёт о MySQL, не всё храниться там, по крайней мере настройки модуля и плагина не всегда в MySQL

Чем больше изменений в системных файлах, тем соленее слезы при обновлении

Не попробуешь не узнаешь

В принципе, проект J1.5 завершён, как и J1.0

Пускай ломает, глобальных изменений и исправлений не ожидается J1.5, в отличие от К2

Появиться ещё одна Joostina :P

Radiocity

Если про K2, то там был плагин User Extended Fields for K2

http://getk2.org/ext...d-fields-for-k2

С ним были проблемы по русификации, но он был заброшен и не обновлялся уже давно... :(

На форумах, переведённый плагин есть, его не только я мучил, но надо искать

Edited by lev99
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy