Альтернативный макет вывода списка категорий

  • 24 Ответов
  • 6455 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Всем доброго времени суток. ^-^

Мне нужно создать свой макет вывода списка категорий, но не могу понять, как это сделать?

Столкнулся со следующей проблемой. Создаю тип меню "Список всех категорий", выбираю родительскую категорию, в своем шаблоне в папке html/com_content/categories создаю файл default.php и в нем переопределяю макет вывода списка категорий.
Но таким образом переопределяется вывод для всех списков в шаблоне. А мне нужно создать альтернативный макет вывода. Поэтому переименовываю файл  default.php в new.php. А теперь самый главный вопрос: ГДЕ МОЖНО НАЗНАЧИТЬ НОВЫЙ МАКЕТ ВЫВОДА new.php. Облазил всю Joomla, нигде не могу найти!  >:(  Если кто знает, подскажите, пожалйста!! Буду очень признателен!!

Альтернативный макет назначается либо при редактировании пункта меню, либо в общих настройках отображения категорий (для всех категорий).

Альтернативный макет назначается либо при редактировании пункта меню
Тут немного наврал. Работать будет только если будет файл new.xml с описанием параметров (пример можно посмотреть в components/com_content/views/categories/tmpl/)
И когда добавите эту XML, то создавая пункт меню, укажите ваш "Тип пункта меню". (название прописывается в xml).

Спасибо, Parnirov, буду пробовать в этом направлении!

Создаю файл new.xml, выбираю новый тип пунката меню, но все равно компонент берет файл default.php. Может где-то надо еще прописать, чтобы брался именно файла new.php?

а версия Joomla какая?


2.5.0? 2.5.1? .....
просто у меня 2.5.4 и случился отчасти похожий на ваш косяк: http://joomlaforum.ru/index.php/topic,219990.0.html


Создаю файл new.xml, выбираю новый тип пунката меню, но все равно компонент берет файл default.php. Может где-то надо еще прописать, чтобы брался именно файла new.php?
Должно быть достаточно положить XML файл с тем же именем рядом с вашим php в папку \templates\ваш_шаблон\html\com_content\category\

Должно быть достаточно положить XML файл с тем же именем рядом с вашим php в папку \templates\ваш_шаблон\html\com_content\category\

Нет, так не работает. Пришлось менять файл  categories\view.html.php. В функцию display перед parent::display($tpl); добавил следующие строки:

$ltype=$params->get('layout_type');
if($ltype)$this->setLayout($ltype);

в new.xml соответственно добавил поле layout_type. Теперь вроде работает. Вот только не знаю, насколько такое решение приемлемо.
« Последнее редактирование: 22.06.2012, 16:15:58 от zegsoft »

Я пользовался вот этим методом: http://wedal.ru/uroki-joomla/joomla-17-layouts.html (Макеты категорий)

Я пользовался вот этим методом: http://wedal.ru/uroki-joomla/joomla-17-layouts.html (Макеты категорий)

Тут немного другая проблема. Мне нужен вывод не category, categories. Для category все работает, согласен, а вот для categories такой трюк не подходит(((

*

Оффлайн Alexiez

zegsoft не нужно ничего мудрить все работает, лучше смотрите как переопределяются макеты, у меня все работает.

1. Нужно создать папку в шаблоне html/com_content
2. Там создаем папки для макетов для которые нужно переопределить (category либо categories), я сделаю для category
3. Туда ложим нужные нам файлы default.php, default_children.php и default.xml, переминовываем эти файлы к примеру new.php new.hml и соответсвенно new_children.php
4. Редактируем файл new.xml
Вот тут нужно поменять только вот эту часть
<layout title="COM_CONTENT_CATEGORY_VIEW_NEW_TITLE" option="COM_CONTENT_CATEGORY_VIEW_NEW_OPTION">
<help
key = "JHELP_MENUS_MENU_ITEM_ARTICLE_CATEGORY_LIST"
/>
<message>
<![CDATA[COM_CONTENT_CATEGORY_VIEW_NEW_DESC]]>
</message>
</layout>

5. Идем в файл administrator/language/ru-RU/ru-RU.com_content.sys.ini и русифицируем наши строчки
6. Нужно теперь пересоздать пункт меню и выбрать наш новый пункт у контента
7. Если нужно для каждой категории в отдельности менять то заходим в категорию и меняем в "Основные параметры" альтернативный макет на наш, либо если нужно это сделать глобально для все категорий, то меняем уже в настройках
Проверяем работоспособность:)
« Последнее редактирование: 01.05.2013, 14:20:52 от Alexiez »

Всем привет!
Я хочу сделать простенький каталог и поэтому мне нужно создать свой макет вывода списка категорий(название + картинка). У меня такая структура Категория->Подкатегория->Продукт(продукт походу будет материалом).
Alexiez, делал по твоей инструкции, почти заработало.
1. Папку создал html/com_content.
2. Создал categories.
3. Положил файлы default.php, default_items.php, default.xml из categories/tmpl, переименовал в catalog.php, catalog_items.php, catalog.xml.
4. Отредактировал catalog.xml, только эту часть
Код: (xml) [Выделить]
<layout title="COM_CONTENT_CATEGORIES_VIEW_CATALOG_TITLE" option="COM_CONTENT_CATEGORIES_VIEW_CATALOG_OPTION">
<help
key = "JHELP_MENUS_MENU_ITEM_ARTICLE_CATEGORIES"
/>
<message>
<![CDATA[COM_CONTENT_CATEGORIES_VIEW_CATALOG_DESC]]>
</message>
</layout>
5. Русифицировал строки.
6. Пересоздал.
7. Не понял. Ведь если мы переписали XML в 4 пункте, то никакого альтернативного макета не будет(будет тип пункта меню).
Вот что вышло.
В выборе типа пункта меню появился созданный мной русифицированный пункт(Каталог). Но вот если его выбрать то он все равно использует оригинальный default_items.php, а не мой  catalog_items.php.
Проверял так
В catalog_items.php в теге <ul> дописал <ul class="ABC"> и ничего не произошло, а когда дописал в default_items.php на странице появился <ul class="ABC">.
Может я чего упустил или для categories в отличие от category нужно как-то иначе?
« Последнее редактирование: 03.05.2013, 18:28:50 от sashok113 »

*

Оффлайн fbr

попробуйте переименовать catalog_items.php в catalog_newitems.php,

а в файле default.php

Код: (php) [Выделить]
echo $this->loadTemplate('items');

//заменить на

echo $this->loadTemplate('newitems');


fbr, хороший совет.
Ошибка 500 - Макет simplecatalog_newitems не найден. Мой шаблон называется simple.
Когда я положил в components/com_content/views/categories/tmpl/default_newitems.php. Ошибка пропала и отобразился default_newitems.php.

Мне кажется Joomla просто не видит мои файлы catalog.php, catalog_items.php и вместо них берет стандартные default.php, default_items.php, а когда я пишу в default.php

Код: (php) [Выделить]
echo $this->loadTemplate('newitems');
то она пытается найти его в components/com_content/views/categories/tmpl/, а не в templates/simple/html/com_content/categories/.
Наверное проблема в путях либо в именах, т.к. в ошибке указана такая строка: simplecatalog_newitems .
Скорей всего в XML надо чего-то подправить. Нужно сделать так что бы использовался не default.php, а catalog.php тогда и catalog_items.php(catalog_newitems.php) будет находиться.
Правда в XML не видно ничего похожего.
« Последнее редактирование: 03.05.2013, 21:23:02 от sashok113 »

Выход найден, он как всегда был перед самым носом ^-^ .
Как я уже писал ошибка выглядела так 500 - Макет simplecatalog_newitems не найден.
Файлы переименовываемые в пункте 3 нужно было назвать simplecatalog.php, simplecatalog_items.php, catalog.xml (simple - название шаблона).
С Joomla работаю недавно, в тонкости не посвящен. Возможно пути и имена файлов можно где-то настроить или это особенность Joomla 2.5.9.
Все заработало, всем спасибо. Особенно fbr, его совет стал ключевым моментом в решении проблемы.
« Последнее редактирование: 04.05.2013, 17:01:29 от sashok113 »

*

Оффлайн Alexiez

sashok113
Цитировать
7. Не понял. Ведь если мы переписали XML в 4 пункте, то никакого альтернативного макета не будет(будет тип пункта меню).
Вот что вышло.
Альтернативный макет будет не в меню, а в категориях, Менеджер материалов->Менеджер категорий Открываем нужную категорию и с правой стороны ищем Альтернативный макет в Основных парраметрах

COM_CONTENT_CATEGORIES_VIEW_CATALOG_TITLE
вот эта строчка отобразиться в меню

COM_CONTENT_CATEGORIES_VIEW_CATALOG_OPTION
вот эта строчка отобразиться непосрественно в категории

Код: (php) [Выделить]
echo $this->loadTemplate('newitems');вот этот код загрузит файл шаблона из вашей папки

Цитировать
Файлы переименовываемые в пункте 3 нужно было назвать simplecatalog.php, simplecatalog_items.php, catalog.xml (simple - название шаблона).
без разницы как их называть

Один момент не учел сорри, файл default.xml переминовываем и оставляем в этой же папке, но оригинал этого файла обязательно оставляйте
« Последнее редактирование: 09.05.2013, 12:17:28 от Alexiez »

*

Оффлайн olf

А у меня никак не заработает. Несколько раз проделывал все шаги по инструкции - все равно цепляет blog.php.
Версия Joomla! 2.5.11. Косяк и в версии или я что-то недопонимаю?
И еще. Когда в созданном new.xml прописываю <layout title="Новый макет" option="new">, - в меню тип появляется, но почему-то в списке пунктов меню отмечен как "Не опубликован".
« Последнее редактирование: 20.05.2013, 00:44:46 от olf »
PHP код по-русски: если не то {} то это {}

*

Оффлайн olf

default.xml переминовываем и оставляем в этой же папке, но оригинал этого файла обязательно оставляйте
Ничего себе, - оказывается, blog.xml и new.xml рядом должны быть. Теперь-то заработало, - но почему в выборе Альтернативного макета категории шаблон так и не появился?
PHP код по-русски: если не то {} то это {}

*

Оффлайн beliyadm

  • ********
  • 8447
  • [+]1590 / [-]63
  • Пол: Мужской
  • Севастополь == Россия
    • Просмотр профиля
    • записки нетрезвого кодера
Ничего себе, - оказывается, blog.xml и new.xml рядом должны быть. Теперь-то заработало, - но почему в выборе Альтернативного макета категории шаблон так и не появился?
Он и не должен там появиться.
Если вы сделали дубль этого XML блога, в нем переименовали название
Код: (xml) [Выделить]
<layout title="COM_CONTENT_CATEGORY_VIEW_BLOG_TITLE" option="COM_CONTENT_CATEGORY_VIEW_BLOG_OPTION">на
Код: (xml) [Выделить]
<layout title="My Custom Blog" option="COM_CONTENT_CATEGORY_VIEW_BLOG_OPTION">То этот новый шаблон блога у вас появится в админке при выборе типа меню с названием "My Custom Blog"
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

Оффлайн olf

А как тогда переопределить шаблон материала, на который переходим из категории по ссылке "Подробнее..."? Ведь ему меню не назначается...
PHP код по-русски: если не то {} то это {}

*

Оффлайн rigin

Выход найден, он как всегда был перед самым носом ^-^ .
Как я уже писал ошибка выглядела так 500 - Макет simplecatalog_newitems не найден.
Файлы переименовываемые в пункте 3 нужно было назвать simplecatalog.php, simplecatalog_items.php, catalog.xml (simple - название шаблона).
С Joomla работаю недавно, в тонкости не посвящен. Возможно пути и имена файлов можно где-то настроить или это особенность Joomla 2.5.9.
Все заработало, всем спасибо. Особенно fbr, его совет стал ключевым моментом в решении проблемы.
Действительно работает. Но надо файлы дублировать с правильными именами, чтобы когда этот баг поправят сайт не посыпался.

А на счет того, что решение под носом - наверное у вас нос длинный и кривой  ;D
« Последнее редактирование: 17.09.2013, 16:31:56 от rigin »

Всем привет!
Я хочу сделать простенький каталог и поэтому мне нужно создать свой макет вывода списка категорий(название + картинка). У меня такая структура Категория->Подкатегория->Продукт(продукт походу будет материалом).
Alexiez, делал по твоей инструкции, почти заработало.
1. Папку создал html/com_content.
2. Создал categories.
3. Положил файлы default.php, default_items.php, default.xml из categories/tmpl, переименовал в catalog.php, catalog_items.php, catalog.xml.
4. Отредактировал catalog.xml, только эту часть
Код: (xml) [Выделить]
<layout title="COM_CONTENT_CATEGORIES_VIEW_CATALOG_TITLE" option="COM_CONTENT_CATEGORIES_VIEW_CATALOG_OPTION">
<help
key = "JHELP_MENUS_MENU_ITEM_ARTICLE_CATEGORIES"
/>
<message>
<![CDATA[COM_CONTENT_CATEGORIES_VIEW_CATALOG_DESC]]>
</message>
</layout>
5. Русифицировал строки.
6. Пересоздал.
7. Не понял. Ведь если мы переписали XML в 4 пункте, то никакого альтернативного макета не будет(будет тип пункта меню).
Вот что вышло.
В выборе типа пункта меню появился созданный мной русифицированный пункт(Каталог). Но вот если его выбрать то он все равно использует оригинальный default_items.php, а не мой  catalog_items.php.
Проверял так
В catalog_items.php в теге <ul> дописал <ul class="ABC"> и ничего не произошло, а когда дописал в default_items.php на странице появился <ul class="ABC">.
Может я чего упустил или для categories в отличие от category нужно как-то иначе?
Спасибо! Все делал как положено, но не выводились материалы в категории... благодаря твоему посту понял, что нужно просто пересоздать меню!