
Часто перед владельцами интернет-магазинов встает следующая задача: в категории товаров Virtuemart нужно показать первую часть текста описания (самое главное) перед списком товаров, а вторую часть описания (для seo-оптимизации страницы) уже после этого списка. В этом кейсе я расскажу о том, как можно легко сделать это своими силами, не прибегая к хаку.
Содержание
Сложность задачи заключается в том, что в настройках категории Virtuemart у нас есть только одно поле описания:
Соответственно, вывести его можно только в одном месте категории:
Решение
Прибегнем к хитрости.
Шаг 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 отделяется вступительная часть статьи от основной, то текст, расположенный над разделителем, будет показан перед списком товаров в категории, а текст, расположенный под разделителем – под списком.
- Если в описании категории отсутствует разделитель «Подробнее», текст описания будет показан так, как будто никаких правок не происходило (по умолчанию над товарами категории).
Что мы сделали?
Все очень просто. В макете категории мы разбили текст, который храниться в описании категории, на две части. Первая часть та, что расположена перед разделителем, а вторая та, что расположена после разделителя. После этого каждая из частей описания была выведена в нужном месте макета.
Результат:
Никаких трудностей. Никаких хаков. Никаких дополнительных затрат. Только немного вашего времени. Используйте этот кейс, чтобы сделать сайт одновременно более дружелюбным как для покупателей, так и для поисковых систем.
----------------------------
Если вы занимаетесь не только разработкой сайтов, но и проектированием, то вам может быть интересна отличная программа для машиностроения и других видов проектов. Да, это Autocad. Перейдя по ссылке, вы сможете прочитать про его возможности, найдете обучающие уроки, сможете скачать пробную версию или же приобрести профессиональную.
раньше Ваш ресурс славился уникальной и полезной информацией, а за последнее время либо содранное, либо не относящееся вообще к Joomla.
И даже если решение где-то уже встречается это не значит, что другие пользователи читали о нем.
Вместо необоснованной критики лучше поддержите автора, чтобы появился дополнительный стимул для написания "уникальной и полезной информации".
По вашему вопросу:
Если не хочется ставить разделитель в большинстве категорий, то можно сделать обратную логику:
1) Перед товарами проверяете: если $desc[1] существует, то выводите только $desc[0], если нет, то не выводите ничего.
2) После товаров проверяете: если $desc[1] существует, то выводите только $desc[1], если нет, то выводите $this->category->category_description
Таким образом, когда у вас нет разделителя, описание будет полностью выводиться под товарами, а когда разделитель есть, то первая часть - над товарами, а вторая - под товарами.
-например тут, год назад, автором сайта была опубликована инфа, как описание категории разделить и выводить внизу списка товаров....
"уникальная и полезная информация" и для меня, и, думаю для всех, это именно уникальная информация, которой или нет на других источниках или которая не ищется в поисковике в первой же выдачи. полезная - которую реально можно применить на сайтах, скажем, которой многие пользуются или хотели бы воспользоваться.
Кстати, в комментариях статьи, которую вы привели, есть вопрос как раз по тому, как разделить описание, но ответа на него за последний год так и не появилось. Данный вариант решения возник не на стороннем сайте, а в моей голове, когда это потребовалось реализовать одному из заказчиков. Я погуглил, и, действительно, нашел аналогичные решения на форумах, но разве от этого данный кейс, разжевывающий все по пунктам, стал менее полезным?
тогда напишите - создаем модуль html, там вписываем что нужно, привязываем к нужной категории и нужной позиции и усе. но более правильном при этом было бы написать что в принципе можно в любом месте joomla где есть модульная позиция, размещать инфу....
а приводить новую версию старого решения, это "круто", но круто ли... вот в чем сомнения.
мы (подписчики) джем интересную инфу, познавательную инфу, познавательную инфу!
а при таком раскладе ждем что-то больше года, и все не дожидаемся...
Насчет "познавательной инфы"... Вы так пишите, как будто я чем-то вам обязан. Проект некоммерческий. Держится только за счет энтузиазма. Денег, которые приносит реклама, едва хватает на поддержку сайта в Интернете. Я тоже человек и мне нужно содержать себя и свою семью. Я пишу то, что успеваю и тогда, когда успеваю. Подготовка одной большой статьи может требовать до нескольких дней времени, которое не всегда есть в наличии.
интересно, каких проблем? обычно, описание товарных категорий нужно для сео, т.к. пипл смотрят товары и редко читают описания. тем более длинные описания в конце категорий. да, можно описание поставить/перенести вниз, можно вообще им не заморачиваться. т.к. магазины по сео, продвигаются не категориями (это почти не целеесообразно и слишком хлопотно), а товарами и соответственно более актуально, это описание товаров и шаманство там! скажем описание товаров с помощью шорткодов и др инструментов, сильно облегчающих жизнь или создание полноценных лендингов при минимуме усилий - крайне полезно и актуально всем! идею новой статьи я предложил
//Проект некоммерческий. Держится только за счет энтузиазма.
мы, подписчики, в курсе
но мы, подписчики, требуем новости и интересности!
//Денег, которые приносит реклама, едва хватает на поддержку сайта в Интернете.
но тут все взаимосвязано - чем больше интересной инфы, тем больше посетителей и тем выше доходы от рекламы и баннеров, и, соответственно, в обратную сторону...
//Я тоже человек и мне нужно содержать себя и свою семью.
не в обиду, но ~ 500р. вполне можно выделить на карманные расходы на этот проект (сайт) в месяц.
в эти ~500р. я подразумеваю vps.
и, вполне можно, если Вы занимаетесь сайтами, раз в месяцок, выкладывать по статейке
Так же хочу высказать справедливое возмущение в адрес некоторых горе-комментаторов. Какие бы добрые дела человек не делал обязательно находятся те кому это не по душе. Вот из-за таких задротов опускаются руки п ропадает желание что-либо делать во благо. Как говорила старуха Шепокляк: "Кто людям помогает тот время тартит зря"
Вам, товарищи, написали, разжевали, в рот положили, и, когда Вы и с этим умудрились накосячить еще и путем, прям, телепатии, сказали где что вы криво накодили. А вам нэ такэ... у-у-у, блин, аж зло берет.
Автору ще раз огромное спасибо и РЕСПЕКТ!, сорри за лирическое отступление, но промолчать не смог
Описания категории у меня выводяться на главной странице 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 знаков. Да и ключевики надо распределить по страницам а не свалить все в одну кучу... Очень буду благодарен за ответ) и спасибо огромное за Вашу отзывчивость и помощь!
Если нужно скрыть описание во всех категориях, то переопределяете макет категории в шаблон Joomla, находите в нем переменную описания категории и удаляете ее из макета.
VM 3.2.0
Все заработало! Спасибо Автору.
Немного не разобрался - в редакторе описания категорий VM не оказалось кнопки "Подробнее" (ошибочно воспользовался кнопкой "Разрыв страницы"), хотя в редакторе материалов она есть.
Скопировал код разделителя "Подробнее" из текста материала, вставил в текст описания категории:
Не забудьте переопределить макет в шаблон Joomla перед правками.
Вот открыл я с умным видом этот blog.php, а тут как-то все по другому. Может напишите статью "Как разделить описание в категории Joomla 3 на ДО и ПОСЛЕ"?
там путь к файлу совпадает, а вот внутри:
if ( $this->t['main_description'] != '') {
echo ''. $this->t['main_description']. '';
$this->category->category_description
в нем будет:
$this->t['main_description']