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

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Кто знает, подскажите пожалуйста, как можно сделать, чтобы сопутствующие товары приходилось забивать не в ручную к каждому товару, а они брались бы  из категории в которой находится товар.
На форуме было решение к VM1.1.3 на  VM 1.1.4 не заработало...

*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
интересно стало, по какому принципу идет автозаполнение сопутствующих товаров?  ^-^
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Сопутствующие товары лежат в таблице jos_vm_product_relations

Запись вида (пример):
product_id  = 23
related_products  = 33|24|8|25|37|29


То есть для продукта 23 сопутствующие товары - 33|24|8|25|37|29
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
интересно стало, по какому принципу идет автозаполнение сопутствующих товаров?  ^-^

чтобы рендомно  выбодились (например по 3 или 4 шт.) все товары из категории в которой находится товар

*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
http://joomlaforum.ru/index.php/topic,72740.0.html

я написал в первом сообщении - в 1.1.4 - этот метод не заработал...
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
чтобы рендомно  выбодились (например по 3 или 4 шт.) все товары из категории в которой находится товар
это неправильное заполнение сопутствующих товаров. Например сайт об играх. Сопутствующие товары это игры из этой же серии, ну никак не рэндомно  ^-^
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
По мне так наиболее правильный метод автозаполнения был бы на основе наименования товара, чтобы автоматом находил схожее наименование  ^-^
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
http://joomlaforum.ru/index.php/topic,72740.0.html

Здесь исправлено.

Кстати по поводу наименования - думаю решение простое - основанное на указанном в ссылке.
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
http://joomlaforum.ru/index.php/topic,72740.0.html

Здесь исправлено.

Кстати по поводу наименования - думаю решение простое - основанное на указанном в ссылке.
было бы замечательно, я сам добавляю сопутствующие товары вручную. И тут такой момент возникает. Допустим по моей тематике пример. Поступила игра Starcraft 2. До неё был Старкрафт. Конечно когда завожу карточку игры Старкрафт 2 то в ней указываю сопутствующий товар Старкрафт. А потом приходится заходить в карточку игры Старкрафт и указывать сопутствующий товар Старкрафт 2. Вот это немного напрягает. Наименований игр более 2 тысяч поэтому всех игр не упомнишь, а вот если бы как нибудь по наименованию само добавлялось в сопутствующие товары было бы замечательно  ^-^
« Последнее редактирование: 23.09.2010, 13:13:30 от Infosakh »
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Если пренебречь переводом, то можно вот это использовать:
Цитировать
$product_name =  vmGet($_REQUEST, "product_name", null);  /* Получаем имя  товара */
 /*Отбираем опубликованные продукты с похожим именем*/
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '.$product_name;
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';

ч
Соответсвенно отбор будет такой:
К прмеру - товар Старкрафт

тогда выбрать все товары имя которых включает слово Старкрафт
« Последнее редактирование: 23.09.2010, 13:56:38 от adjuster »
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Я правильно понимаю, что надо глядеть вот этот пост: http://joomlaforum.ru/index.php/topic,72740.msg714481#msg714481
Все сделать так как там приведено, но вместо этого:
---
$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';
---
вставить это:
---
$product_name =  vmGet($_REQUEST, "product_name", null);  /* Получаем имя  товара */
 /*Отбираем опубликованные продукты с похожим именем*/
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '.$product_name;
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';
---
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Ага, только я с Лайком ошибся:
Цитировать
$q=$q.' WHERE product.`product_name` LIKE '%$product_name%';

Вот как-то так.
« Последнее редактирование: 23.09.2010, 14:10:51 от adjuster »
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
Ага, только я с Лайком ошибся:
Вот как-то так.
так, сейчас буду тестить, отпишусь   ^-^
*

Infosakh

  • Завсегдатай
  • 1257
  • 67 / 0
все сделал как было указано, в файле relatedProducts.tpl.php заменил весь код на это
---
1) <?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>
---
2) В файле ps_product.php после этих строчек
---
class vm_ps_product extends vmAbstractObject {
   var $_key = 'product_id';
   var $_table_name = '#__{vm}_product';
---
добавил вот этот код:
---
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);  /* Получаем категорию в которой находится товар */
    /*Отбираем опубликованные продукты из данной категории*/
$product_name =  vmGet($_REQUEST, "product_name", null);  /* Получаем имя  товара */
 /*Отбираем опубликованные продукты с похожим именем*/
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '%$product_name%';
$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 '';
       
}
---
Итог. В тех карточках товара где выводился уже список сопутствующих товаров выдается ошибка. А в тех карточках где не было сопутствующих товаров они так и не появились  ^-^ З.Ы. немного синтаксис неправильный был тут:
---
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '%$product_name%';
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';
---
я поправил, но все равно результат ноль  ^-^
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Беда с запросом в базу - при чтении сформированного массива - работает только с первой записью.
Следи за указанной темой - в ней сначала нужно исправить запрос в базу и обработку.
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Беда с запросом в базу - при чтении сформированного массива - работает только с первой записью.
Следи за указанной темой - в ней сначала нужно исправить запрос в базу и обработку.

Слежу за обеими темами, после добавления кода - ничего не изменилось - сопутствующих как небыло, так и нет :(

Вы не могли-бы написать финальный вариант пошагово где и что менять, чтобы сопутствующие заполнялись автоматически товарами из категории, в которой находится просматриваемый товар...
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
при таком варианте - сопутствующие начинают показываться, если выбраны какие-либо сопутствующие товары.
причем, количество зависит от количества выбранных - тупость какая-то )))
кодить нужно лучше - следим за указанной темой.


Попробуй пока вариант, который не я предложил - только вместо указанного в варианте кода поставь свой - для выборки по имени.
« Последнее редактирование: 24.09.2010, 09:07:20 от adjuster »
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Вот нашел (проверял - работает)

выводит список всех оставшихся товаров текущего производителя в карточке товара.
Изменения вносим в файле компонента com_virtuemart\themes\default\templates\product_details\flypage.tpl.php

Вопрос - как сделать что бы отбирались все остальные товары, не по производителю, а из категории в которой выбран товар типа еще товары из этой категории

Код
<?php
            $my_manufacturer_id = vmRequest::getVar('manufacturer_id');
            $my_product_id = vmRequest::getVar('product_id');
           
            global $mosConfig_absolute_path, $sess;
            require_once( $mosConfig_absolute_path.'/components/com_virtuemart/virtuemart_parser.php' );
            require_once(CLASSPATH.'ps_product.php');
            $ps_product = new ps_product;
            $list  = "SELECT DISTINCT
                    #__{vm}_product.product_id,
                    product_parent_id,
                    product_name,
                    #__{vm}_category.category_id,
                    category_flypage,
                    #__{vm}_product_mf_xref.manufacturer_id
                        ";
            $list .= "FROM
                    #__{vm}_product,
                    #__{vm}_product_category_xref,
                    #__{vm}_category,
                    #__{vm}_product_mf_xref
                    WHERE ";
            $q = "#__{vm}_product.product_publish='Y' AND ";
            $q .= "#__{vm}_product_category_xref.product_id = #__{vm}_product.product_id AND ";
            $q .= "#__{vm}_product_category_xref.category_id = #__{vm}_category.category_id AND ";
            $q .= "#__{vm}_product_mf_xref.product_id = #__{vm}_product.product_id AND ";
            $q .= "#__{vm}_product_mf_xref.manufacturer_id='".$my_manufacturer_id."' AND ";
            $q .= "#__{vm}_product.product_id <> ".$my_product_id." ";
            $q .= "GROUP BY #__{vm}_product.product_name ";           
            $q .= "ORDER BY #__{vm}_product.product_name";
           
            $list .= $q;
           
            $db = new ps_DB;
            $db->query($list);           
            $i = 0;
           
            $mk = 0;
            echo '<div id="other-collection">';
            echo '<ul>';
                while ($db->next_record()) {
                    $flypage = $db->f('category_flypage');
                    $pid = $db->f("product_parent_id")? $db->f("product_parent_id") : $db->f("product_id"); ?>
                    <li>
                        <a href="<?php  $sess->purl(URL . "index.php?page=shop.product_details&flypage=$flypage&product_id=" . $pid . "&category_id=" . $db->f("category_id"))?>">
                            <?php $db->p("product_name"); ?>
                        </a>
                    </li>               
                    <?php
                        if ( $mk >= 3 ) {
                            echo '</ul><ul>';
                            $mk = 0;
                        }
                    ?>
                    <?php $mk++; ?>
                <?php }
                echo '</ul>';
            echo '</div>';
        ?>

*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
нашел вывод товаров этого производителя:

Цитировать
$manufacturer_id = $ps_product->get_manufacturer_id($product_id);
$q = "SELECT product_sku FROM `#__{vm}_product` ";
$q .= "INNER JOIN  `#__{vm}_product_mf_xref` ON `#__{vm}_product`.product_id = `#__{vm}_product_mf_xref`.product_id ";
$q .= "WHERE product_publish='Y' AND `#__{vm}_product`.product_id != $product_id ";
$q .= "      AND `#__{vm}_product_mf_xref`.manufacturer_id = $manufacturer_id ";
$q .= "ORDER BY RAND() LIMIT 0, 4";

не подскажите как модифицировать, чтобы бы была выборка по имени?
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
попробовал этот код
Цитировать
$product_name =  vmGet($_REQUEST, "product_name", null);  /* Получаем имя  товара */
 /*Отбираем опубликованные продукты с похожим именем*/
$q='SELECT product.`product_id` , `product_name`';
$s = $q.'  FROM `#_{vm}_product`;
$q=$q.' WHERE product.`product_name` LIKE '%$product_name%';
$q=$q.' AND `product_publish` = "Y"';
$q=$q.' LIMIT 0 , 30';
ничего не выводится  :(
« Последнее редактирование: 06.01.2011, 19:51:34 от DaVinchy »
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
жаль, что тема умерла... :(
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
Очень Нужная тема, поднимите её в топ.

Нужно очень сделать вывод похожих товаров из категорий
Смотрю....
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
$q = "SELECT product_sku FROM #__{vm}_product ";
$q .= "WHERE product_publish='Y' AND product_id = $product_id ";
$q .= "LIMIT 0, 10";
$db->query( $q );

выводит товар с таким же id, т. е. тот же самый товар в котором находишься
а при использовании product_name ничего е выводится =(
*

yrygvay

  • Завсегдатай
  • 1293
  • 36 / 3
а если категорию он выводит?

вместо товара?

не product_id а categoty_id ?
Смотрю....
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
не совсем понял вопрос  ^-^
при использовании category_id у меня ничего не выводит...

здесь делали для VM 1.0.x ...
я там зарегаться не могу  :( так бы можно было спросить...
« Последнее редактирование: 08.01.2011, 18:26:02 от DaVinchy »
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
неужели никто не решал!? >:(
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
в shop.product_details.php после
Цитировать
$product_id = intval( vmGet($_REQUEST, "product_id", null) );
добавил
Цитировать
$product_name = intval( vmGet($_REQUEST, "product_name", null) );
и изменил запрос
Цитировать
$q = "SELECT product_sku FROM #__{vm}_product ";
$q .= "WHERE product_publish='Y' AND product_name = $product_name ";
$q .= "LIMIT 0, 7";
но странно то, что выводится все подряд, хотя должны выводиться товары с таким же названием...
помогите разобраться
*

DaVinchy

  • Захожу иногда
  • 326
  • 42 / 3
Эх...
а всего-то надо как-то по-другому выразить $product_name...
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Эх...
а всего-то надо как-то по-другому выразить $product_name...

Если разобрался - напиши пожалуйста - а тоя уже в ступоре - ничего не получается...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать импорт товара на VirtueMart?

Автор Усач911

Ответов: 0
Просмотров: 934
Последний ответ 07.11.2017, 22:03:18
от Усач911
В корзинке VirtueMart нужна карусель с сопутствующими товарами

Автор kristina135

Ответов: 0
Просмотров: 810
Последний ответ 16.09.2015, 16:13:57
от kristina135
Как сделать скидку сразу на все товары VirtueMart?

Автор anuta90

Ответов: 15
Просмотров: 6368
Последний ответ 23.12.2013, 13:17:51
от cheni
Как в VirtueMart сделать так, что бы все товары были на одной странице?

Автор Wargoth

Ответов: 0
Просмотров: 908
Последний ответ 25.06.2013, 12:05:57
от Wargoth
Как сделать несколько магазинов VirtueMart на одной Joomla?

Автор Tuzemec

Ответов: 14
Просмотров: 10219
Последний ответ 23.10.2012, 11:12:55
от vogjd