Помощь Virtuemart: вывести производителя в категории

Статус
В этой теме нельзя размещать новые ответы.

RedRabbit

Мой дом здесь!
Регистрация
11 Июл 2008
Сообщения
607
Реакции
256
Хочу вывести в категории товаров
manufacturer_name
product_packaging
product_unit

Не выводится:(
В настрйках вирта:
Product List Style - Flat Product List (fixed to 1 product per row, using a table)
brows_x игонорируется и выводится
Код:
omponents\com_virtuemart\themes\default\templates\browse\includes\browse_layouttable.tpl.php 
components\com_virtuemart\themes\default\templates\browse\includes\browse_listtable.tpl.php
Правлю browse_listtable.tpl.php
Код:
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
mm_showMyFileName(__FILE__); ?>
<?php echo $buttons_header // The PDF, Email and Print buttons ?>
<?php echo $browsepage_header // The heading, the category description ?>
<?php echo $parameter_form // The Parameter search form ?>
<?php echo $orderby_form // The sort-by, order-by form PLUS top page navigation ?>
<?php
$data =array(); // Holds the rows of products
$i = 1; $row = 0; // Counters
// Table header
$tableheader[] = 'Код';
$tableheader[] = 'Номенклатура';
$tableheader[] = 'Артикул';
$tableheader[] = 'Изготовитель';
$tableheader[] = 'Тарное место';
$tableheader[] = 'Ед.';
$tableheader[] = 'Цена';
// Creates a new HTML_Table object that will help us
// to build a table holding all the products
$table = new HTML_Table('width="100%"');
$table->addRow( $tableheader, 'class="sectiontableheader"', 'th', true );
foreach( $products as $product ) {
        foreach( $product as $attr => $val ) {
            // Using this we make all the variables available in the template
            // translated example: $this->set( 'product_name', $product_name );
            $this->set( $attr, $val );
            $this->set( 'manufacturer_name', $manufacturer_name );
        }
        $data[$row][] = $product['product_sku'];
        $data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'.$product['product_name'].'</a>';
        $data[$row][] = $product['product_s_desc'];
        //$data[$row][] = $product['manufacturer_name'];
        [B]if( $this->get_cfg('manufacturer_name', 1)) {
            $data[$row][] = $product['manufacturer_name'];
        }[/B]
        //$data[$row][] = $product['manufacturer_name'];
        $data[$row][] = $product['product_packaging'];
        $data[$row][] = $product['product_unit'];
        $data[$row][] = $product['product_price'];
        $data[$row][] = $product['form_addtocart'];
        $row++;
}
// Loop through each row and build the table
foreach($data as $key => $value) {
    $table->addRow( $data[$key], 'class="sectiontableentry'.$i.'"', 'td', true );
    $i = $i == 1 ? 2 : 1;
}
// Display the table
echo $table->toHtml();
?>
<br class="clr" /><br />
<?php echo $browsepage_footer ?>
И так и сяк пробывал, в чем проблема??? Помогите пожалуйста!!!
Так ... с производителем разобрался

А как пилить product_packaging product_unit???????????
Пробую править shop.browse.php

Ставлю, опять не работает
Код:
      // Add-to-Cart Button
        // Вывод производителя в категории
        $manufacturer_name = $ps_product->get_mf_name($db_browse->f('product_id'));
        $products[$i]['manufacturer_name'] = $manufacturer_name;
        //конец вывода производителя
        //Поробуем вывести количество товаров в упаковке
        //$packaging =  $ps_product->get_mf_name($db_browse->f("product_packaging") & 0xFFFF);
        //$packaging =  $ps_product->get_mf_name($db_browse->f("product_packaging") & 0xFFFF);
        //$products[$i]['product_packaging'] = $packaging;
        //$product_packaging = $db_browse->f("product_packaging") & 0xFFFF;
        $product_packaging = $dbp->f("product_packaging") & 0xFFFF;
        $products[$i]['product_packaging'] = $product_packaging;
        //Поробуем вывести единицу измерения количества товара в упаковке
        $product_unit = $db_browse->f("product_unit");
        $product_unit = $dbp->f("product_unit");
        $products[$i]['product_unit'] = $product_unit;
Все разобрался!!!
1) В файле \com_VirtueMart\html\shop_browse_queries.php
Ищем строку (у меня 37) с описание всех доступных полей для запроса.
$fieldnames = "`product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,`#__{vm}_category`.`category_id`,...
Добавляем туда `product_packaging` и product_unit
Код:
$fieldnames = "`#__{vm}_product`.`product_id`, `product_name`, `products_per_row`, `category_browsepage`, `category_flypage`, `#__{vm}_category`.`category_id`, `product_full_image`, `product_thumb_image`, `product_s_desc`, `product_parent_id`, `product_publish`, `product_in_stock`, `product_sku`, `product_url`, `product_weight`, `product_weight_uom`, `product_length`, `product_width`, `product_height`, `product_lwh_uom`, `product_available_date`, `product_availability`, `#__{vm}_product`.`mdate`, `#__{vm}_product`.`cdate`, `#__{vm}_product`.`product_packaging`, `#__{vm}_product`.`product_unit`";

2)в файл \components\com_VirtueMart\html\shop.browse.php в нужном месте добавляем строки:

Код:
		//START HACK
		// Вывод производителя в категории
		$manufacturer_name = $ps_product->get_mf_name($db_browse->f('product_id'));
		$products[$i]['manufacturer_name'] = $manufacturer_name;
		//конец вывода производителя
		
		//Поробуем вывести количество товаров в упаковке
		$products[$i]['product_packaging'] = $db_browse->f("product_packaging") & 0xFFFF;
		$tpl->set( 'product_packaging', $db_browse->f("product_packaging")& 0xFFFF); 
		
		//Поробуем вывести единицу измерения количества товара в упаковке
		$products[$i]['product_unit'] = $db_browse->f("product_unit");
		$tpl->set( 'product_unit', $db_browse->f("product_unit")); 
		//END HACK
 
Количество товаров в упаковке выводит.
Как доработать хак, чтобы вывести Количество товаров в коробке?
 
Количество товаров в упаковке выводит.
Как доработать хак, чтобы вывести Количество товаров в коробке?
Спасибо.
Наверно так
1) В файле \com_VirtueMart\html\shop_browse_queries.php
Ищем строку (у меня 37) с описание всех доступных полей для запроса.
Код:
$fieldnames = "`product_name`,`products_per_row`,`category_brows epage`,`category_flypage`,`#__{vm}_category`.`cate gory_id`,...
Добавляем туда product_box
2)в файл \components\com_VirtueMart\html\shop.browse.php в нужном месте добавляем строки после // Add-to-Cart Button:
//Поробуем вывести количество товаров в коробке
Код:
		$products[$i]['product_box'] = $db_browse->f("product_box"));
		$tpl->set( 'product_box', $db_browse->f("product_box"));
 
Сейчас попробую
Во flypage.tpl.php
PHP:
<?php echo $product_packaging?>
выводит сразу оба значения, а как в категории теперь выводить эту $box?
Какая заглушка должна быть если получится.

Кстати, слово шт. к "в упаковке" не добавилось, а ведь единицы запрашивались. Пристыкую просто шт.

PS. Попробовал
После добавления запроса (именно запроса, проверял пошагово)
`#__{vm}_product`.`product_box`
Вот, все, что добавил
`#__{vm}_product`.`product_packaging`, `#__{vm}_product`.`product_box`, `#__{vm}_product`.`product_unit`
Товары в категории перестали выводиться!
Только название категории.

Синтаксис error – была лишняя скобка, убрал.
//Поробуем вывести количество товаров в коробке
$products[$i]['product_box'] = $db_browse->f("product_box");
$tpl->set( 'product_box', $db_browse->f("product_box"));
Не нужно ли добавить это - & 0xFFFF
 
Сейчас попробую
Во flypage.tpl.php
PHP:
<?php echo $product_packaging?>
выводит сразу оба значения, а как в категории теперь выводить эту $box?
Какая заглушка должна быть если получится.
Кстати, слово шт. к "в упаковке" не добавилось, а ведь единицы запрашивались. Пристыкую просто шт.
Спасибо.
А так?
PHP:
<?php echo $product_box ?>
Код:
`#__{vm}_product`.`product_box`
Проверь еще раз синтаксис. Может она уже есть в списке. Если нет, удаляй.
Не нужно ли добавить это - & 0xFFFF
Да хз. Возможно. Добавь и посмотри. По идее нет, не нужна.
 
Этот код:
$manufacturer_name = $ps_product->get_mf_name($db_browse->f('product_id'));
$products[$i]['manufacturer_name'] = $manufacturer_name;
Дважды выводит производителя, первый раз со ссылкой на главную - второй раз без ссылки. Подскажите, пожалуйста, как поправить код?

А Вы перенесите вот эту строчку $products[$i]['manufacturer_name'] = $manufacturer_name; в самый конец, перед $products[$i]['product_price'] = $product_price;

мне помогло, теперь производитель выводится только в описании и ничего лишнего
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху