Форум русской поддержки Joomla!® CMS
05.12.2016, 20:41:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Разбиение товаров по производителям

 (Прочитано 287 раз)
0 Пользователей и 1 Гость смотрят эту тему.
pechen13
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« : 16.09.2015, 15:02:23 »

Всем привет.
Попал ко мне случайно код разбиения товаров в категории по производителям для virtuemart2. То есть товары выводятся следующим образом:
-Категория
Производитель1
товар товар товар
товар товар
Производитель 2
товар товар товар
товар товар
То есть это не просто сортировка по производителю, а разбиение на несколько списков.
В оригинальном файле VirtueMart 2.6.8 components/com_virtuemart/views/category/tmpl/default.php вместо 204 строки
Код:
foreach ($this->products as $product){
вставляется следующее
Код:
$manuf=array();
foreach ($this->products as $product)
{
    $manuf[$product->virtuemart_manufacturer_id]['name']= $product->mf_name;   
    $manuf[$product->virtuemart_manufacturer_id]['products'][] = $product;
    foreach ($this->orderByList['manufacturers'] as $key){
        if ($product->virtuemart_manufacturer_id == $key->virtuemart_manufacturer_id ){
        $manuf[$product->virtuemart_manufacturer_id]['url']=$key->file_url;   
        }
    }
}
       
foreach ($manuf as $key=>$product)
{
    $iBrowseCol = 1;
    $iBrowseProduct = 1;
    $BrowseTotalProducts = count($product['products']);
    $manufacturerURL = JRoute::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $key, FALSE);
?>
    <a  href="<?php echo $manufacturerURL;?>">
        <h3><?php echo $product['name']?></h3>
    </a>
    <img width="88" height="36" alt ="<?php echo $product['name']?>" src="<?php echo $product['url']?>">
<?php
    foreach ($product['products'] as $product){
Поскольку мастер в php я никакой, то сколько ни бился, так и не смог подогнать его для VirtueMart 3.
Нижайше прошу помощи в данном вопросе))))))))))
Записан
gartes
Живу я здесь
******

Репутация: +63/-3
Online Online

Сообщений: 826


Е = mс²


« Ответ #1 : 17.09.2015, 03:18:28 »

Код:
$this->orderByList['manufacturers']
Вот это не  из той Opera...
тут модель нужно подключить.
Код:
$model = VmModel::getModel('manufacturer');
$manufacturers = $model->getManufacturers(true, true,  true);
$model->addImages($manufacturers,1);


Вот а потом уже это крутить
Код:
foreach ($manufacturers as $key){
        if ($product->virtuemart_manufacturer_id == $key->virtuemart_manufacturer_id ){
        $manuf[$product->virtuemart_manufacturer_id]['url']=$key->file_url;  
        }
    }

Типа так )

ps и модель мы в самом начале подключим после строки $manuf=array();
Если картинки производителя не нужны то эту строчку можно не писать $model->addImages($manufacturers,1);
Записан
pechen13
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #2 : 17.09.2015, 15:02:00 »

Не пойму в чем косяк, категория показывается но пустая, уже все перерыл.
в файле /components/com_virtuemart/sublayouts/products.php начиная с 40 строки у меня получилось следующее
Код:

$BrowseTotalProducts = count($products);

$manuf=array();
$model = VmModel::getModel('manufacturer');
        $manufacturers = $model->getManufacturers(true, true,  true);
        $model->addImages($manufacturers,1);
        foreach ($products as $product){
            $manuf[$product->virtuemart_manufacturer_id]['name']= $product->mf_name;    
            $manuf[$product->virtuemart_manufacturer_id]['products'][] = $product;
            foreach ($manufacturers as $key){
                if ($product->virtuemart_manufacturer_id == $key->virtuemart_manufacturer_id ){
                $manuf[$product->virtuemart_manufacturer_id]['url']=$key->file_url;  
                }
            }
        }
    foreach ($manuf as $key=>$product){
        $col = 1;
$nb = 1;
$row = 1;
        $BrowseTotalProducts = count($product['products']);
        $manufacturerURL = JRoute::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $key, FALSE);
    ?>
    <a href="<?php echo $manufacturerURL;?>">
        <h3><?php echo $product['name']?></h3>
    </a>
    <img alt ="<?php echo $product['name']?>" src="<?php echo $product['url']?>">

    <?php
    foreach ( $product['products'] as $product ) {

// Show the horizontal seperator
может где ошибся?
Записан
gartes
Живу я здесь
******

Репутация: +63/-3
Online Online

Сообщений: 826


Е = mс²


« Ответ #3 : 17.09.2015, 20:51:26 »

Включите отображение ошибок . Max - для разработчиков...
тогда будет видно..
Записан
pechen13
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #4 : 18.09.2015, 11:12:15 »

Шла ругань Warning: Illegal offset type in на вот эти 2 строчки
Код:
$manuf[$product->virtuemart_manufacturer_id]['name']= $product->mf_name;    
$manuf[$product->virtuemart_manufacturer_id]['products'][] = $product;
Заключил все 3 $product->virtuemart_manufacturer_id в кавычки, тоесть в конце концов код получился такой
Код:
   $manuf=array();
    $model = VmModel::getModel('manufacturer');
    $manufacturers = $model->getManufacturers(true, true,  true);
    $model->addImages($manufacturers,1);
    foreach ($products as $product){
        $manuf['$product->virtuemart_manufacturer_id']['name'] = $product->mf_name;    
        $manuf['$product->virtuemart_manufacturer_id']['products'][] = $product;
        foreach ($manufacturers as $key){
            if ($product->virtuemart_manufacturer_id == $key->virtuemart_manufacturer_id ){
            $manuf['$product->virtuemart_manufacturer_id']['url']=$key->file_url;  
            }
        }
    }
    foreach ($manuf as $key=>$product){
        $col = 1;
$nb = 1;
$row = 1;
        $BrowseTotalProducts = count($product['products']);
        $manufacturerURL = JRoute::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $key, FALSE);
    ?>
    <a href="<?php echo $manufacturerURL;?>">
        <h3><?php echo $product['name']?></h3>
    </a>
    <img alt ="<?php echo $product['name']?>" src="<?php echo $product['url']?>">


<?php
foreach ( $product['products'] as $product ) {

// Show the horizontal seperator
ошибки пропали, товары выводятся, но не так, как хотелось: выводятся не несколькими списками с разными производителями, а точно также, как и раньше все одним списком. Но перед списком выводится название одного производителя(насколько я понял последнего по порядку) и его битая картинка. При инспектировании картинки вижу следующее <img src="/Notice: Undefined index: url in products.php on line 65">. 65 строка - это вот эта
Код:
<img alt ="<?php echo $product['name']?>" src="<?php echo $product['url']?>">
вобще уже ничего не понимаю
Записан
pechen13
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #5 : 28.09.2015, 15:55:07 »

Коряво, но проблема решена.
в sublayouts/products.php после 46 строки
Код:
foreach ( $products as $product ) {
добавляем
Код:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('virtuemart_manufacturer_id')
->from('#__virtuemart_product_manufacturers')
->where('virtuemart_product_id = ' . (int)$product->virtuemart_product_id);
$db->setQuery($query);
$datavalue = $db->loadResult();

$samsung == 0;
$siemens == 0;
$zap == 0;

        if ($datavalue == 1 && $samsung == 0):?>
            <div>
                <p>samsung</p>
                <img src="/images/stories/virtuemart/manufacturer/resized/samsung11_0x120.png" />
            </div>
        <? $samsung++;
        if ($datavalue == 2 && $siemens == 0):?>
            <div>
                <p>siemens</p>
                <img src="/images/stories/virtuemart/manufacturer/resized/siemens11_0x120.png" />
            </div>
        <? $siemens++;
        if ($datavalue == 3 && $zap == 0):?>
            <div>
                <p>zap</p>
                <img src="/images/stories/virtuemart/manufacturer/resized/zap11_0x120.png" />
            </div>
        <? $zap++;
без учета стилей и классов, чтоб не нагромождать кодами)
« Последнее редактирование: 29.09.2015, 10:25:52 от pechen13 » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet