Otomatik Benzer Ürünler

sutestisi

OpenCart-TR
Katılım
18 Ocak 2011
Mesajlar
22
Tepkime puanı
0
Puanları
0
Merhaba arkadaşlar, bugün demo site yapımında benzer ürün seçmekten bıktığımı farkettim, sitede arama yaptım verilen güzel bir modül var 15$ birde google amcaya danışayım dedim Burda birşeyler yapmışlar. Benim işimi gördü fazlasıyla. Belki başka arkadaşların da işini görür hemen kısaca kodları ve açıklamalarını yapayım.

Öncelikle yedek almayı unutmayalım.

ilk olarak " catalog/controller/product/product.php " dosyamızı açıyoruz
alttaki kodu buluyoruz
PHP:
$results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']);

altına aşağıdaki kodu ekliyoruz.

PHP:
#####################
        ## Start Related by Mod
        #####################
        //related by manufacturer
        if(count($results)<10 && (int)$this->data['product_info']['manufacturer_id'] > 0){//change to suit number of products to display
            $temp = $this->model_catalog_product->getProductRelatedByManufacturer($this->data['product_info']['manufacturer_id'],$this->request->get['product_id'],count($results));
            foreach($temp as $t){
                if(!empty($t)){
                    $results[] = $t;
                }
            }
        }
        //related by category
        if(count($results)<10){//change to suit number of products to display
            $temp = $this->model_catalog_product->getProductRelatedByCategory($this->request->get['product_id'],count($results));
            foreach($temp as $t){
                if(!empty($t)){
                    $results[] = $t;
                }
            }
        }
        //related by randomisation
        if(count($results)<10){//change to suit number of products to display
            $temp = $this->model_catalog_product->getProductRelatedByNothing($this->request->get['product_id'],count($results));
            foreach($temp as $t){
                if(!empty($t)){
                    $results[] = $t;
                }
            }
        }
        #####################
        ## End related by mod
        #####################

daha sonra catalog/model/catalog/product.php açıyoruz

PHP:
public function getProductRelated($product_id) {
    $product_data = array();
 
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
 
    foreach ($query->rows as $result) {
        $product_data[$result['related_id']] = $this->getProduct($result['related_id']);
    }
 
    return $product_data;
}

bu kodu bulup hemen altına alttaki kodu ekliyoruz

PHP:
#####################
## Start Related by Mod
#####################
public function getProductRelatedByManufacturer($manufacturer_id,$product_id,$num_results) {
    //return array();
    $product_data = array();
    $num = 10 - $num_results;//change to suit number of products to display
 
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE manufacturer_id = '" . (int)$manufacturer_id . "' AND product_id != '" . (int)$product_id . "' LIMIT 0,".$num."");
 
    foreach ($query->rows as $result) {
        $product_data[$result['product_id']] = $this->getProduct($result['product_id']);
    }
 
    return $product_data;
}
 
public function getProductRelatedByCategory($product_id,$num_results) {
    //return array();
    $product_data = array();
    $num = 10 - $num_results;//change to suit number of products to display
 
    $getCat = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
 
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE category_id = '" . (int)$getCat->row['category_id'] . "' AND product_id != '" . (int)$product_id . "' ORDER BY RAND() LIMIT 0,".$num."");
 
    foreach ($query->rows as $result) {
        $product_data[$result['product_id']] = $this->getProduct($result['product_id']);
    }
 
    return $product_data;
}
 
public function getProductRelatedByNothing($product_id,$num_results) {
    $product_data = array();
    $num = 10 - $num_results;//change to suit number of products to display
 
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE product_id != '" . (int)$product_id . "' ORDER BY RAND() LIMIT 0,".$num."");
 
    foreach ($query->rows as $result) {
        $product_data[$result['product_id']] = $this->getProduct($result['product_id']);
    }
 
    return $product_data;
}
 
#####################
## End related by mod
#####################


standart kodu değiştirmeden verdim bu kodda "10" benzer ürün seciyor bunu kendinize göre kodların içindeki //change to suit number of products to display yazan yerlerin karşısındaki "10" değiştirerek ayarlayabilirsiniz.

Umarım işinize yarar
 

ricety

OpenCart-TR
Katılım
30 Kas 2011
Mesajlar
35
Tepkime puanı
0
Puanları
0
Teşekkür ederim çok güzel bir modül ve çok uyumlu çalışıyor.

1.5.1 de çalıştı. herkese tavsiye ederim.
 

anti91

OpenCart-TR
Katılım
19 Ağu 2011
Mesajlar
159
Tepkime puanı
0
Puanları
0
Birazda deniyeceğim olursa çok çok eline sağlık.... ;)
-----------------------------------------------------
Şimdi denedim gerçektende çok iyi bir şey tek eksi yanı bazı benzerlikleri tam eşleşmiyor ama umarım herkez sizin gibi sadece forumdan yararlanmak için değilde buldugu yararlı şeyleri paylasmak içinde konular açar tşkler.
 

sutestisi

OpenCart-TR
Katılım
18 Ocak 2011
Mesajlar
22
Tepkime puanı
0
Puanları
0
işinize yaradığına sevindim , hazırlamaya çalıştığım sitede görselleri ayarlamaktan ince ayarları gözden geçirmeye fırsatım olmadı.

tam eşleşmeme dediğiniz sanırım farklı alt kategorilerden de çekebiliyor onun ayarlaması yapılır fırsatım olursa kurcalamakta fayda var.

1.4 kullanmadığım için denemedim ama sitede onun için olanı da vardı sanırım.
 

anti91

OpenCart-TR
Katılım
19 Ağu 2011
Mesajlar
159
Tepkime puanı
0
Puanları
0
Şu şekilde sorun var örnek bilgisayar kategorisinden usb alt kategorisine ait bir ürüne girdiğinde benzer ürünleri bilgisayar kategorisinden alıyor bunu nasıl sadece bulundugu alt kategoride usb kategorisinde arama yapabiliriz ki...

ama cidden harika oldu tşkler tekrardan
 

sutestisi

OpenCart-TR
Katılım
18 Ocak 2011
Mesajlar
22
Tepkime puanı
0
Puanları
0
kodlama bildim yok =) deneme yanılmayla birşeyler yapmaya çalışıyorum =) kodlama bilgisi olan arkadaşlar halledebilir kolayca sanırım . Bu kodlarda getProductRelatedByCategory diyor dediğiniz gibi direkt ana kategoriden alıyor benzerlikleri, bunun sadece benzer alt kategori şeklinde yapılması mümkünde olur sanırım.
 

anti91

OpenCart-TR
Katılım
19 Ağu 2011
Mesajlar
159
Tepkime puanı
0
Puanları
0
evet katılıyorum bakalım bende bir kaç deneme yapacagım.
 

kemal

OpenCart-TR
Katılım
2 Ocak 2012
Mesajlar
6
Tepkime puanı
0
Puanları
0
anti91' Alıntı:
Şu şekilde sorun var örnek bilgisayar kategorisinden usb alt kategorisine ait bir ürüne girdiğinde benzer ürünleri bilgisayar kategorisinden alıyor bunu nasıl sadece bulundugu alt kategoride usb kategorisinde arama yapabiliriz ki...

ama cidden harika oldu tşkler tekrardan

İyi çalışmalar, arkadaşın dediğine ilave, her kategori için ayrı olarak hep aynı ürünleri getiriyor,
mesela hangi bilgisayarı seçersen seç aynı bilgisayarlar,
hangi cep telefonunu seçersen seç aynı ceptelefonları geliyor..
(renkli ekran, renksiz ekran, android, windows ayyrım yapmıyor..)

Bunu nasıl çözebiliriz, fikri olan var mı? iyi geceler..
 

sutestisi

OpenCart-TR
Katılım
18 Ocak 2011
Mesajlar
22
Tepkime puanı
0
Puanları
0
şimdilik bu benim işimi gördüğünden fazla vaktim olmadı deneme için , dedikleriniz muhakkak yapılabiliyordur , ama benim gibi kodlama bilmeyip sadece mantıken ve deneme yanılmayla yapan biri için zor iş =) ama yapılabilir tabiki.

Şimdi Tc kimlik olayını daha ayrıntılı birşekilde eklemeye çalışıyorum , daha sonrada satış sözleşmesi olayına otomatik olarak müşteri ismi eklensin istiyorum aradım sitede işimi görecek bir bilgiye ulaşamadım. onlarla uğraşmam biterse okullar başlamadan önce mutlaka bu benzer ürünleri daha stabil nasıl yaparız kafa yoracağım.
 

emraheren

OpenCart-TR
Katılım
27 May 2010
Mesajlar
32
Tepkime puanı
0
Puanları
0
PHP:
 //related by randomisation
        if(count($results)<10){//change to suit number of products to display

yukarıdaki 10 olan değeri 0 yaptığınızda sadece kendi kategorisindeki ürünleri listeliyor rastgele ürün getirmiyor.
 

mehmet80

OpenCart-TR
Katılım
31 Ocak 2012
Mesajlar
63
Tepkime puanı
0
Puanları
0
EnverYigit' Alıntı:
1.4 te de çalışır mı acaba?

1.4 için burada var
http://myshadowself.com/coding/opencart/auto-relate-products-by-manufacturer-fallback-to-related-by-category-and-finally-fallback-to-random-products/
 

bilgikur

OpenCart-TR
Katılım
13 Kas 2010
Mesajlar
38
Tepkime puanı
0
Puanları
0
aradığım kod tu tşk ler paylasım ıcın cok makbule gectı kardes. bıktırmıstı beni benzer ürünler:)
 

haqanozcan

OpenCart-TR
Katılım
29 Eki 2010
Mesajlar
15
Tepkime puanı
0
Puanları
0
Notice: Undefined index: product_info böyle bir hata alıyorum fikri olan arkadaş varmı ?
 

slaytanic

OpenCart-TR
Katılım
27 Ağu 2013
Mesajlar
8
Tepkime puanı
0
Puanları
0
haqanozcan' Alıntı:
Notice: Undefined index: product_info böyle bir hata alıyorum fikri olan arkadaş varmı ?

## Start Related by Mod
#####################
//related by manufacturer
if(count($results)<0 && (int)$this->data['product_info']


<0 yazan yer 10 du bendede aynı hatayı verdiği gibi karakter sorunu vardı ben 0 yaptım düzeldi.

(catalog/controller/product/product.php dosyası)



Yapan arkadaşada ayrıca teşekkür ederim tek tek elle eklemek çok sıkıntılı birde ezbere kim hatırlayacak ürünleri.
 

orhansa

OpenCart-TR
Katılım
12 Ara 2011
Mesajlar
45
Tepkime puanı
0
Puanları
0
benim web sayfamda ürün sayfasında havale/eft fiyatı ile ilgili bir bölüm ekli.
bunun için fatal error veriyor heralde. versiyonum 1.5.5.1.

hata kodu şöyle:
Fatal error: Call to undefined method ModelCatalogProduct::getProductRelatedByCategory() in /home/xxxx/public_html/catalog/controller/product/product.php on line 422

nasıl düzeltebilirim. /controller/product/product.php dosyasını ekte sunuyorum.
 

Ekli dosyalar

  • product.php
    27.1 KB · Görüntüleme: 4
Üst