Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).

Часто перед владельцами интернет-магазинов встает следующая задача: в категории товаров Virtuemart нужно показать первую часть текста описания (самое главное) перед списком товаров, а вторую часть описания (для seo-оптимизации страницы) уже после этого списка. В этом кейсе я расскажу о том, как можно легко сделать это своими силами, не прибегая к хаку.

Сложность задачи заключается в том, что в настройках категории Virtuemart у нас есть только одно поле описания:

1

Соответственно, вывести его можно только в одном месте категории:

2

Решение

Прибегнем к хитрости.

Шаг 1. Переопределение макета категории в используемый шаблон Joomla.

Копируем файл:

components/com_virtuemart/views/category/tmpl/default.php

в папку:

templates/ИМЯ_ИСПОЛЬЗУЕМОГО_ШАБЛОНА_JOOMLA/html/com_virtuemart/category

Шаг 2. Вносим изменения в скопированный файл.

Находим код:

<div class="category_description">
        <?php echo $this->category->category_description; ?>
</div>

И заменяем на:

<?php
$desc = explode('<hr id="system-readmore" />', $this->category->category_description);
if($desc[1]){ ?>
	<div class="category_description description_top"><?php echo $desc[0]; ?></div>                    
<?php } else { ?>
<div class="category_description">	
	<?php echo $this->category->category_description; ?>	
</div>
<?php } ?>	

Далее, находим в макете место, в которое мы хотим вставить вторую часть описания. Обычно такое место перед самым последним закрывающим </div> на странице.

В это место вставляем следующий код:

<?php if($desc[1]){ ?>
		<div class="category_description description_bottom"><?php echo $desc[1]; ?></div>
<?php } ?>			

Шаг 3. Создаем в настройках категории правильное описание.

После того, как макет отредактирован, описание категории Virtuemart будет формироваться следующим образом:

  • Если в описании категории вставлен разделитель «Подробнее», которым в Joomla отделяется вступительная часть статьи от основной, то текст, расположенный над разделителем, будет показан перед списком товаров в категории, а текст, расположенный под разделителем – под списком.
  • Если в описании категории отсутствует разделитель «Подробнее», текст описания будет показан так, как будто никаких правок не происходило (по умолчанию над товарами категории).

3

Что мы сделали?

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

Результат:

4

Никаких трудностей. Никаких хаков. Никаких дополнительных затрат. Только немного вашего времени. Используйте этот кейс, чтобы сделать сайт одновременно более дружелюбным как для покупателей, так и для поисковых систем.

Понравилась статья? Сохраните себе на стену:

Ваша оценка материала очень важна для нас. Просим вас оценить статью или оставить отзыв в комментариях ниже.

4.375 1 1 1 1 1 4.38

Добавить комментарий

Для отправки комментария введите код с картинки:
Защитный код
Обновить

Комментарии  

0 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Константин 28.08.2016 14:07
Спасибо. Все получилось.
Ответить | Ответить с цитатой | Цитировать
+1 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).spro1 02.02.2016 14:10
Полезная статья, очень даже может пригодится! ждем новые интересные статьи от вас!
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Виталий8K 01.02.2016 21:48
http://virtuemart3.ru/ustanovka-virtuemart3/sozdanie-i-nastrojka-kategorij-virtuemart3

-например тут, год назад, автором сайта была опубликована инфа, как описание категории разделить и выводить внизу списка товаров....

"уникальная и полезная информация" и для меня, и, думаю для всех, это именно уникальная информация, которой или нет на других источниках или которая не ищется в поисковике в первой же выдачи. полезная - которую реально можно применить на сайтах, скажем, которой многие пользуются или хотели бы воспользоваться.
Ответить | Ответить с цитатой | Цитировать
+1 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Wedal 02.02.2016 06:01
Виталий8K, если бы вы внимательно прочли кейс, то могли бы отметить, что его идея совершенно отличается от описанного в статье по ссылке, которую вы привели. В той статье просто рассказывается о том, как вставить описание категории в какое-либо место макета. Я же пишу про то, как разделить описание категории на две части , не прибегая при этом, к хакам Virtuemart.

Кстати, в комментариях статьи, которую вы привели, есть вопрос как раз по тому, как разделить описание, но ответа на него за последний год так и не появилось. Данный вариант решения возник не на стороннем сайте, а в моей голове, когда это потребовалось реализовать одному из заказчиков. Я погуглил, и, действительно, нашел аналогичные решения на форумах, но разве от этого данный кейс, разжевывающий все по пунктам, стал менее полезным?
Ответить | Ответить с цитатой | Цитировать
-1 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Виталий8K 02.02.2016 13:57
//Я же пишу про то, как разделить описание категории на две части , не прибегая при этом, к хакам Virtuemart.

тогда напишите - создаем модуль html, там вписываем что нужно, привязываем к нужной категории и нужной позиции и усе. но более правильном при этом было бы написать что в принципе можно в любом месте joomla где есть модульная позиция, размещать инфу....
а приводить новую версию старого решения, это "круто", но круто ли... вот в чем сомнения.
мы (подписчики) джем интересную инфу, познавательную инфу, познавательную инфу!
а при таком раскладе ждем что-то больше года, и все не дожидаемся...
Ответить | Ответить с цитатой | Цитировать
-1 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Wedal 03.02.2016 04:17
Виталий8K, не советуйте людям плохие решения. Так:
Цитата:
создаем модуль html, там вписываем что нужно, привязываем к нужной категории и нужной позиции и усе
делать нельзя! Да, оно будет работать. Но если категорий товаров у вас больше чем 5, то таким способом можно создать себе очень много проблем.

Насчет "познавательной инфы"... Вы так пишите, как будто я чем-то вам обязан. Проект некоммерческий. Держится только за счет энтузиазма. Денег, которые приносит реклама, едва хватает на поддержку сайта в Интернете. Я тоже человек и мне нужно содержать себя и свою семью. Я пишу то, что успеваю и тогда, когда успеваю. Подготовка одной большой статьи может требовать до нескольких дней времени, которое не всегда есть в наличии.
Ответить | Ответить с цитатой | Цитировать
-1 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Виталий8K 03.02.2016 11:02
//Но если категорий товаров у вас больше чем 5, то таким способом можно создать себе очень много проблем.

интересно, каких проблем? обычно, описание товарных категорий нужно для сео, т.к. пипл смотрят товары и редко читают описания. тем более длинные описания в конце категорий. да, можно описание поставить/перенести вниз, можно вообще им не заморачиваться. т.к. магазины по сео, продвигаются не категориями (это почти не целеесообразно и слишком хлопотно), а товарами и соответственно более актуально, это описание товаров и шаманство там! скажем описание товаров с помощью шорткодов и др инструментов, сильно облегчающих жизнь или создание полноценных лендингов при минимуме усилий - крайне полезно и актуально всем! идею новой статьи я предложил :-) :roll:

//Проект некоммерческий. Держится только за счет энтузиазма.

мы, подписчики, в курсе ;-)
но мы, подписчики, требуем новости и интересности! :-) :P

//Денег, которые приносит реклама, едва хватает на поддержку сайта в Интернете.

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

//Я тоже человек и мне нужно содержать себя и свою семью.

не в обиду, но ~ 500р. вполне можно выделить на карманные расходы на этот проект (сайт) в месяц.
в эти ~500р. я подразумеваю vps.
и, вполне можно, если Вы занимаетесь сайтами, раз в месяцок, выкладывать по статейке :roll:
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Владимир11 03.02.2016 10:13
На странице http://wedal.ru/pages/help.html есть номера кошельков, которые помогут ускорить появление познавательной инфы.
Ответить | Ответить с цитатой | Цитировать
-1 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Виталий8K 30.01.2016 12:15
тов Wedal, хотелось бы увидеть уникальные какие-либо материалы, а не тупо содранные с других ресурсов.
раньше Ваш ресурс славился уникальной и полезной информацией, а за последнее время либо содранное, либо не относящееся вообще к Joomla.
Ответить | Ответить с цитатой | Цитировать
+1 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Wedal 01.02.2016 05:45
Виталий8K, я приветствую критику, но она должна быть объективной. Сообщите, пожалуйста, что и у кого я "тупо содрал"? Что для вас "уникальная и полезная информация" ?
Ответить | Ответить с цитатой | Цитировать
-1 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Владимир11 02.02.2016 00:33
Формат кейсов предполагает краткое изложение решения конкретной проблемы.
И даже если решение где-то уже встречается это не значит, что другие пользователи читали о нем.
Вместо необоснованной критики лучше поддержите автора, чтобы появился дополнительный стимул для написания "уникальной и полезной информации".
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Данил 07.12.2016 19:05
Спасибо за хак! Подскажите как быть если для большинства категорий описание требуется под товарами и для нескольких нужно его разделить на 2 части? Ставить разделитель Подробнее в начале текста у большинства категорий не хочется
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Wedal 08.12.2016 05:24
Данил, начнем с того, что это не хак. Хак - это изменение в системных файлах расширения, которые будут перезаписаны при первом же обновлении. Здесь мы создаем свой, переопределенный в шаблон, макет. Проблем с обновлениями у этого решения нет.

По вашему вопросу:
Если не хочется ставить разделитель в большинстве категорий, то можно сделать обратную логику:
1) Перед товарами проверяете: если $desc[1] существует, то выводите только $desc[0], если нет, то не выводите ничего.
2) После товаров проверяете: если $desc[1] существует, то выводите только $desc[1], если нет, то выводите $this->category->category_description

Таким образом, когда у вас нет разделителя, описание будет полностью выводиться под товарами, а когда разделитель есть, то первая часть - над товарами, а вторая - под товарами.
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).данил 08.12.2016 09:50
Получилось, спасибо! Только почему-то позиция right шаблона смещается в самый низ под футор
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как разделить описание в категории Virtuemart 2-3 на ДО и ПОСЛЕ товаров (Кейс #6).Wedal 09.12.2016 05:02
данил, скорее всего вы забыли где-то поставить закрывающий тег, либо разбили открывающий и закрывающий тег PHP-уловием (if), т.е., к примеру, тег открывается внутри условия, только когда оно выполняется, а закрывается снаружи, независимо от того, выполнилось оно или нет. В этом случае, всякий раз, когда условие не выполнилось, на странице будет лишний закрывающий тег и верстка будет рушиться.
Ответить | Ответить с цитатой | Цитировать

Вверх