Не работают контент-плагины Joomla с аддоном Second description for product JoomShoping

Для популярного компонента интернет-магазина 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>';
		}
	}
	
}

Нужно перед разделением одного общего описания на два добавить обработку контентными плагинами. Обратите внимание на строку:

$tmp = JHtml::_("content.prepare", $product->description);
Её нужно добавить в код плагина так, как указано выше в примере кода. В таком случае разделяться на первое и второе описание будет уже обработанный плагинами контент.

Толкачев Сергей Юрьевич
Толкачев Сергей Юрьевич

Joomla-разработчик. Контрибьютер ядра Joomla. Один из ведущих Telegram-канала русскоязычного Joomla-сообщества JoomlaFeed, один из модераторов чата русскоязычного Joomla-сообщества. Мои расширения в официальном маркетплейсе расширений Joomla - Joomla Extensions Directory. Имею публикации в официальном журнале международного Joomla-сообщества - Joomla Community Magazine.

Муж. Отец 3 детей.

Россия, Саратов.

Расширения Joomla WebTolk

89 Всего расширений
11 Категорий
395 Выпущено версий
385381 Всего скачиваний
Корзина
Корзина пуста