Virtuemart: выводим характеристики дочерних товаров
Если вы читаете эту запись, то наверняка знаете, что такое Virtuemart и что такое дочерние товары. Если вдруг забыли, для чего они нужны, то освежите это в своей памяти. Не буду останавливаться на этом. Сейчас рассмотрим более сложную тему, а именно вывод характеристик дочерних товаров.
Не секрет, что стандартный вывод параметров очень куцый: название, цена. Максимум короткое описание. А если мы захотим вывести картинку, да ещё произвольного размера, да ещё и длину-ширину-высоту, то что делать? Сдаваться? Отнюдь! Будем пилить Virtuemart, что же ещё остается-то?
Для начала определим файлы, с которыми будем работать. Их два:
components/com_virtuemart/themes/default/templates/product_details/includes/addtocart_list_single.tpl.php – он отвечает за вывод всех переменных дочерних товаров на сайте
administrator/components/com_virtuemart/classes/ps_product_attribute.php – тут производится подготовка всех необходимых переменных
В качестве примера “приготовим” переменную, которая отвечает за вывод длины товара.
Ищем в ps_product_attribute.php функцию list_attribute_list (459 строка).
Для начала нам необходимо вытащить эту переменную из базы. Ищем запросы и добавляем туда поле product_width, как показано ниже. Теперь мы вытащили из базы Virtuemart одно из свойств дочернего товара:
1 2 3 4 5 | if( $pp ) { $q = "SELECT product_id,product_name,product_parent_id,product_sku,product_width, product_in_stock,product_full_image,product_thumb_image FROM #__{vm}_product WHERE product_publish='Y' AND product_parent_id='$product_id' ORDER BY product_id " ; } else { $q = "SELECT product_id,product_name,product_parent_id,product_sku,product_width,product_in_stock,product_full_image,product_thumb_image FROM #__{vm}_product WHERE product_publish='Y' AND product_id='$product_id' ORDER BY product_id " ; } |
Далее ищем такой код (596 строка):
1 | $productArray = get_object_vars( $productData ) ; |
Ниже вставляем
1 2 | $product_width = $db->f("product_width"); $productArray["product_width"] = $product_width; |
Почти всё, осталось только создать переменную для фронтенда. Ищем код (626 строка):
1 | $product_image = $tpl->vmBuildFullImageLink( $productArray ); |
И вставляем ниже
1 | $products[$ci]['product_width'] = $product_width; |
Теперь у нас готова переменная для вывода на сайте и никто нам не запрещает это сделать. Берем файл addtocart_list_single.tpl.php и в нужном месте вставляем код вывода длины дочернего товара:
1 | echo $product['product_width']; |
Вот, в принципе, и всё. Аналогично можно вывести любые другие свойства дочерних товаров в Virtuemart.
- Думаете, что сделать сайт самому нереально? Напрасно! Если есть желание, то это можно осуществить!
- Знаете, где находится гостиница Тамань? Мне рекомендовали там отдохнуть. Вот я и в раздумьях.

июля 19, 2010 at 7:08
всё да не всё
$product_description не встает так легко