Jump to content
  • 0

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


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 post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

А можно ли это сделать в подключаемом плагине или компоненте? Чем больше изменений в системных файлах, тем соленее слезы при обновлении :)

Link to post
Share on other sites
  • 0

Можно сделать и в отдельном компоненте (расширенная версия com_content), но идея как раз таки и заключается в том, чтобы их не использовать.

Link to post
Share on other sites
  • 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 post
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.

  • Комментарии

    • Здравствуйте.   А какую цель Вы преследуете? По этим словам больше схоже на то, что не определена цель создания ресурса. Нехватка какой-то функциональной части говорит об отсутствии MVP. именно так.
    • Хочу Вам представить свой сайт - nexROM.ru Полтора года я работаю над сайтом, и уже переустанавливал много раз CMS, тк что то всегда не так, чего то не хватает, и какая то неопределённость приводит в тупик, и вот снова я переустановил движок, и уже не знаю стоит ли собственноручно наполнять контентом сайт, всё это выглядит как конвеерный процесс, и тем более прошлый опыт мне подсказывает, что нужно двигаться немного иначе, вот как идея - предоставить пользователям возможность вести свои блоги, выкладывать файлы и создавать клубы по интересам, но это ещё тяжелее с одной стороны чем просто привлечь посетителя на сайт, здесь пользователя должно заинтересовать создать запись в блоге или тему на форуме. Так что буду рад увидеть полезные советы по развитию и критику
    • alert('2' + submit.value) нужно было делать внутри request.onreadystatechange, потому что именно там приходит значение с сервера и задаётся value у submit. И через сколько времени это произойдёт, не всегда известно, может и через минуту, если интернет медленный, поэтому таймаутами универсально не побороть.
    • Я не уверен, что у формы есть событие input, но если даже было бы, то переменные result, num1 и num2 не определены. Они были бы созданы автоматически, если бы это были id, но у тебя-то name. И я не в курсе, сейчас можно писать js-код в атрибутах без javascript: спереди? И есть ли у тега <output> свойство value? Может быть, у него textContent? Подключи Vue, там будет работать так, как ты хочешь, только придётся несколько дополнительных действий сделать, привязывая переменные к инпутам и создавая computed-свойство.
    • В телеграме картинка есть, вконтакт тоже показывает, даже в аське есть. Видимо, ты как-то не так проверяешь.
×
×
  • 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.