Форум русской поддержки Joomla!® CMS
11.12.2016, 04:20:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 5830 раз)
0 Пользователей и 1 Гость смотрят эту тему.
zegsoft
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« : 22.06.2012, 12:30:00 »

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

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

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

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #1 : 22.06.2012, 13:08:57 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #2 : 22.06.2012, 13:16:01 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #3 : 22.06.2012, 13:20:45 »

Спасибо, Parnirov, буду пробовать в этом направлении!
Записан
zegsoft
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #4 : 22.06.2012, 13:27:49 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #5 : 22.06.2012, 13:59:16 »

а версия Joomla какая?
Записан
zegsoft
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #6 : 22.06.2012, 14:00:16 »

2.5
Записан
Parnirov
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #7 : 22.06.2012, 14:01:17 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #8 : 22.06.2012, 14:03:08 »

2.5.6
Записан
Parnirov
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #9 : 22.06.2012, 14:07:12 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #10 : 22.06.2012, 14:12:54 »

Должно быть достаточно положить 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, 14:15:58 от zegsoft » Записан
Parnirov
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #11 : 22.06.2012, 14:25:42 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #12 : 22.06.2012, 14:34:23 »

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

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

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 55



« Ответ #13 : 01.05.2013, 12:05:10 »

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, 12:20:52 от Alexiez » Записан
sashok113
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #14 : 03.05.2013, 15:03:52 »

Всем привет!
Я хочу сделать простенький каталог и поэтому мне нужно создать свой макет вывода списка категорий(название + картинка). У меня такая структура Категория->Подкатегория->Продукт(продукт походу будет материалом).
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, только эту часть
Код
	<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, 16:28:50 от sashok113 » Записан
fbr
Живу я здесь
******

Репутация: +136/-6
Offline Offline

Сообщений: 1251


« Ответ #15 : 03.05.2013, 15:31:34 »

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

а в файле default.php

Код
echo $this->loadTemplate('items');
 
//заменить на
 
echo $this->loadTemplate('newitems');
 

Записан
sashok113
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #16 : 03.05.2013, 16:27:31 »

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

Код
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, 19:23:02 от sashok113 » Записан
sashok113
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #17 : 04.05.2013, 14:54:36 »

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

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 55



« Ответ #18 : 09.05.2013, 10:11:09 »

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

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

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

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

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

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

Репутация: +5/-1
Offline Offline

Сообщений: 333



« Ответ #19 : 19.05.2013, 22:38:07 »

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

Репутация: +5/-1
Offline Offline

Сообщений: 333



« Ответ #20 : 19.05.2013, 22:50:42 »

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

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #21 : 19.05.2013, 22:53:38 »

Ничего себе, - оказывается, blog.xml и new.xml рядом должны быть. Теперь-то заработало, - но почему в выборе Альтернативного макета категории шаблон так и не появился?
Он и не должен там появиться.
Если вы сделали дубль этого XML блога, в нем переименовали название
Код
<layout title="COM_CONTENT_CATEGORY_VIEW_BLOG_TITLE" option="COM_CONTENT_CATEGORY_VIEW_BLOG_OPTION">
на
Код
<layout title="My Custom Blog" option="COM_CONTENT_CATEGORY_VIEW_BLOG_OPTION">
То этот новый шаблон блога у вас появится в админке при выборе типа меню с названием "My Custom Blog"
Записан
olf
Давно я тут
****

Репутация: +5/-1
Offline Offline

Сообщений: 333



« Ответ #22 : 20.05.2013, 11:48:28 »

А как тогда переопределить шаблон материала, на который переходим из категории по ссылке "Подробнее..."? Ведь ему меню не назначается...
Записан
rigin
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 10


« Ответ #23 : 16.09.2013, 20:31:11 »

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

А на счет того, что решение под носом - наверное у вас нос длинный и кривой  Grin
« Последнее редактирование: 17.09.2013, 14:31:56 от rigin » Записан
zeppelin
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #24 : 29.04.2015, 11:34:30 »

Всем привет!
Я хочу сделать простенький каталог и поэтому мне нужно создать свой макет вывода списка категорий(название + картинка). У меня такая структура Категория->Подкатегория->Продукт(продукт походу будет материалом).
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, только эту часть
Код
	<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 нужно как-то иначе?
Спасибо! Все делал как положено, но не выводились материалы в категории... благодаря твоему посту понял, что нужно просто пересоздать меню!
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet