SiteIS

Virtuemart - мощный компонент для создания электронного магазина!

- Бесплатное решение для интернет-магазина под управлением Joomla

- Огромное количество дополнительных расширений

- Неограниченная вложенность категорий

- Возможность создания шаблонов импорта/экспорта для различных целей

Virtuemart: меняем отображение стандартных модулей

Предположим, требуется несколько раз вывести на страницу модуль mod_virtuemart_latestprod.php, который показывает последние добавленные в магазин товары.

Шаг первый: - Публикуем модули в нужных позициях, указываем в настройках стили отображения (для примера установим стиль для изменяемого модуля horizontal).

Шаг второй: - Находим файл модуля (ваш сайт/modules/mod_virtuemart_latestprod/mod_virtuemart_latestprod.php). Открываем в блокноте и ищем следующий фрагмент кода:

elseif( $display_style== "horizontal" ) { // стиль отображения, указанный в настройках модуля
...
$ps_product->show_snapshot($db->f("product_sku"), $show_price, $show_addtocart);
...
}

Меняем show_snapshot на, предположим show_snapshot2. Должно получиться так:

$ps_product->show_snapshot2($db->f("product_sku"), $show_price, $show_addtocart);

Шаг третий: - находим файл ps_product.php (ваш сайт/administrator/components/com_virtuemart/classes/ps_product.php), открываем в блокноте. Ищем фрагмент кода:

function show_snapshot($product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {
	echo $this->product_snapshot( $product_sku, $show_price, $show_addtocart, $show_product_name );
}

 

Копируем ее и вставляем ниже. Скопированной функции даем название show_snapshot2. Строку echo $this->product_snapshot изменяем на echo $this->product_snapshot2 Должно получиться так:

function show_snapshot($product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {
	echo $this->product_snapshot( $product_sku, $show_price, $show_addtocart, $show_product_name );
}
function show_snapshot2($product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {
	echo $this->product_snapshot2( $product_sku, $show_price, $show_addtocart, $show_product_name );
}

Шаг четвертый: - В этом же файле ищем функцию function product_snapshot (живет немного ниже первой) и делаем ее копию. Присваиваем копии имя function product_snapshot2. В этой же копии находим строку return $tpl->fetch( 'common/productsnapshot.tpl.php'); (в самом конце функции) и меняем на return $tpl->fetch( 'common/productsnapshot.tpl2.php');

Шаг пятый: - находим файл productsnapshot.tpl.php (ваш сайт/components/com_virtuemart/themes/default/templates/common/productsnapshot.tpl.php), делаем его копию, даем копии имя productsnapshot.tpl2.php. Заливаем копию в ту же папку, где находится оригинал.

Все, теперь модуль со стилем horizontal будет использовать для вывода содержимого шаблон productsnapshot.tpl2.php Далее тусуем элементы, как нужно по дизайну и радуемся жизни.

Метод проверялся на Virtuemart 1.1.9

Автор: Super User

Комментарии  

 
0 # Виталий Солонин 23.01.2013 11:27
Зачем такие сложности? делаем копию модуля, и размещаем второй модуль в любую другую позицию... у меня без проблем все получилось без хаков лишних http://www.rostov-optik.ru/ VM1.1.9
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Admin 23.01.2013 13:40
Такие сложности потребуются, если вам понадобится отобразить содержимое совершенно по другому (поменять стиль отображения, порядок вывода, компоновку элементов). В таких ситуациях сложно будет обойтись только присвоением класса модулю.
Ответить | Ответить с цитатой | Цитировать