Начнем с того, что я начал как-то поиски модуля, плагина или компонента, который сможет реализовать хотя бы элементарный функционал "Избранного" для посетителей на сайте под управлением Virtuemart 2.x. К моему сожалению я нашел только платные решения, которых не было на варезниках или просто в открытом доступе. Вот тогда-то я и решился на то, что бы написать самому такой функционал, а конкретнее:

а) Добавление в некое пространство (избранное) товара без перезагрузки страницы. Другими словами просто отметить товар, как избранное и все.
б) Посмотреть товары, которые уже есть в "Избранном"
в) Возможность добавлять в "Избранное" для всех пользователей, а не только для зарегистрированных

Все это я решил реализовать через компонент для Joomla 2.5.x. Это мой первый компонент, поэтому прошу в меня не бросать камни по внутреннему исполнению компонента! =) Пишите в комментариях Ваши мнения по этому компоненту.

Пример использования компонента Вы можете посмотреть на моем демонстрационном сайте.
Ссылка на актуальную версию компонента (vm_favorite v.1.1.2)
Скачать компонент "Избранное" для Virtuemart 2.x.

Инструкция по настройке компонента:

1) Для корректной работы компонента понадобится добавить кнопку для добавления товара в избранное:

а) Для отображения кнопки в карточке товара открываем файл
/templates/Ваш_шаблон/html/com_virtuemart/productdetails/default.php
если нет такого файла, то открываем другой файл
/components/com_virtuemart/views/productdetails/tmpl/default.php
и добавляем в самом начале файла следующие строчки:

 

echo '<script type="text/javascript" src="'.$_SERVER['HOST'].'/components/com_vm_favorite/script/jquery-2.0.2.min.js"></script>'; //Закомментируйте эту строчку, если эта библиотека конфликтует с другим jQuery
echo '<script type="text/javascript" src="'.$_SERVER['HOST'].'/components/com_vm_favorite/script/jquery.cookie.js"></script>';
echo '<link rel="stylesheet" href="'.$_SERVER['HOST'].'/components/com_vm_favorite/css/heart.css" type="text/css">';

 

Таким образом мы подгрузили необходимые скрипты для кнопки избранного, но что бы отображалась сама кнопка надо добавить код ниже туда, где Вы хотели бы видеть кнопку:

 

<!--Начало кнопки избранного-->
<?php $productId = $this->product->virtuemart_product_id; // при необходимости поменять на переменную id продукта
include ($_SERVER['DOCUMENT_ROOT'].'/components/com_vm_favorite/script/heart.php'); ?>
<!--Конец кнопки избранного-->

 

б) Для отображения кнопки в просмотре категории открываем файл
/templates/Ваш_шаблон/html/com_virtuemart/category/default.php
если нет такого файла, то открываем другой файл
/components/com_virtuemart/views/category/tmpl/default.php
и добавляем в самом начале файла следующие строчки:

echo '<script type="text/javascript" src="'.$_SERVER['HOST'].'/components/com_vm_favorite/script/jquery-2.0.2.min.js"></script>'; //Закомментируйте эту строчку, если эта библиотека конфликтует с другим jQuery
echo '<script type="text/javascript" src="'.$_SERVER['HOST'].'/components/com_vm_favorite/script/jquery.cookie.js"></script>';
echo '<link rel="stylesheet" href="'.$_SERVER['HOST'].'/components/com_vm_favorite/css/heart.css" type="text/css">';

Таким образом мы подгрузили необходимые скрипты для кнопки избранного, но что бы отображалась сама кнопка надо добавить код ниже туда, где Вы хотели бы видеть кнопку:

ВАЖНО! Код ниже надо добавлять ниже этой строчки:

foreach ($this->products as $product) {

и до закрытия этого процесса (примерно такая строчка):

} // end of foreach ( $this->products as $product )

т.е. код должен быть в промежутке между этими двумя строчками!

Сам код:

<!--Начало кнопки избранного-->
<?php $productId = $product->virtuemart_product_id; // при необходимости поменять на переменную id продукта
include ($_SERVER['DOCUMENT_ROOT'].'/components/com_vm_favorite/script/heart.php'); ?>
<!--Конец кнопки избранного-->