Joomla 2.5 изменить бэкэнд-компонент

я хочу сделать следующее:

Я разрабатываю веб-сайт Joomla, на котором есть фон с отображением некоторых изображений.

я хочу отображать разные изображения в зависимости от отображаемого раздела веб-сайта, например:

ГЛАВНАЯ: ../images/img1.jpg ../images/img2.jpg

О НАС: ../images/img3.jpg ../images/img4.jpg

я подумал об использовании какого-то переопределения макета «редактировать элемент меню» в админке, чтобы добавить несколько новых полей, где я выбираю изображения, которые я хочу отображать в этом разделе, а затем выводить эти файлы как HTML на шаблон.

Есть ли способ сделать это?

или может есть более простой способ.


person Axel Lijdens    schedule 12.11.2012    source источник


Ответы (4)


Это не то, для чего вам нужно писать код для Joomla, поскольку существует множество способов сделать это, используя либо вариации стиля шаблона (в версии 2.5+), либо различные расширения.

Мы использовали расширение "зависимые элементы меню" на протяжении многих лет. когда нам нужно простое решение, и оно работает в версиях 1.5->2.5.

person Craig    schedule 12.11.2012
comment
я использую joomla 2.5, это кажется идеальным, но я получаю эту ошибку Строгие стандарты: нестатический метод JSite::getMenu() не должен вызываться статически, предполагая, что $this из несовместимого контекста в D:\xampp\htdocs\{sitename}\ modules\mod_menu_dep_items\mod_menu_dep_items_class.php в строке 75 Строгие стандарты: нестатический метод JApplication::getMenu() не должен вызываться статически, предполагая $this из несовместимого контекста в D:\xampp\htdocs\{sitename}\includes\application .php в строке 523 - person Axel Lijdens; 12.11.2012
comment
Строгие стандарты: нестатический метод JApplication::getMenu() не должен вызываться статически, предполагая $this из несовместимого контекста в D:\xampp\htdocs\{sitename}\includes\application.php в строке 523 Строгие стандарты: только переменные должно быть назначено по ссылке в D:\xampp\htdocs\{sitename}\modules\mod_menu_dep_items\mod_menu_dep_items_class.php в строке 75 - person Axel Lijdens; 12.11.2012
comment
Кроме того, я хотел бы установить более одного изображения - person Axel Lijdens; 12.11.2012
comment
Строгие стандарты предупреждение означают, что вы установили уровень ошибки в разделе «Разработка в Joomla!». или в вашем php.ini — обычно это не проблема, если вы не работаете в очень строгой среде, так как это просто предупреждение. - person Craig; 12.11.2012
comment
Это самый эффективный способ сделать это. Что касается ошибки, которую вы получаете, вы можете отключить отчет об ошибках ESTRICT. См. ссылку для получения дополнительной информации: stackoverflow.com/ вопросы/1248952/ - person Lodder; 12.11.2012
comment
я попробую изменить модуль, чтобы установить все изображения в папке, спасибо! - person Axel Lijdens; 13.11.2012

Если я понимаю ваш вопрос

<?php
$menu = &JSite::getMenu();
$menuItem = $menu->getActive();

print_r($menuItem);
?>

В зависимости от меню, в котором вы находитесь, вы можете вывести CSS. Дайте мне знать, если у вас есть какие-либо проблемы.

person Techie    schedule 12.11.2012
comment
нет, потому что мне нужно сделать uotput как тег ‹img›, и мне нужен способ добавить в элемент меню редактирования/нового в бэкенде способ выбора изображений, которые будут отображаться в этом разделе, как вы выбираете, что модули будут отображаться, или метаданные - person Axel Lijdens; 12.11.2012
comment
в зависимости от меню, которое вы получаете, вы можете повторить тег img. Но вы просите разработать компонент, который выполняет вашу задачу. - person Techie; 12.11.2012
comment
не компонент, мне просто нужно добавить дополнительное поле в меню, отображаемое при создании пункта меню. идея просто вывести src определенных изображений на основе текущего раздела веб-сайта - person Axel Lijdens; 12.11.2012
comment
только что получил то, что вы хотите. тогда у вас будет расширение основных файлов. позвольте мне взглянуть на это - person Techie; 12.11.2012

Я согласен с использованием стилей шаблона.

Скопируйте свой шаблон и добавьте новый параметр для фонового изображения в template.xml. Затем добавьте код для вставки изображения в index.php для шаблона.

Затем создайте стиль для каждого изображения, которое вы хотите использовать.

Назначьте соответствующий стиль соответствующим пунктам меню.

person Elin    schedule 12.11.2012

Это может быть полезно для вас....

Сначала вы должны создать поле в administrator/components/com_menus/models/forms/item.xml

пример

<field name="your_fieldname" type="media"
                label="fieldname"
                description="Give your field description" />

Добавьте эту строку в administrator/components/com_menus/views/item/tmpl/edit.php

<li><?php echo $this->form->getLabel('your_fieldname'); ?>
<?php echo $this->form->getInput('your_fieldname'); ?></li>

Добавьте еще одно поле в yourtableprefix_menu, имя поля должно быть вашим именем поля.

Добавлено

в файле includes/menu.php функция load()

добавьте свое имя поля в следующую строку

$query->select('m.id, m.menutype, m.title, m.alias, m.path AS route, m.link, m.type, m.level, m.language,m.our_image');

я добавлен m.our_image, вот так вы можете добавить свое имя поля

В index.php файле

$menu = &JSite::getMenu();
$menuItem = $menu->getActive();
print_r($menuItem); 
echo $menuItem->your_fieldname; //for get the particular value
person rynhe    schedule 12.11.2012
comment
Я действительно не стал бы редактировать основные файлы таким образом. Помимо прочего, они могут быть перезаписаны при обновлении. Если вы действительно хотите добавить поле, вы должны использовать для этого плагин. - person Elin; 12.11.2012