Для популярного компонента интернет-магазина JoomShopping существует аддон Second Description For Product. Этот аддон добавляет поле для второго описания в карточке товара. Однако, технически текст второго описания заносится в ту же ячейку таблицы базы данных, что и первое описание. Между ними вставляется текстовый разделитель {second_description}
, по которому плагин "разрезает" одно общее описание продукта на два.
Аддон состоит из двух плагинов: один для админки, второй для фронтенда.
Проблема заключалась в том, что если включен плагин second_description_for_product
группы jshoppingproducts
, то в описании продукта переставали работать контент-плагины Joomla, несмотря даже на включенную настройку "использовать плагины в описании продукта". Либо второе описание, либо контент-плагины. Проблема не уникальна, с ней сталкивались многие, например.
Решение проблемы
Код плагина plugins/jshoppingproducts/second_description_for_product/second_description_for_product.php
<?php defined('_JEXEC') or die('Restricted access'); class plgJshoppingProductsSecond_description_for_product extends JPlugin { var $separator = "{second_description}"; function __construct(&$subject, $config){ parent::__construct($subject, $config); } function onBeforeDisplayProduct(&$product, &$view, &$product_images, &$product_videos, &$product_demofiles) { $lang = JSFactory::getLang(); $description = $lang->get('description'); $second_description = 'second_'.$description; $tmp = JHtml::_("content.prepare", $product->description); $tmp = explode($this->separator, $tmp); if (isset($tmp[1])) { $product->description = $tmp[0]; $product->second_description = $tmp[1]; if (!isset($view->_tmp_product_html_after_buttons)) $view->_tmp_product_html_after_buttons = ''; $view->_tmp_product_html_after_buttons .= '<div class="second_description">'.$product->second_description.'</div>'; } } }
Нужно перед разделением одного общего описания на два добавить обработку контентными плагинами. Для этого нужно вставить выделенную зеленым строку в код плагина после строки 15
. В таком случае разделяться на первое и второе описание будет уже обработанный плагинами контент.