1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

Вывод product_parent (virtuemart) в redvmproductfinder

Тема в разделе "Joomla", создана пользователем drserg, 7 июн 2011.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Статус темы:
Закрыта.
Модераторы: arman29, DMS, Genk0
  1. drserg

    drserg

    Регистр.:
    31 мар 2009
    Сообщения:
    161
    Симпатии:
    15
    Здравствуйте всем. КО мне обратился мой коллега по работе, и попросил глянуть на компонент, которые ему делали в какой то конторе. Компонент служит кагбе для фильтра товаров в Виртумарте. Что он делает:
    Создается в компоненте Тип, дропдаун или чекбокс (например Цена, Размер..), потом создаются теги (180х120см, 500р..), которые подвязываются к типам
    и Потом уже ассоциации (Где выбирается товар с Виртумарта, и присваиваются ему конкретные теги). Ну и пользователь уже делает свое условие поиска (выбирает цену, размер и т.д..). Этот компонент называется redvmproductfinder. Это было маленькое предисловие.
    Дело в том, что сотруднику делала ну очень сомнительная компания, и как они создали магазин я не буду обсуждать.. там ппц..
    http://svit-matrasiv.com.ua/. Принцип у них такой:
    Есть какой то определенный тип матраса ("Модель такая то, гиперкомфортный"). Это есть карточкой товара, в виртумарте он есть итемом, цены на нем нету. В нем только описание и картинка товара. Когда пользователь заходит прочитать об этом товаре, он видет список, с размерами, когда выбирает один из размеров, появляется уже цена.. Это есть чайлд этого итема (не параметр, а именно чайлд итем....).
    Так вот: ПО стандарту, компонент редвмпродуктфайндер, делает ассоциации только с парент итемами, а это не катит, так как человеку после поиска, надо вывести именно чайлда, который носит в себе цену. Изменил чутка запрос в базу (заметил, что у парентов, столбец product_parent_id == 0, а у чайлдов product_parent_id == product_id его парента... ) Все вроде бы было хорошо, но после того как я например делаю поиск с таким условием как: размер (180х80) - дропдаун, производитель (велам) - дроп, цена (500-1000, 1000-1500) - чекбокс и т.д.., то результат поиска выводит что ему захочется... Вообщем надо как то домучать этот компонент. (Любые виртумартовские фильтры, которые можно найти, не подойдут в этой ситуации, так как очень по дебильному у них забитая информация (производители вообще не забиты, они создавали категорию товара, вписывали производителя, и создавали уже товары этого производителя) тоисть автоматов вытягивать инфу не получится... Там еще много приколов.
    PHP:
    <?php
    /**
     * @copyright Copyright (C) 2008-2009 redCOMPONENT.com. All rights reserved. 
     * @license can be read in this package of software in the file license.txt or 
     * read on http://redcomponent.com/license.txt  
     * Developed by email@recomponent.com - redCOMPONENT.com 
     *
     * VMPRODUCTFILTER model
     */
    // Check to ensure this file is included in Joomla!
    defined('_JEXEC') or die( 'Restricted access' );
    jimport('joomla.application.component.model');
    /**
     */
    class vmproductfilterModelvmproductfilter extends JModel {
        public function 
    __construct() {
            
    parent::__construct();
        }
        public function 
    getFindProducts() {
            
    $db JFactory::getDBO();
            
    $post JRequest::get('request');
            
    $q "SELECT COUNT(id) AS total FROM #__vmproductfilter_types";
            
    $db->setQuery($q);
            
    $typecount $db->loadResult();
            
    $tags '';
            
    $types '';
            
    $queries = array();
            for (
    $i 0$i $typecount$i++) {
                if (isset(
    $post['type'.$i])) {
                    if (
    is_array($post['type'.$i]) && count($post['type'.$i]) > 0) {
                        foreach (
    $post['type'.$i] as $pos => $value) {
                            list(
    $tag$type) = explode("."$value);
                            
    $queries[] = "SELECT association_id ".
                                        
    "\nFROM #__vmproductfilter_association_tag j"
                                        
    "\nWHERE tag_id = ".$tag." AND type_id = ".$type;
                        }
                    }
                    else if (
    $post['type'.$i] > 0) {
                        list(
    $tag$type) = explode("."$post['type'.$i]);
                        
    $queries[] = "SELECT association_id ".
                                        
    "\nFROM #__vmproductfilter_association_tag j"
                                        
    "\nWHERE tag_id = ".$tag." AND type_id = ".$type;
                    }
                }
            }
            
    $result = array();
            if (
    count($queries) > 0) {
                foreach (
    $queries as $key => $query) {
                    if (
    $key 0) {
                        if (
    count($result) > 0$query .= " AND association_id in (".implode(','$result).")";
                        
    $db->setQuery($query);
                        
    $result $db->loadResultArray();
                    }
                    else {
                        
    $db->setQuery($query);
                        
    $result $db->loadResultArray();
                    }
                    if (
    count($result) == 0end($queries);
                }
                if (
    count($result) > 0) {
                    
    $qvm "SELECT vmproduct_id
                        FROM #__vmproductfilter_associations
                        WHERE ID IN ("
    .implode(','$result).")";
                    
    $q "SELECT product_id, product_name, product_thumb_image, product_parent_id, product_desc, product_s_desc
                        FROM #__vm_product
                        WHERE product_id IN ("
    .$qvm.")
                        AND product_parent_id > 0;"
    ;
                    
    $db->setQuery($q);
                    
    $products $db->loadObjectList();
                    
    $i=0;
                    foreach (
    $products as $key => $product) { 
                    
    $i++;
                    
    $q "SELECT product_thumb_image, product_desc, product_s_desc
                        FROM #__vm_product
                        WHERE product_id ="
    .$product->product_parent_id;
                        
    $db->setQuery($q);
                        
    $product_parent_id $db->loadObject();
                        
    $productss[$i]->product_id $product->product_id;
                        
    $productss[$i]->product_name $product->product_name;
                        
    $productss[$i]->product_thumb_image $product_parent_id->product_thumb_image;
                        
    $productss[$i]->product_desc $product_parent_id->product_desc;
                        
    $productss[$i]->product_s_desc $product_parent_id->product_s_desc;
                    }
                    
    //print_r($products->original);
                    
    return $productss;
                }
                else return array();
            }
            else {
                
    $qvm "SELECT vmproduct_id
                    FROM #__vmproductfilter_associations"
    ;
                
    $q "SELECT product_id, product_name, product_thumb_image, product_parent_id, product_desc, product_s_desc
                    FROM #__vm_product
                    WHERE product_id IN ("
    .$qvm.")
                    AND product_parent_id > 0;"
    ;
                
    $db->setQuery($q);
                
    $products $db->loadObjectList();
                    
    $i=0;
                    foreach (
    $products as $key => $product) { 
                    
    $i++;
                    
    $q "SELECT product_thumb_image, product_desc, product_s_desc
                        FROM #__vm_product
                        WHERE product_id ="
    .$product->product_parent_id;
                        
    $db->setQuery($q);
                        
    $product_parent_id $db->loadObject();
                        
    $productss[$i]->product_id $product->product_id;
                        
    $productss[$i]->product_name $product->product_name;
                        
    $productss[$i]->product_thumb_image $product_parent_id->product_thumb_image;
                        
    $productss[$i]->product_desc $product_parent_id->product_desc;
                        
    $productss[$i]->product_s_desc $product_parent_id->product_s_desc;
                    }
                return 
    $productss;
            }
        }
        
    /**
         * Get the tag names
         */
        
    public function getTypeTags() {
            
    $db JFactory::getDBO();
            
    $id JRequest::getInt('tid');
            
    $q "SELECT CONCAT(tag_id,'.',j.type_id) AS tag_id, tag_name 
                FROM #__vmproductfilter_tag_type j, #__vmproductfilter_tags t
                WHERE j.tag_id = t.id
                AND j.type_id = "
    .$id."
                ORDER BY t.ordering"
    ;
            
    $db->setQuery($q);
            return 
    $db->loadObjectList();
        }
    }
    ?>
    вот содержимое файла с папки models. Там и есть мой запрос... Помогите пож.!! Заранее всем огромное спс.. (я только изменял компонент, который поставила та конторка.
    http://svit-matrasiv.com.ua
    Если что то еще потребуется для решения проблемы - пишите
     
Статус темы:
Закрыта.