марта
17

Virtuemart: выводим описание производителя на странице товара

Сегодня столкнемся с нетривиальной задачей. Необходимо получить доступ к описанию производителя со страницы вывода товара (flypage).

Готовы приступить к решению? Я – да

Как обычно, определяем файлы Virtuemart для правки:

administrator/components/com_virtuemart/classes/ps_product. – класс продукта Virtuemart
administrator/components/com_virtuemart//shop.product_details.php – функционал страницы товара Virtuemart
components/com_virtuemart/themes/default/templates/product_details/flypage.tpl.php страницы товара Virtuemart

Задача разделяется на три этапа:

  1. Сделать запрос к БД на получение данных об описании производителя в Virtuemart
  2. Зарегистрировать переменную $manufacturer_desc
  3. Вывести переменную $manufacturer_desc на странице описания товара Virtuemart

Начнем, пожалуй.

Этап 1. Добавляем функцию в класс товара Virtuemart

Ищем описание функции

1
function get_mf_name($product_id) {

и после закрывающей скобки добавляем новую функцию, которая будет отвечать за получение описания производителя Virtuemart

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function get_mf_desc($product_id) {
        $db = new ps_DB;
        $q = "SELECT mf_desc,#__{vm}_manufacturer.manufacturer_id FROM #__{vm}_product_mf_xref,#__{vm}_manufacturer ";
        $q .= "WHERE product_id='$product_id' ";
        $q .= "AND #__{vm}_manufacturer.manufacturer_id=#__{vm}_product_mf_xref.manufacturer_id";
        $db->query($q);
        $db->next_record();
        if ($db->f("mf_desc")) {
            return $db->f("mf_desc");
        }
        else {
            return "";
        }
    }

Этап 2. Регистрируем переменную на странице описания товара Virtuemart

Ищем код (строка 422)

1
$tpl->set( "manufacturer_link", $manufacturer_link );

Добавляем ниже

1
$tpl->set( "manufacturer_desc", $manufacturer_desc );

Ищем код (строка 257)

1
$manufacturer_name = $ps_product->get_mf_name($product_id);

Добавляем ниже

1
$manufacturer_desc = $ps_product->get_mf_desc($product_id);

Переменная зарегистрирована и доступна к выводу на странице описания товара Virtuemart

Этап 3. Вывод переменной на странице описания товара Virtuemart

В нужном месте страницы подробного описания товара Virtuemart вставляем код

1
<?php echo $manufacturer_desc; ?>

.

Всё. Задача решена!

14 коммент. к записи “Virtuemart: выводим описание производителя на странице товара”

  • Александр 18 марта 2010 - 11:11

    Здравствуйте, не смогли бы объяснить подробно как в категории товаров вывести product_id. Почемуто в карточке товара этот параметр выводится корректно, а вот в категории выводится числовое значение, причем одно и тоже для всех товаров.
    Спасибо.

  • K_E_V_in 18 марта 2010 - 11:44

    product_id – и есть число.
    Читаем этот пост: http://webkev.com/2010/03/04/polnoe-opisanie-tovara-v-kategorii-virtuemart/ и делаем аналогично

  • Александр 19 марта 2010 - 15:53

    спасибо. разобрался.

  • разработчик сайтов на joomla 27 июня 2010 - 19:39

    спасибо огромное
    Virtuemart не всегда использую, поэтому не сразу все нахочу что нужно

  • Игорь 21 октября 2010 - 23:34

    Здравствуйте, не смогли бы объяснить подробно как вывести на страницу описания товара информацию о продавце, именно не ссылку а данные о продавце – Имя, контактная инфа и т.д.

    спасибо

  • Игорь 21 октября 2010 - 23:36

    ссылку – имел в виду -

    1
    <?php echo $vendor_link ?>
  • crusat 24 февраля 2011 - 19:42

    У меня не сработало :( джумла 1.5.9, виртуемарт 1.1.6. В причинах разобраться пока не получается – такое ощущение, что не происходит запроса к переменной и в итоге $manufacturer_desc всегда пустая… Может кто встречался?

  • Владимир 20 апреля 2011 - 8:40

    Спасибо большое, ещё бы на старнице каткгории это вывести :(

  • Александр 24 мая 2011 - 22:13

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

  • Artem 14 января 2012 - 15:29

    А как добавить картинку к производителю?

  • Silvershake 29 февраля 2012 - 2:39

    У меня один, но очень наболевший вопрос. А как можно вывести описание в самом производителе? У меня в админке есть поле для внесения описания, а по факту ничего не отображается. Весь инет перерыла в поисках ответа… Заранее благодарю.

  • K_E_V_in 1 марта 2012 - 12:38

    если вы не меняли исходные коды, то всё должно отображаться

  • Silvershake 1 марта 2012 - 12:49

    А если меняли, то как теперь можно что-то сделать?

  • K_E_V_in 1 марта 2012 - 22:21

    откатить к оригиналу и начать всё сначала, экстрасенсов нет :)

Прокомментировать

Рубрики

Облако меток

На волнах твиттера

В прямом эфире