Пост целиком основан на аналогичной статье с блога beagler.ru. Пользуясь возможностью хотел бы сказать спасибо автору и порекомендовать блог beagler.ru всем интересующимся joomla и virtuemart.
Разница между моей статьей и исходником лишь в небольшом дополнении к уже написанному.
Итак, иногда возникает необходимость выводить на главной странице магазина не только названия категорий с картинками (что в virtuemart 2 настроено по умолчанию), но и подкатегории второго уровня. Сразу хочу оговориться, что подкатегории третьего уровня вывести данным способом не удастся. Вот как это, например, может выглядеть.
Нам понадобится отредактировать 2 файла.
1 файл /components/com_virtuemart/views/virtuemart/view.html.php
Ищем код:
1 |
$categoryChildren = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $categoryId ); |
Сразу после него вставляем:
1 2 3 4 5 6 7 |
foreach ($categoryChildren as $category) { $category->childs = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $category->virtuemart_category_id ); $categoryModel->addImages($category->childs,1); } |
Сохраняем и перезаписываем файл.
Дальше открываем файл /components/com_virtuemart/views/virtuemart/tmpl/default_categories.php, который отвечает за внешний вид категорий на главной странице.
Перед кодом
1 2 3 |
</div> <?php $iCategory ++; |
Вставляем
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php if ($category->childs ) { ?> <div class="category floatleft<?php echo $category_cellwidth . $show_vertical_separator ?>" style="text-align: center;width:100%;"> <?php foreach ($category->childs as $child) { $caturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$child->virtuemart_category_id); $cattext = $child->category_name; ?> <div style="display:block;float:left;"> <div class="spacer"> <h2> <a href="<?php echo $caturl ?>" title="<?php echo $child->category_name ?>"> <?php echo $child->category_name ?> <br /> <?php if (!empty($child->images)) { echo $child->images[0]->displayMediaThumb("", false); } ?> </a> </h2> </div> </div> <?php }echo '</div>';} ?> |
Теперь блок с подкатегориями является вложенным по отношению к блоку с главной категорией. Если вы не хотите выводить картинки подкатегорий, то из указанного кода просто вырезаете
1 2 3 4 5 |
<?php if (!empty($child->images)) { echo $child->images[0]->displayMediaThumb("", false); } ?> |
Для удобства редактирования стилей я сменил стиль блока подкатегорий с
1 |
<div class="spacer"> |
на
1 |
<div class="spacer2"> |
Теперь в файле стилей virtuemart /components/com_virtuemart/assets/css/vmsite-ltr.css мы можем указать нужные нам стили.
После недолгих правок у меня получилось вот это, хотя, конечно, это далеко не окончательный вариант.
Надеюсь, что информация была полезна.
P.S.
В связи с частым обновлением приведенный код может не работать на новых версиях virtuemart.
Для virtuemart 3 лучше использовать отдельный модуль VM Category Slider.
Андрей
А как бы еще и пересчитать товары (чтобы в скобках было их количество)
admin
Не сталкивался с такой задачкой, но думаю хак был бы многим полезен. Для следующего магазина, возможно, буду искать решение. Если найду, то статью обязательно дополню.
Andersol
Для указания количества товара в категории, используйте данную строку (вставлять надо после category_name ?> ) (точно работает на VM 2.0.18a)
Спасибо тебе, добрый блоговод, за то, что все доступно объясняешь =)))
Andersol
Сори, модель Караоке работает только в самих категориях...
admin
спасибо, что поделились решением!
zfjoury
А есть то же самое только для Virtuemart 1.1.9???
Замучился искать(((
admin
По vm 1,1,9 не смогу подсказать, не работал с ним почти...
zfjoury
Уже сам нашел как)
Выложил на форуме.
http://joomlaforum.ru/index.php/topic,252969.0.html
Получается как тут http://www.lord-stroy.ru
admin
Спасибо, что поделились
Julia
Добрый день! Столкнулась с такой неприятной проблемой - по непонятной причине перестали создаваться новые категории, а старые не сохраняют изменения. При этом пишет, что все создано и все сохранено, но результат нулевой. Подскажите, пожалуйста, что это может быть и как бороться? Спасибо!
admin
попробуйте обновить virtuemart до последней версии, чтобы не потерять изменения при обновлении перенесите файлы шаблонов vm в папку с шаблоном сайта. подробнее здесь
Dmitri
А не подскажете, как провести аналогичную операцию для шаблона вывода категории (views/category) ?
admin
То есть внутри категории есть подкатегории в подкатегориями второго уровня?
nikola
Актуально.
У меня есть пункт меню Категории. Внутри список категорий. Очень нужно вывести под каждой категорией список ее подкатегорий.
По аналогии с вышеописанным кодом не удалось сделать.
Алексей
Здравствуйте! В шаблоне есть папка с VM, как я понимаю, там тоже нужно вставлять код. По пути templates/шаблон/html/com_virtuemart/categories/default.php вставляю второй код, но нет ни чего подобного файлу /components/com_virtuemart/views/virtuemart/view.html.php
В папке html все вроде просмотрел, может не там ищу? Сайт в подписи. Спасибо.
admin
если файла view.html.php в папке с шаблоном нет, значит нужно править его в папке с компонентом
у вас к главной странице сайта в менеджере меню привязана главная страница virtuemart?
Алексей
Главная-страница категорий vm. Я в компоненте все сделал, как описано у вас в статье. Стал вставлять в шаблон второй код, ошибка при загрузке сайта. На данный момент в компоненте стоят оба кода, а из шаблона естественно убрал.
admin
в статье описан споб для случая когда главная страница это главная страница virtuemart
как сделать то же для категорий, к сожалению не знаю
Алексей
Я сейчас поменял местами главной поставил главную VM, в итоге - пустая страница, код в компоненте стоит.
admin
удаленно трудно сказать почему не работает
Алексей
Спасибо, все получилось, в настройках главной страницы VM, показать категории.
Просьба к вам, я стили хочу изменить, не могли бы свои стили написать.
Евгений
Здравствуйте!
Не получается вывести подкатегории там, где они по идее должны выводиться автоматически..на странице родительской категории. Вот главная страница каталога с категориями http://lumistec.ru/index.php/cat в категории "уличные светильники" есть подкатегории с товарами, но при клике на неё попадаем на страницу http://lumistec.ru/index.php/cat/view/category/virtuemart_category_id/24 которая почему-то пуста..может быть кто-нибудь посоветует где копать?
Дмитрий
Подскажите, пожалуйста. Завис на одном моменте и не могу двигаться дальше. Как на главную страницу вывести товар без категории(просто у меня четыре товара, категория не нужна)?
admin
Попробуйте в менеджере модулей создать модуль Товары virtuemart
модуль можно вывести внутри статьи на главной через стандартный функционал joomla
почитать об этом можно здесь
Игорь
Здравствуйте, спасибо за статью не подскажите, как сделать, чтобы выводились не все подкатегории, а например, пять штук и потом было написана просмотреть все.
Дмитрий
Все работает. Спасибо.
Ola
Здравствуйте, у меня список категорий выводится на главной странице, но в sidebar. Но у меня нет отступа между категориями. Получается не красиво и не очень понятно. Например:
Женская одежда
Джинсовая одежда
Спортивная одежда
Мужская одежда
Верхняя одежда
Классическая одежда
Повседневная одежда
А хочется так:
Женская одежда
Джинсовая одежда
Спортивная одежда
Мужская одежда
Верхняя одежда
Классическая одежда
Повседневная одежда
В каком файле и что копать? Заранее спасибо!
Ola
Нашла решение. Поменяла стиль в модуле вывода категорий.
Иван
После правки нет изменений
Volodymyr
В одной категории название в одну строчку, в другой в две строчки. Изображение категорий в разных уровнях. Где выровнять и как, а то не выходит.
Volodymyr
Или как вариант: название категории переместить ниже изображения.
admin
пришлите ссылку на сайт, где нужно настроить
Volodymyr
http://beregynya.pp.ua/index.php?lang=ru
На фотке №2 в статье таже проблема, "средства индивидуальной защиты" в две строчки и изображение категории ушло вниз.
admin
попробуйте добавить в /components/com_virtuemart/assets/css/vmsite-ltr.css к стилю
еще такие свойства
Volodymyr
Большое Спасибо. Все работает.
Антон
К сожалению не работает на vm 2.0.26d не могу найти нужную строку $categoryChildren в view.html.php она просто отсутствует. Пытался сделать после $categoryChildren = $categoryModel->getChildCategoryList($vendorId, $categoryId); Получается пустота.
Вика
Присоеденяюсь в версии 2.0.26d нет такой строки. Help! 🙂
admin
попробуйте вставить после строки
Сергей
Для версии 2.0.26 или 2.6 и выше
Нужно в том же файле после строки
Вставить чуть измененный код:
admin
спасибо,что поделились!
denis2015
вирт 2.6.8 все получилось, кроме вывода кол-ва товара.
Возникла проблема: чтобы не дублировать список категорий в модуле меню
слева и в центральной части по вышепоказанному способу, выбрал привязку левого модуля ко всем страницам КРОМЕ главной. Теперь, если зайти в категорию, то все нормально,- левый модуль появляется, НО если зайти в подкатегорию, где лежат товары,- то левый модуль не появляется. джумла думает что я нахожусь на главной.
Можно вылечить отключением СЕО, но тогда возникает проблема с переходом на главную страницу по баннеру(было на форуме)
admin
Вам нужно создать пункты для всех категорий virtuemart с типом Virtuemart категория
Их можно сгруппировать в отдельное скрытое меню, которое не будет выводится на сайте
Александр
В панеле администратора, в форме категории не отображается выбор Родительской категории. Помогите пожалуйста как исправить)
Вот скриншот
http://i65.fastpic.ru/big/2014/0912/b5/5ca871f934ae1fca29fd8fbf617d23b5.jpg
admin
Попробуйте обновится до последней версии
возможно, это поможет
Александр
Нашол причину почему не отображается. Где то в коком то файле есть строчка
А вот сам файл не могу найти. Помогите)
http://i68.fastpic.ru/big/2014/0912/72/ce6694ae63ccf1c9e1aa0105d7a15c72.jpg
admin
Это свойство прописано в самом шаблоне, странно...
попробуйте добавить в файл chosen.css (точный путь можно посмотреть наведя на название файла у вас на скрине) свойство
Павел
Здравствуйте! А подскажите пожалуйста как вывести товары нескольких категорий на главной страницы сайта? (virtuemart 3)
admin
Здравствуйте!
Товары на главной можно вывести через настройки в Virtuemart > Настройки > Шаблоны
область Настройки главной страницы VirtueMart
либо через модуль с типом Virtuemart товары
dj_pasha
А через шаблон можно как-то?
admin
Virtuemart > Настройки > Шаблоны
область Настройки главной страницы VirtueMart
dj_pasha
Мне нужно вывести все товары определенных категорий, через настройки можно только рекомендуемые, лучшие и топ.
Александр
Всем вечер добрый. Вирт 3.0.12 .../view.html.php вообще неузнаваем.
Как вывести подкатегоии, эксперименты результатов не дали вообще
Александр
Всем вечер добрый. Вирт 3.0.12
В шаблоне категории
в в теле (под категорией)
помогите поправить, упростить. Ругается на верхний цикл, хотя все работает
Яна
Здравствуйте, не нашла подходящей темы, пишу здесь. Подскажите, пожалуйста, как на главной убрать слово "Главная" под баннерами http://www.rosa-secret.ru/
Захожу в Менеджер меню: Редактирование пункта меню. Ставлю Заголовок скрыть. Но все равно это слово отображается.
admin
Здравствуйте!
Это выводится модуль хлебных крошек. В настройках модуля во вкладке Привязка к пунктам меню выберите На всех страницах, кроме указанных и отметьте пункт Главная.
Яна
Подскажите, модуль хлебных крошек как называется? Top navigation?
Яна
Поняла, это навигатор сайта. Ура получилось. Весь интернет перерыла, не могла понять. Спасибо.
admin
Рад, что проблема решилась.
Александр
Здравствуйте, спасибо за статью!
Не подскажите, как сделать, чтобы выводились не все подкатегории, а например, пять штук, и потом было написана просмотреть все?
Александр
И еще вопрос. Если в подкатегориях есть еще подкатегории, их тоже можно как-то вывести? Заранее спасибо!
admin
Здравствуйте!
Готового решения,к сожалению, не могу предложить.
Если найдете, пожалуйста поделитесь.
admin
Если на virtuemart 3 метод из статьи не работает, то можно использовать сторонний модуль VM Category Module
Артем
А как вывести название Категории (или подкатегории) рядом с названием товара на странице Категории?
admin
Уточните, что именно должно получиться?
Рядом с товаром должно просто выводиться название текущей категории?
Артем
Я сделал вывод товаров из подкатегорий на странице категории верхнего уровня.
Например:
Магазин->Диваны->Угловые
Вот у меня сейчас все угловые и просто диваны отображаются в категории диваны, но я хочу чтобы у каждого товара рядом с названием выводилось название его категории(т.е. подкатегории).
Как это реализовать?
admin
Попробуйте этот код
Он выведен названия всех категорий у товара.
Артем
Спасибо большое. Очень помогло.
Радует, что есть такие люди как вы
admin
Рад, что проблема решилась.