Куда идем?

Часто перед владельцами интернет-магазинов встает следующая задача: в категории товаров 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

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

----------------------------

Если вы занимаетесь не только разработкой сайтов, но и проектированием, то вам может быть интересна отличная программа для машиностроения и других видов проектов. Да, это Autocad. Перейдя по ссылке, вы сможете прочитать про его возможности, найдете обучающие уроки, сможете скачать пробную версию или же приобрести профессиональную. 

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
-4
тов Wedal, хотелось бы увидеть уникальные какие-либо материалы, а не тупо содранные с других ресурсов.
раньше Ваш ресурс славился уникальной и полезной информацией, а за последнее время либо содранное, либо не относящееся вообще к Joomla.
4
Виталий8K, я приветствую критику, но она должна быть объективной. Сообщите, пожалуйста, что и у кого я "тупо содрал"? Что для вас "уникальная и полезная информация" ?
0
Формат кейсов предполагает краткое изложение решения конкретной проблемы.
И даже если решение где-то уже встречается это не значит, что другие пользователи читали о нем.
Вместо необоснованной критики лучше поддержите автора, чтобы появился дополнительный стимул для написания "уникальной и полезной информации".
0
Спасибо за хак! Подскажите как быть если для большинства категорий описание требуется под товарами и для нескольких нужно его разделить на 2 части? Ставить разделитель Подробнее в начале текста у большинства категорий не хочется
0
Данил, начнем с того, что это не хак. Хак - это изменение в системных файлах расширения, которые будут перезаписаны при первом же обновлении. Здесь мы создаем свой, переопределенный в шаблон, макет. Проблем с обновлениями у этого решения нет.

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

Таким образом, когда у вас нет разделителя, описание будет полностью выводиться под товарами, а когда разделитель есть, то первая часть - над товарами, а вторая - под товарами.
0
Получилось, спасибо! Только почему-то позиция right шаблона смещается в самый низ под футор
0
данил, скорее всего вы забыли где-то поставить закрывающий тег, либо разбили открывающий и закрывающий тег PHP-уловием (if), т.е., к примеру, тег открывается внутри условия, только когда оно выполняется, а закрывается снаружи, независимо от того, выполнилось оно или нет. В этом случае, всякий раз, когда условие не выполнилось, на странице будет лишний закрывающий тег и верстка будет рушиться.
-2
http://virtuemart3.ru/ustanovka-virtuemart3/sozdanie-i-nastrojka-kategorij-virtuemart3

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

"уникальная и полезная информация" и для меня, и, думаю для всех, это именно уникальная информация, которой или нет на других источниках или которая не ищется в поисковике в первой же выдачи. полезная - которую реально можно применить на сайтах, скажем, которой многие пользуются или хотели бы воспользоваться.
4
Виталий8K, если бы вы внимательно прочли кейс, то могли бы отметить, что его идея совершенно отличается от описанного в статье по ссылке, которую вы привели. В той статье просто рассказывается о том, как вставить описание категории в какое-либо место макета. Я же пишу про то, как разделить описание категории на две части , не прибегая при этом, к хакам Virtuemart.

Кстати, в комментариях статьи, которую вы привели, есть вопрос как раз по тому, как разделить описание, но ответа на него за последний год так и не появилось. Данный вариант решения возник не на стороннем сайте, а в моей голове, когда это потребовалось реализовать одному из заказчиков. Я погуглил, и, действительно, нашел аналогичные решения на форумах, но разве от этого данный кейс, разжевывающий все по пунктам, стал менее полезным?
-4
//Я же пишу про то, как разделить описание категории на две части , не прибегая при этом, к хакам Virtuemart.

тогда напишите - создаем модуль html, там вписываем что нужно, привязываем к нужной категории и нужной позиции и усе. но более правильном при этом было бы написать что в принципе можно в любом месте joomla где есть модульная позиция, размещать инфу....
а приводить новую версию старого решения, это "круто", но круто ли... вот в чем сомнения.
мы (подписчики) джем интересную инфу, познавательную инфу, познавательную инфу!
а при таком раскладе ждем что-то больше года, и все не дожидаемся...
1
Виталий8K, не советуйте людям плохие решения. Так:

Цитата:

создаем модуль html, там вписываем что нужно, привязываем к нужной категории и нужной позиции и усе

делать нельзя! Да, оно будет работать. Но если категорий товаров у вас больше чем 5, то таким способом можно создать себе очень много проблем.

Насчет "познавательной инфы"... Вы так пишите, как будто я чем-то вам обязан. Проект некоммерческий. Держится только за счет энтузиазма. Денег, которые приносит реклама, едва хватает на поддержку сайта в Интернете. Я тоже человек и мне нужно содержать себя и свою семью. Я пишу то, что успеваю и тогда, когда успеваю. Подготовка одной большой статьи может требовать до нескольких дней времени, которое не всегда есть в наличии.
-4
//Но если категорий товаров у вас больше чем 5, то таким способом можно создать себе очень много проблем.

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

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

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

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

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

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

не в обиду, но ~ 500р. вполне можно выделить на карманные расходы на этот проект (сайт) в месяц.
в эти ~500р. я подразумеваю vps.
и, вполне можно, если Вы занимаетесь сайтами, раз в месяцок, выкладывать по статейке :roll:
2
На странице http://wedal.ru/pages/help.html есть номера кошельков, которые помогут ускорить появление познавательной инфы.
2
Полезная статья, очень даже может пригодится! ждем новые интересные статьи от вас!
1
Спасибо. Все получилось.
0
Огромное спасибо за статью. Очень полезное, а главное, простое решение!
Так же хочу высказать справедливое возмущение в адрес некоторых горе-комментаторов. Какие бы добрые дела человек не делал обязательно находятся те кому это не по душе. Вот из-за таких задротов опускаются руки п ропадает желание что-либо делать во благо. Как говорила старуха Шепокляк: "Кто людям помогает тот время тартит зря"
Вам, товарищи, написали, разжевали, в рот положили, и, когда Вы и с этим умудрились накосячить еще и путем, прям, телепатии, сказали где что вы криво накодили. А вам нэ такэ... у-у-у, блин, аж зло берет.
Автору ще раз огромное спасибо и РЕСПЕКТ!, сорри за лирическое отступление, но промолчать не смог
0
Доброго времени суток Виталий, все работает отлично, но у меня вылез небольшой ньюанс. Он не связан с этим решением.. Суть проблемы в том что описание категории выводится на главной странице, витрине товаров. Скорее всего это задумка авторов шаблона, но, учитывая длину описания категории меня оно не устраивает. Если есть возможность подскажте пожалуйста как на главной странице Virtuemart вывести описание категорий до "подробнее", или вообще скрыть описание категорий. Заранее огромное спасибо
0
Андрей, это зависит от того, что у вас является главной страницей. Пункт меню какого типа является Главной?
0
Здравствуйте. Я немного неправильно выразился. Главная страница сайта у меня - избранные материалы + прикручено куча всяких модулей, слайдеров и прочего мельтешащего и ипривлекаюзего внимание. Категории товаров там выводяться в виде списка, модулем. Там все работает нормально.
Описания категории у меня выводяться на главной странице Wirtuemart!!, которой присвоен пункт меню МАГАЗИН. Выводятся, я так понял соглдасно задумке авторов шаблона (OT Keila). Временное решение я нашел на просторах интернета:
редактировал файл templates/ваш_шаблон/html/com_virtuemart/sublayouts/categories.php
Блок category_description, вместо того что там было, вставил следующий код

category_description, 0, 200 );
echo strip_tags($cat_desc); ?>

Вместо 200 ставлю нолик, и описания нету. Но не уверен что это рещение мне подходит лучшим образом. Все-таки хотелось бы знать как отключить полностью вывод описания категорий в витрине товаров. Скрыть описание стилями не вариант, потому что более 30ти категорий, и на каждую опсиание 3000-5000 знаков. Да и ключевики надо распределить по страницам а не свалить все в одну кучу... Очень буду благодарен за ответ) и спасибо огромное за Вашу отзывчивость и помощь!
0
Андрей, я все никак не могу понять, что вы хотите получить. Скрыть описание только на главной странице Virtuemart? Тогда переходите в админке в Virtuemart -> Магазин -> Магазин и удаляете там описание.
Если нужно скрыть описание во всех категориях, то переопределяете макет категории в шаблон Joomla, находите в нем переменную описания категории и удаляете ее из макета.
0
Доброго времени суток. Да, хочу скрыть описания категорий только на главной странице Virtuemart. Просто не знал что это есть в настройках. Огромное спасибо за подсказку!
0
Крутотенное решение!!!! Самое главное простое. Спасибо Тебе огромное, Автор.
0
Почему-то не получается разделить описание. Обе правки внес, но весть текст так и остается в верхней части страницы.
VM 3.2.0
0

Цитирую Provato:

Почему-то не получается разделить описание. Обе правки внес, но весть текст так и остается в верхней части страницы.
VM 3.2.0


Все заработало! Спасибо Автору.
Немного не разобрался - в редакторе описания категорий VM не оказалось кнопки "Подробнее" (ошибочно воспользовался кнопкой "Разрыв страницы"), хотя в редакторе материалов она есть.
Скопировал код разделителя "Подробнее" из текста материала, вставил в текст описания категории:
0
А как проделать такой же трюк с категорией самой джумлы?
0
Дима, точно также, только макеты нужно использовать для категории Joomla, ну и переменная, хранящая описание там другая. А подход и остальной код такой же.
0
Так это понятно, что принцип тот же. Просто где находятся макеты джумловских категорий я не знаю. Если знаете, скажите
0
Дима, смотря какой используется макет. Если блог категории, то components/com_content/views/category/tmpl/blog.php, если какой-то другой, то тоже там, только другой макет.
Не забудьте переопределить макет в шаблон Joomla перед правками.
0
Ну да, блог категории. Там описание категории выводиться сверху, а хотелось бы и сверху пару предложений, и снизу остальной текст.
Вот открыл я с умным видом этот blog.php, а тут как-то все по другому. Может напишите статью "Как разделить описание в категории Joomla 3 на ДО и ПОСЛЕ"?
0
Дима, всё такж. Просто найдите в файле переменную, которая выводит описание. Найдите места куда нужно выводить первую и вторую часть, а дальше используйте код из этого кейса, только вместо $this->category->category_description подставляйте переменную описания категории Joomla.
0
Респект друже. Сделал это для карточки товара. Круто!!!
0
подскажите пожалуйста как такое провернуть с Phoca Cart
там путь к файлу совпадает, а вот внутри:
if ( $this->t['main_description'] != '') {
echo ''. $this->t['main_description']. '';
0
Nixon, используйте тот же код из статьи, только вместо:
$this->category->category_description
в нем будет:
$this->t['main_description']