0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 4470 Просмотров
*

isilendil

  • Новичок
  • 7
  • 0 / 0
Добрый день

Господа Эксперты, подскажите плиз, как можно сделать, чтобы сопутствующие товары приходилось не самолично забивать к каждому товару, а они бы просто брались из категории в который находится просматриваемых товар. Просто на мои начальные 1500 позиций уйдет прилично времени на забивание....

Джумла 1.5.12. ВМ 1.1.3

Заранее огромное спасибо!
*

DarkMaster13

  • Захожу иногда
  • 77
  • 12 / 0
Re: Сопутсвующие товары из категории
« Ответ #1 : 19.11.2009, 11:24:54 »
Ну... можно.
находим файл \components\com_virtuemart\themes\default\templates\common\relatedProducts.tpl.php

немного программируем... типа так
Код
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); ?>

<hr/>

<!-- <h3><?php /*echo $VM_LANG->_('PHPSHOP_RELATED_PRODUCTS_HEADING') */?></h3> --> <!-- Заголовок мне не нужен -->
 
<table width="100%" align="center">

    <?php
$category_id = vmGet($_REQUEST, "category_id", null); /* Получаем категорию в которой находится товар */
/*Отбираем опубликованные продукты из данной категории*/
$q='SELECT product.`product_id` , `product_name`';
$q=$q.' FROM `#__{vm}_product` AS product, `#__{vm}_product_category_xref` AS category';
$q=$q.' WHERE product.`product_id` = category.`product_id`';
$q=$q.' AND category.category_id ='.$category_id;
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';
$db = new ps_DB;
$db->query($q);
$myres = $db->record;
foreach ($myres as $rplist){
$url='index.php?page=shop.product_details&flypage=flypage.tpl&product_id='.$rplist->product_id.'&category_id='.$category_id.'&option=com_virtuemart&Itemid=1';
echo '<tr><td>';
echo '<div class="rplink">';
$rplink='<a href="'.$url.'">'.$rplist->product_name.'</a>';
echo '</div>';
echo $rplink;
echo '</td><tr>';
}
?>
</table>

Что в итоге? Ничего не видно...  >:(
Но это поправимо
находим файл \administrator\components\com_virtuemart\html\shop.product_details.php
в нем стока
Код
if( $db->num_rows() > 0 ) {
(у меня она 94-я) и меняем на
Код
if( $db->num_rows() > -1 ) {

Мне спасибо (спасибо слать сюда Z175800710290), если что найти меня можно тут http://coder.cv.ua/
Удачи!  ^-^
Копать отсюда и до обеда
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Re: Сопутсвующие товары из категории
« Ответ #2 : 05.09.2010, 15:39:21 »
А как такое сделать для VM 1.1.4 ?

выдает -
Warning: Invalid argument supplied for foreach() in xxxx\components\com_virtuemart\themes\climatteh\templates\common\relatedProducts.tpl.php on line 21
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Re: Сопутсвующие товары из категории
« Ответ #4 : 23.09.2010, 12:51:57 »
Вообщем, вот еще одно решение - забубенил сам - основывался на указанном коде выше.

Вводная: данный хак выводит список Сопутствующих товаров, выбранных из категории, в которой лежит выбранный товар.
Решение основано на написанном выше, НО! есть несколько отличий:
1. В файле \administrator\components\com_virtuemart\html\shop.product_details.php Ничего не меняем!!
2. В файле \components\com_virtuemart\themes\default\templates\common\relatedProducts.tpl.php  пишем это:
 
Цитировать
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); ?>

<hr/>

<h3><?php echo $VM_LANG->_('PHPSHOP_RELATED_PRODUCTS_HEADING')?></h3>
 
<table width="100%" align="center">
    <tr>
    <?php
    while( $products->next_record() ) { ?>
          <td valign="top">
              <?php echo $ps_product->product_snapshot2( $products->f('product_sku') )?>
          </td>
    <?php
    }
    ?>
    </tr>
</table>

3. В файле \administrator\components\com_virtuemart\classes\ps_product.php добавляем новую функцию :
Цитировать
function product_snapshot2( $product_sku, $show_price=true, $show_addtocart=true, $show_product_name = true ) {

         global $sess, $mm_action_url;
        
 $category_id =  vmGet($_REQUEST, "category_id", null);  /* Получаем категорию в которой находится товар */
    /*Отбираем опубликованные продукты из данной категории*/
    $q='SELECT product.`product_id` , `product_name`';
    $q=$q.' FROM `#__{vm}_product` AS product, `#__{vm}_product_category_xref` AS category';
    $q=$q.' WHERE product.`product_id` = category.`product_id`';
    $q=$q.' AND category.category_id ='.$category_id;
    $q=$q.' AND `product_publish` = "Y"';
    $q=$q.' LIMIT 0 , 30';
    
    $db = new ps_DB;
$db->query( $q );
            
         require_once(CLASSPATH.'ps_product_category.php');
         $ps_product_category = new ps_product_category;

        /* $q = "SELECT product_id, product_name, product_parent_id, product_thumb_image FROM #__{vm}_product WHERE product_sku='$product_sku'"; */
        

$myres = $db->record;

    foreach ($myres as $rplist){
 // if ($myres->next_record()) {
        
            $product_id = $db->f("product_id" );
            $tpl = new $GLOBALS['VM_THEMECLASS']();
            
            $cid = $ps_product_category->get_cid( $product_id );

            $tpl->set( 'product_id', $product_id);
            $tpl->set( 'product_name', $db->f("product_name") );
            $tpl->set( 'show_product_name', $show_product_name );
            
            if ($db->f("product_parent_id")) {
                $url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_parent_id"));
                $url .= "&product_id=" . $db->f("product_parent_id");
            } else {
                $url = "?page=shop.product_details&category_id=$cid&flypage=".$this->get_flypage($db->f("product_id"));
                $url .= "&product_id=" . $db->f("product_id");
            }
            $product_link = $sess->url($mm_action_url. "index.php" . $url);
            $tpl->set( 'product_link', $product_link );
            $tpl->set( 'product_thumb_image', $db->f("product_thumb_image"), "alt=\"".$db->f("product_name")."\"");

            if (_SHOW_PRICES == '1' && $show_price) {
                // Show price, but without "including X% tax"
                $price = $this->show_price( $db->f("product_id"), true );
                $tpl->set( 'price', $price );
            }
            if (USE_AS_CATALOGUE != 1 && $show_addtocart
                    && isset( $GLOBALS['product_info'][$product_id]['price']['product_price_id'] ) // Product must have a price to add it to cart
                    && !$this->product_has_attributes($product_id, true)  // Parent Products and Products with attributes can't be added to cart this way
                    ) {
                $url = "?page=shop.cart&func=cartAdd&product_id=" .  $db->f("product_id");
                $addtocart_link = $sess->url($mm_action_url. "index.php" . $url);
                $tpl->set( 'addtocart_link', $addtocart_link );
            }
            return $tpl->fetch( 'common/productsnapshot.tpl.php');
            
        }
        
         return '';
        
}


Почему я выбрал данный способ? - мне очень не понравилось, что в примере выше нет возможности выбрать в админке способ вывода Сопутствующих товаров (столбцом, или строкой + вкл/выкл кнопок, цены, фото и тд.). Поэтому прикрутил к имеющемуся фукционалу в VM.
« Последнее редактирование: 23.09.2010, 12:55:52 от adjuster »
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Re: Сопутсвующие товары из категории
« Ответ #5 : 23.09.2010, 16:02:08 »
Прошу помощи - при этом скрипте обрабатывается только первая запись в базе.
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
Re: Сопутсвующие товары из категории
« Ответ #6 : 07.01.2011, 13:01:18 »
Подниму тему.

Может кто сейчас на 1,1,6 подскажет как сделать.

Ато при наличии 10000 тыс товаров в ручную добавлять не хочется похожие товары!
Смотрю....
*

HOG_Seruj

  • Захожу иногда
  • 110
  • 1 / 0
Re: Сопутсвующие товары из категории
« Ответ #7 : 21.06.2011, 00:52:43 »
Подскажите  нашол предложение вывести товары из одной категории таким запросом:

$q = ‘SELECT p.product_sku, cx.category_id FROM #__vm_product p RIGHT JOIN #__vm_product_category_xref AS cx ON p.product_id = cx.product_id WHERE p.product_publish= “Y” AND cx.category_id=’.$category_id.’ ORDER BY rand() LIMIT 3′;

Но к сожалению запрос не работает, подскажите что  нужно изменить в запросе?
*

HOG_Seruj

  • Захожу иногда
  • 110
  • 1 / 0
Re: Сопутсвующие товары из категории
« Ответ #8 : 23.06.2011, 15:20:34 »
Подскажите. у меня вот такая ошибка:

Warning: Invalid argument supplied for foreach() in /home/cmobicom/public_html/administrator/components/com_virtuemart/classes/ps_product.php on line 2481
*

baltazors

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
Re: Сопутсвующие товары из категории
« Ответ #9 : 21.07.2011, 00:39:50 »
Решение...

Вывод автоматом из категории...У меня Вирт 1.1.7 работает....

Открываем... components/com_virtuemart/themes/default/templates/product_details/flypage.tpl.php

<?php // find all the other products in this category
$q = "SELECT p.product_thumb_image, p.product_id, p.product_name, c.category_name, c.category_flypage
 FROM #__{vm}_product p,#__{vm}_product_category_xref pc, #__{vm}_category c
 WHERE p.product_publish='Y' AND pc.product_id = p.product_id AND pc.category_id = c.category_id AND c.category_id = '$category_id' AND p.product_parent_id < 1 AND p.product_id != '$product_id'
 ORDER BY RAND() LIMIT 0, 10";
$db = new ps_DB;
$db->query( $q );
if( $db->next_record() ) {
 $flypage = $db->f('category_flypage');
 $db->reset();
 $left = 0;
 while( $db->next_record() ) {
 ?>
 <a href="<?php $sess->purl(URL . "index.php?page=shop.product_details&flypage=$flypage&product_id=" . $db->f("product_id"). "&category_id=$category_id" )?>"><img src="/components/com_virtuemart/shop_image/product/<? echo $db->f("product_thumb_image"); ?>" /></a><span><? echo $db->f("product_name"); ?></span>
</a>
 <?php
 }
}
?>
*

Sergey1984

  • Захожу иногда
  • 51
  • 0 / 0
Re: Сопутсвующие товары из категории
« Ответ #10 : 30.05.2013, 03:08:05 »
Как сделать вывод "подобных товаров", чтобы выводились следующие n товаров из текущей категории?
Т.е необходим вывод следующих за текущим товаром по id, например: у товара с id=85 будут сопутствующие 86,87,88.
Как я понимаю это условие необходимо прописать в shop.product_details.php в:
$q .= "WHERE product_publish='Y' AND product_id != $product_id ";
Какое условие вместо  product_id != $product_id необходимо прописать?
Или хотя бы сделать так, чтоб сопутствующие товары всегда были фиксированы, т.е не менялись при обновлении страницы -  ORDER BY RAND.
Заранее всем спасибо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Товары которых нет в наличии - не отображать в категориях и в поиске по сайту, но отображать при пер

Автор BoBaN

Ответов: 14
Просмотров: 4884
Последний ответ 16.07.2021, 09:53:59
от Igoritaly
Сопутствующие товары не отображаются

Автор newjey

Ответов: 6
Просмотров: 1200
Последний ответ 28.09.2015, 18:14:19
от newjey
[решено] Как вывести цену за количество товара на странице категории (browse_x.php)

Автор mark1

Ответов: 3
Просмотров: 3519
Последний ответ 13.06.2015, 16:22:24
от davudo
Дополнительные фото товара в списке категории

Автор newjey

Ответов: 0
Просмотров: 1197
Последний ответ 11.07.2014, 12:27:52
от newjey
Не отображаются товары

Автор bug73

Ответов: 4
Просмотров: 1290
Последний ответ 07.05.2014, 19:05:12
от bug73