Добавить новое поле изображения в Joomla 1.7 com_content

Я пытаюсь внести некоторые изменения в компонент com_content Joomla 1.7. Не так много документов по конкретной теме для Joomla 1.7.

Может быть, вы могли бы помочь мне в этом.

Я хочу иметь отдельное поле для дополнительного изображения в com_content, особенно для рекомендуемого просмотра.

В админке удалось добавить поле - сразу в html, потом в xml файл и наконец в БД.

Теперь я пытаюсь отобразить эту запись в моем пользовательском HTML-представлении для избранных статей.

Я просто использовал простой код echo $this->item->addimage;, но, к сожалению, он не отображается.

Есть идеи, как этого добиться?

Спасибо!

И еще, насколько я заметил, в Joomla 1.7 изменена структура разработки компонентов, регистрации БД и так далее. Любая полезная ссылка (ы), где все хорошо объяснено?


person mrGott    schedule 12.10.2011    source источник
comment
Привет, Майки, изменение основного com_content на самом деле не лучший способ обойти это. Рассматривали ли вы плагин, который позволил бы вам прикрепить изображение к статье? Я создал 2 расширения, которые предоставляют очень похожие функции для 1.5, и код в основном можно перенести в 1.7. Хотели бы вы попробовать это в качестве решения? Тогда это не будет взломом ядра, что означает, что обновления вашей CMS в будущем не нарушат ваши модификации.   -  person udjamaflip    schedule 16.10.2011
comment
@udjamaflip спасибо за ответ, но я думаю, что внесение изменений в ядро ​​​​- правильный вариант для меня прямо сейчас.   -  person mrGott    schedule 16.10.2011
comment
Это будет выглядеть так же, как вы делаете это сейчас, если это то, о чем вы беспокоитесь.   -  person udjamaflip    schedule 17.10.2011
comment
Я не верю, что модификация ядра когда-либо является ответом. Как сказал udjamaflip, есть плагин, который делает то же самое — я настоятельно рекомендую пойти по этому пути. Это сэкономит вам часы головной боли позже, когда вам нужно будет обновиться (и вы должны / должны в целях безопасности!)   -  person Hanny    schedule 17.10.2011
comment
@Hanny - Как называется плагин? Просто взгляните, может быть, мне понравится это решение :)   -  person mrGott    schedule 18.10.2011
comment
Ах, извините, Майки, я просто добавил к тому, что уже сказал udjamaflip... они сказали, что создали 2 расширения, которые делают что-то подобное, чтобы они знали имя. К сожалению, нет - я просто знаю, что модификация ядра может вызвать головную боль в будущем (я знаю по опыту! тьфу!)   -  person Hanny    schedule 18.10.2011
comment
@Mikey Я использовал комбинацию плагинов и модулей, чтобы добавить мета-заголовок в менеджер статей в Joomla 1.5. Та же концепция может быть легко изменена в соответствии с вашими потребностями. Проверьте здесь: bit.ly/nAsq9f   -  person udjamaflip    schedule 19.10.2011


Ответы (2)


Что ж. Если вы уверены, что ваша реализация того, что вы сделали, работает. т.е. Встроенное изображение или просто URL-ссылка из поля, которое вы добавили, хранятся в базе данных. Посмотрите файл главной страницы /components/com_content/views/featured/tmpl/default_item.php

Там вы должны разместить свою переменную $this->item->addimage, например:

<img src="<?php echo $this->item->addimage; ?>" />

Если вы храните URL-ссылку или

<img src="image/png;base64,<?php echo $this->item->addimage; ?>" />

если вы храните изображение в виде данных в формате RAW base64


Редактировать: это должно решить вашу проблему, если вы добавляете свои статьи из внешнего интерфейса (если из внешнего интерфейса, просто дайте мне знать)

  1. Сначала создайте новый столбец в таблице jos_content, например:

'addimage' varchar(255) ПО УМОЛЧАНИЮ NULL

Затем измените следующие файлы:

  1. ../com_content/views/featured/tmpl/default_image.php [СТРОКА: 29]

    29:#</h2>

    30:#<?php endif; ?>

    32: <?php if(!empty($this->item->addimage)): ?>

    33: <img src="<?php echo $this->item->addimage; ?>" alt="ADDIMAGE" />

    34: <?php endif; ?>

    36: #<?php if ($params->get('show_print_icon') || $params->get('show_email_icon') || $canEdit) : ?>

  2. ../com_content/models/articles.php [СТРОКА: 160]

    160: # $this->getState(

    161: # 'list.select',

    162: 'a.id, a.title, a.alias, a.title_alias, a.introtext, a.addimage, ' .

    163: #'a.checked_out, a.checked_out_time, ' .

  3. ../com_content/models/forms/article.xml [ДОБАВИТЬ ГДЕ-ТО]

    <field id="addimage" name="addimage" type="text" label="Add Image" class="inputbox" />

  4. ../com_content/views/form/tmpl/edit.php [СТРОКА: 82]

    82: #<?php echo $this->form->getInput('created_by_alias'); ?>

    83: #</div>

    85: <div class="formelm">

    86: <?php echo $this->form->getLabel('addimage'); ?>

    87: <?php echo $this->form->getInput('addimage'); ?>

    88: </div>

    90: #<?php if ($this->item->params->get('access-change')): ?>

person WooDzu    schedule 17.10.2011
comment
он вообще не получает из базы данных. Я думаю, мне следует внести изменения в Модели, но, к сожалению, я не нашел нужного места в SELECT. - person mrGott; 18.10.2011
comment
Если вы добавили соответствующее поле в ../models/forms/article.xml и столбец в базе данных, взгляните на файл ../models/article.php и его функцию &getItem. В SQL-запросе есть список столбцов в предложении select. Просто добавьте к нему a.addimage, и вы получите $this-›item-›addimage. - person WooDzu; 18.10.2011
comment
Будет ли он доступен в Избранных статьях? Он доступен внутри статьи, я хотел бы использовать его в Featured (на главной странице) - person mrGott; 18.10.2011
comment
Итак, какой вид вы используете для своей главной страницы или какова ее полная ссылка (без перенаправления) - person WooDzu; 18.10.2011
comment
Я использую избранное представление (default_item.php). Что вы подразумеваете под не маршрутизируемой ссылкой? - person mrGott; 18.10.2011
comment
В ПОРЯДКЕ. Это нормально, но мне нужно больше инструкций, например, что является результатом изменений, которые я дал вам во втором комментарии. - person WooDzu; 19.10.2011
comment
Это отлично сработало для самой статьи, когда вы заходите в раздел «Читать далее»... но я хочу, чтобы она отображалась в избранной части на главной странице, я использую избранное представление - person mrGott; 19.10.2011
comment
Вы уверены, что используете избранное представление? Перейдите в Диспетчер меню: «Редактировать пункт меню» и дайте мне значение поля «Ссылка» для вашего пункта главного меню (это не маршрутизируемый URL-адрес). - person WooDzu; 19.10.2011
comment
Скорее всего, вы используете блог категорий или список категорий, а не просмотр избранных статей. Если бы вы использовали избранные статьи, просмотр любых изменений в default_item.php привел бы к их отображению на главной странице. - person WooDzu; 19.10.2011
comment
когда я что-то меняю в default_item.php, это приводит к изменениям на главной странице, но вставка эха $this-›item-›addimage не дает никакого результата. - person mrGott; 19.10.2011
comment
Я обновил свой ответ. Должно решить проблему, если вы добавите свои статьи в интерфейсе (если вы сделаете это в бэкэнде, просто дайте мне знать, и я помогу вам обновить файлы администрирования) - person WooDzu; 20.10.2011

com_content больше не подходит для создания переменного контента в joomla. Это все тот же негибкий код со времен мамбо. Вам стоит попробовать такие решения, как K2, flexicontent или мой любимый ZOO. Их легко освоить, и с ними можно делать много интересных вещей. Дополнительные поля? Нет проблем. Некоторые из них уже существуют для Joomla 1.7/2.5. Взламывать ядро ​​всегда плохо. В основном потому, что вы теряете путь обновления.

person Mike    schedule 21.10.2011
comment
Это определенно правильный путь. Взламывать ядро, когда есть расширения, которые делают именно то, что вам нужно, не имеет смысла. Изменения, которые вам нужно будет внести, чтобы достичь того, чего вы хотите, будут обширными и, вероятно, не так хорошо реализованы, как K2 или Zoo, которые связывают изображения со статьями из коробки. - person Brent Friar; 09.11.2011