Jump to content

[ÇÖZÜLDÜ]referans kodu aynı olan ürünleri listeleme


burakco

Recommended Posts

merhabalar,

 

ürün sayfasında gösterilen ürün ile referans değeri aynı olan diğer ürünleri nasıl listeletebilirim?

 

yardımlarınız için şimdiden teşekkürler

 

 

çözüm için : http://www.prestashop.com/forums/index.php?/topic/188681-referans-kodu-ayni-olan-urunleri-listeleme/page__view__findpost__p__936745

Edited by burakco (see edit history)
Link to comment
Share on other sites

Tam olarak yapmak istediğinizi anlayamadım ama sanırım bir ürün uyumluluk listelemesi arıyorsunuz. Şu adreste böyle bir uygulama projesini hayata geçirmiştik: www.inkcenter.be

 

Printer modelleri üzerinden uyumlu olan ürünler listeleniyor. Bunu yapmak istiyorsanız ücretli bir modül kullanmalısınız.

 

Ancak her ürün altında bu ürünle kullanılan aksesuarlar gibi ürünleri listelemek istiyorsanız, ürün düzenleme sayfasından aksesuar eklemeyi deneyebilirsiniz.

 

Biraz daha detay verebilir misiniz?

Link to comment
Share on other sites

şöyle yapılabilir belki.

aynı kategorideki ürünleri ürün sayfasında listeyebiliyoruz.

bütün ürünlerin kategorisini ana kategoriye alırsak.

bu modul üzerinden {forect} döngüsüne bir paremetre ekleyek bu ana kategori üzerindeki aynı refarans no'lu diğer ürünler çekilebilir.

 

bu şekilde hızlı bir şekilde yapılabilir. çağların dediği gibi daha fazla bilgi verebilirsen iyi olur

 

-Safa

Link to comment
Share on other sites

benim dediğime en yakın cevap sefadan geldi. şimdi yapmak istediğim şu,

 

kişi ürünün sayfasına girdiğinde sistem otomatik olarak bakılan ürün ile referans kodu aynı olan diğer ürünleride altta sıralasın.

 

yani bana öyle bi sql sorgusu lazım ki baktığım ürünün referans kodunu bu sorguya koyduğumda aynı koda sahip diğer ürünleri çeksin.

 

dün bu konuyu açtıktan sonra aklıma bir fikir geldi: classes/product.php dosyasını inceledim. ürün sayfasında kullanılan tüm fonksiyonlar var burada. 1,4,8,2 sürümü için 2412. satırda şöyle bir fonksiyon buldum:

 

public static function searchByName($id_lang, $query)
{
 $result = Db::getInstance()->ExecuteS('
 SELECT p.`id_product`, pl.`name`, p.`active`, p.`reference`, m.`name` AS manufacturer_name
 FROM `'._DB_PREFIX_.'category_product` cp
 LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product`
 LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).')
 LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer`
 LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.`id_product` = p.`id_product`
 WHERE pl.`name` LIKE \'%'.pSQL($query).'%\' OR p.`reference` LIKE \'%'.pSQL($query).'%\' OR p.`supplier_reference` LIKE \'%'.pSQL($query).'%\' OR pa.`reference` LIKE \'%'.pSQL($query).'%\'
 GROUP BY `id_product`
 ORDER BY pl.`name` ASC');
 if (!$result)
  return false;
 $resultsArray = array();
 foreach ($result AS $row)
 {
  $row['price'] = Product::getPriceStatic($row['id_product'], true, NULL, 2);
  $row['quantity'] = Product::getQuantity($row['id_product']);
  $resultsArray[] = $row;
 }
 return $resultsArray;
}

 

 

bu fonksiyonun bir kopyasını biraz düzenleyerek sanırım istediğim ürünleri çekebilirim diye düşünüyorum.

 

 

@salvar bu kodlamanın kolay olmadığını bende biliyorum. kalkıpta kimseden oturup kodu yazmasınıda istemedim. direk konuya gelip ücretli destek almamı söyleyen veya modül satmaya çalışanlara gıcık oluyorum. forumun gerçek amacı nerde kaldı o zaman?

Link to comment
Share on other sites

o modülüde inceledim, onda da şu şekilde bir fonksiyon kullanmışlar :

 

public function hookProductFooter($params)
{
 global $smarty, $cookie;

 $idProduct = (int)(Tools::getValue('id_product'));
 $product = new Product((int)($idProduct));
 /* If the visitor has came to this product by a category, use this one */
 if (isset($params['category']->id_category))
  $category = $params['category'];
 /* Else, use the default product category */
 else
 {
  if (isset($product->id_category_default) AND $product->id_category_default > 1)
$category = New Category((int)($product->id_category_default));
 }

 if (!Validate::isLoadedObject($category) OR !$category->active)
  return;
 // Get infos
 $categoryProducts = $category->getProducts((int)($cookie->id_lang), 1, 100); /* 100 products max. */
.
.
.
.
}

 

burada verdiğim kodlarda son satırdaki getProducts fonksiyonu ile aynı kategorideki ürünleri çekmişler. getProducts fonksiyonu ise verilen kategorideki tüm ürünleri çekiyor.

 

gördüğüm kadarıyla bu modülü bile kullansam, prestanın kendi çekirdek fonksiyonlarında benim ihtiyacımı karşılayacak bi fonksiyon yok. muhakkak sql sorgusuna müdahele etmek gerekiyor.

Link to comment
Share on other sites

Override, yani üzerine yazmak demek. Prestashop yapısı bu şekilde dizayn edilmiş. Class ve modül dosyalarını override klasörü içine attıklarınızla fiziksel olarak üzerine yazmadan değiştirebiliyorsunuz. Orijinal kurulumla gelen dosyaları core olarak kabul ederseniz, override klasörüne bu core'lar yerinde olsa bile öncelik veriliyor. Ayrıntılı anlatım için:

 

http://www.prestashop.com/blog/en/modules_classes_and_controller_override_by_julien_breux/

 

İyi çalışmalar

Link to comment
Share on other sites

override/classes klasörüne core dosyasına istediğim gibi bi fonksiyonu ekleyip kopyaladım. lakin admin panelinde bembeyaz sayfa çıktı. bende debug özelliğini aktif ettim ve şöyle bir hata verdi :

 

Fatal error: Cannot redeclare class ProductCore in /home/ahmet/public_html/override/classes/Product.php on line 3564

Link to comment
Share on other sites

işlem tamamdır, istediğim şeyi tavsiyeleriniz sayesinde yaptım. productcategory modülünü biraz düzenledim. aralarındaki tek fark kategorideki ürünleri çeken fonksiyon yerine kendi sql sorgumu kullandım.

 

core dosyalarına dokunulmadı, direk modül içersinden hallettim işi. modülü kendi sitenize yükleyince direk kullanamazsınız, productsref.php dosyasındaki sql sorgusunu kendi veritabanı prefixinize göre editlemeniz gerekiyor.

 

farklı bir ürün giriş sistemi kullananlarda belki çalışmayabilir sql sorgusu. prestanın veritabanına biraz yabancıyım tablolarda arama yapa yapa bişiler çıkardım. bu konuda uzman arkadaşlar umarım modülü herkese uygun hale getirebilirler.

productsref.zip

Edited by burakco (see edit history)
Link to comment
Share on other sites

modülün sitedeki son hali (exrtaRight kancası ile kullandım). incelenen ürünün diğer renklerini göstermek için kullanılabilir.

 

NOT: kombinasyonlada yapılabilirdi, fakat ayakkabı sitelerini incelerseniz hiç birinde prestadaki gibi renk ve numara seçimi yapılmıyor. her ayakkabının rengi farklı bir ürün gibi giriliyor sisteme. size sadece numara seçimi yapmak kalıyor.

 

dbryx.png

Edited by burakco (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...