Никогда не работал с VM2 (не видел смысла в переходе на него с vm1.1.X, но видимо, ошибался...). Во всяком случае, такая необходимость у меня возникла и пришлось разбираться в его структуре. Соответственно понадобились и новинки и хиты и т.п...
Посмотрел реализацию, предложенную здесь - мне кажется ее можно существенно улучшить.
Во-первых: вместо поля (
varchar), куда необходимо вручную вписывать -
новинка, хит и т.п. сделать
чекбоксы (согласитесь, что это удобнее).
Для этого в нужное место
administrator\components\com_virtuemart\views\product\tmpl\product_edit_information.php вставить код, аналогичный тому, кот. используется для
product_special (рекомендуемые товары) и вставить его перед кодом, который отвечает за вывод артикула:
Соответсвенно добавить языковые значения в ланг файл
administrator\language\ru-RU\ru-RU.com_virtuemart.ini:
COM_VIRTUEMART_PRODUCT_FORM_NEW="Новинка"
COM_VIRTUEMART_PRODUCT_FORM_HITS="Лидер продаж"(названия переменных взял свои - ваши могут быть любыми другими. Думаю, подставить иные - не проблема).в файле
administrator\components\com_virtuemart\helpers\shopfunctions.php ($filterArray = array('product_name', '`p`.created_on', '`p`.product_sku', 'product_s_desc', и далее...) добавляем в запрос:
product_is_new и
product_is_leaderВ базе данных - соответственно два новых поля:
product_is_new и
product_is_leader (
tinyint со значением длины 1) а не
varchar!Как это сделать, думаю писать не нужно.
Как вставить код для отображения png(шек) на фронте - уже все описывалось, повторяться не стоит.
А теперь самое интересное... Залезать каждый раз в карточку товара, чтобы включить или выключить картинку - уж больно гемморойная задача.
В списке товаров категории в админке есть возможность включения и отключения рекомендуемых товаров. Тоже самое можно сделать и новинками, хитами и пр.
Для этого в файле:
administrator\components\com_virtuemart\models\product.phpнайти строку:
$this->setToggleName('product_special');и после нее добавить:
$this->setToggleName('product_is_new');
$this->setToggleName('product_is_leader');В файле:
administrator\components\com_virtuemart\tables\products.phpв блоке кода, начинающемся с:
class TableProducts extends VmTable {где-то после
var $product_sku= null;добавить две новые записи:
var $product_is_new = '';
var $product_is_leader = '';В файле:
administrator\components\com_virtuemart\views\product\tmpl\default.phpнайти блок кода:
$is_featured = $this->toggle($product->product_special, $i, 'toggle.product_special');и перед ним добавить:
$is_new= $this->toggle($product->product_is_new, $i, 'toggle.product_is_new');
$is_leader = $this->toggle($product->product_is_leader, $i, 'toggle.product_is_leader');В этом же файле ниже найти:
<td align="center" ><?php echo $is_featured; ?></td>и перед ним также добавить:
<td align="center" ><?php echo $is_new; ?></td>
<td align="center" ><?php echo $is_leader; ?></td>Вроде все, если что-то не забыл...
Кстати, желательно задействовать для показа этих значений и модуль (mod_virtuemart_product) и добавить в него новые маркеры для показа.
Надо бы тоже написать, но может уже кто-то уже выложил - я не нашел пока... Если это нужно - можно добавить.
PS, на фронте (productdetails/default.php) вывод лучше все-таки сделать так:
в category/default.php: