DEMO İNCELE
ÜCRETSİZ İNDİR

PrestaShop homefeatured modülünde her kategoriden 10 ürün göstermek (SORUN ÇÖZÜLDÜ)

s.a. arkadaşlar
ben homefeatured modülünde sitemdeki her kategoriden 10 ürünü anasayfada göstermek istiyorum
ör: 1.kategori başlığı yazıp (resim de olabilir) altında kategoriden 10 ürün listeleyecek.
2.kategori başlığı yazıp (resim de olabilir) altında kategoriden 10 ürün listeleyecek.
…….. GİBİ
yanlış anlaşılmaya sebep olmamak için durumu bir de resim ile anlatmak istedim. resim ektedir.
konuyla ilgili yardımcı olacak arkadaşlara şimdiden teşekkürler

24 thoughts on “PrestaShop homefeatured modülünde her kategoriden 10 ürün göstermek (SORUN ÇÖZÜLDÜ)

  1. MahmutGulerce - 15 Ağustos 2017 at 13:28

    s.a. arkadaşlar
    ben homefeatured modülünde sitemdeki her kategoriden 10 ürünü anasayfada göstermek istiyorum
    ör: 1.kategori başlığı yazıp (resim de olabilir) altında kategoriden 10 ürün listeleyecek.
    2.kategori başlığı yazıp (resim de olabilir) altında kategoriden 10 ürün listeleyecek.
    …….. GİBİ
    yanlış anlaşılmaya sebep olmamak için durumu bir de resim ile anlatmak istedim. resim ektedir.
    konuyla ilgili yardımcı olacak arkadaşlara şimdiden teşekkürler

    Merhaba;
    Homefeatured modülülün ayarlar sayfasından 10 ürün göstermesini seçebilirsiniz. FAKAT:
    Bu modül standartta 4 ürünü bir satırda gösterir. 10 ürün 4 ün katı olmadığı için 4+4+2 şeklinde görünecek dolayısıyla simetriyi bozacaktır.
    12 veya 8 seçmenizi tavsiye ederim. Ama 10 da ısrar ediyorsanız modülün TPL dosyasının ilk satırlarında satır başına ürün sayısı bulunuyor. Ayrıca tema dosyanızda featured products ile ilgili CSS stillleri bulunuyor. Bunları matematik hesaplarla 5 ürün gösterecek şekilde düzenleyebilirsiniz.

    İpucu: orta bölüm standart temada 556px dir. Homefeatured modülü 5px margin değerine sahiptir. 556-2×5 / 5 = 109.2px + her bir ürün bloğuna 4 px padding verirseniz her ürün için 100px genişlik kullanmanız gerekecek.

    İkinci istediğinizi anlatmam çok uzun sürer ama modülün içinden yapabilirsiniz.

    Kolay gelsin.

    Cevap
  2. alimurat - 15 Ağustos 2017 at 13:28

    öncelikle cevap için sağolun ama benim aradığım cevap bu değil. aynı satır da 3 yada 4 ürün olması problem değil. her kategoriye ait 8 de olur 20 de olur ürün sayısı. oraya takılmadan sormak istediğim şey farklı.
    önemli olan her kategoriye ait ürünleri anasayfada göstermek. resime biraz daha dikkatli bakarsanız anlatmak istediğimi daha iyi anlarsınız.
    anasayfada bebek ürünleri yazıp altına 8 ürün listeleyecem ve bitecek. sonra alta oyuncaklar yazıp bi de oyuncak kategorisinden 8 ürün listeleyeceğim

    Cevap
  3. MahmutGulerce - 15 Ağustos 2017 at 13:28

    Merhaba;
    Bu istediğinizi yapabilmek için php ve smarty bilmek gerekiyor. Bunun yapılmış ama sekmeli hali var.

    Amerikayı yeniden keşvedecekler okumaya devam etsin anlatıyorum.

    Her modülün dosyasında Hook (yerleşim denebilir) fonksiyonları vardır.
    Bizim modülün hook fonkisyonu

    Dosya homefeatured.php
    Satır 64 – 81

    function hookHome($params)    {        global $smarty;        $category = new Category(1);        $nb = intval(Configuration::get('HOME_FEATURED_NBR'));        $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10));        $smarty->assign(array(            'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),            'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),            'category' => $category,            'products' => $products,            'currency' => new Currency(intval($params['cart']->id_currency)),            'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),            'productNumber' => sizeof($products),            'homeSize' => Image::getSize('home')        ));        return $this->display(__FILE__, 'homefeatured.tpl');    }

    Bunu şu şekilde değiştiriyorum

    function hookHome($params)    {        global $smarty;        $category1 = new Category(3); // Buraya kategorinizin id sini yazin        $category2 = new Category(4); // Buraya diger kategorinizin id sini yazin        $nb = intval(Configuration::get('HOME_FEATURED_NBR'));        $products1 = $category1->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10));        $products2 = $category2->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10));        $smarty->assign(array(            'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),            'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),            'category1' => $category1->name[intval($params['cookie']->id_lang)],            'category2' => $category2->name[intval($params['cookie']->id_lang)],            'products1' => $products1,            'products2' => $products2,            'currency' => new Currency(intval($params['cart']->id_currency)),            'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),            'productNumber1' => sizeof($products1),            'productNumber2' => sizeof($products2),            'homeSize' => Image::getSize('home')        ));        return $this->display(__FILE__, 'homefeatured.tpl');    }

    TPL dosyasını da anlatırdım ama sayfayı açan bayılmasın diye sadece ekliyorum.

    Bende çalışmadı diyenleri ve teşekkür etmeden forumu sömürenleri kendime daha yakın hissettiğimden kesinlikle gönül koymuyorum :D
    Ama ben denedim mis gibi çalıştı lütfen gerçekçi olalım :D

    Talep olursa modüle çevirebilirim, admin panelden kategori seçimi yapılabilir. 3-4 kategori için de düzenlenebilir.

    Cevap
  4. alimurat - 15 Ağustos 2017 at 13:28

    Allah senden razı olsun. Allah ne muradın varsa versin. :)

    Cevap
  5. MahmutGulerce - 15 Ağustos 2017 at 13:28

    Hepimizden Alimurat Kardeşim/Abim
    Hayırlı satışlar dilerim :)

    Cevap
  6. alimurat - 15 Ağustos 2017 at 13:28

    öncelikle bu kodlar süper çalıştı fakat şöyle bi hata oluştu.
    yine öncelikle birkaç dipnot vereyim ve daha sonra oluşan hatayı söyleyeyim.
    – ben bu kodları 3 kategori için uyarladım. homefeatured ürün gösterim sayısını 24 ürüne göre ayarladım.(4 ve katları olarak. bu ürün sayısı 48 de olabilir daha üstü de…)
    1. kategoride 24 ürünü listeledim (sorun yok)
    2. kategoride 24 ürünü listeledim (sorun yok)
    3. kategoride de 24 ürünü listeleyeceğim ama o kategoriye ait 24 ürün yok. 9 tane ürün var. böyle olunca 3 kategoriden footer’a katar yaklaşık 15-20 cm kadar uzuun ve manasız bi boşluk oluşuyor.

    burada homefeatured’e ayarlanan sayı ne olursa olsun ürün bittiğinde işlemi bitirecek bir düzenleme nasıl yapabiliriz?

    Cevap
  7. MahmutGulerce - 15 Ağustos 2017 at 13:28

    öncelikle tekrar teşekkürler cevap için.
    ama ben bu açıklamaları kendi kodlarıma uyarlayamadım.

    function hookHome($params)    {            global $smarty;            $category1 = new Category(21);    $category2 = new Category(11); // Kategori 2 için örnek uygulama $col = 4 // Sütun sayısı$nop = $category2->countNbProductAndSub($category2->id, intval($params['cookie']->id_lang) ); // kategorideki ürün sayısı (Number Of Product)$norow = ceil($nop/$col); // Oluşacak satır sayısını bulma (Number Of Rows) * Örn: Eğer 5 ürün varsa sonuç ceil ile iki çıkacaktır.if (!$nop % $col)  $norow--; // Son satırda 4 üründen az varsa satır azaltma$limit = $norow*$col; // toplam gösterilecek ürün düzeltmesi    $category3 = new Category(5);     $nb = intval(Configuration::get('HOME_FEATURED_NBR'));         $products1 = $category1->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'date_add', 'DESC'); // ve son olarak 4 ün katı kadar ürün içeren sorgu   $products2 = $category2->getProducts(intval($params['cookie']->id_lang), 1, $limit, 'date_add', 'DESC');    $products3 = $category3->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'date_add', 'DESC');        $smarty->assign(array('allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),             'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),            'category1' => $category1->name[intval($params['cookie']->id_lang)],            'category2' => $category2->name[intval($params['cookie']->id_lang)],            'category3' => $category3->name[intval($params['cookie']->id_lang)],       'products1' => $products1,        'products2' => $products2,            'products3' => $products3,        'currency' => new Currency(intval($params['cart']->id_currency)),            'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),         'productNumber1' => sizeof($products1),            'productNumber2' => sizeof($products2),           'productNumber3' => sizeof($products3),       'homeSize' => Image::getSize('home')));        return $this->display(__FILE__, 'homefeatured.tpl');    } }

    Örnek olarak category2 için yaptım hocam bu gün çok yoğunum fırsat bulunca temize çekerim.

    Cevap
  8. alimurat - 15 Ağustos 2017 at 13:28

    öncelikle tekrar teşekkürler cevap için.
    ama ben bu açıklamaları kendi kodlarıma uyarlayamadım.

    function hookHome($params)    {            global $smarty;            $category1 = new Category(21);    $category2 = new Category(11);     $category3 = new Category(5);     $nb = intval(Configuration::get('HOME_FEATURED_NBR'));         $products1 = $category1->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'date_add', 'DESC');     $products2 = $category2->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'date_add', 'DESC');    $products3 = $category3->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10), 'date_add', 'DESC');        $smarty->assign(array('allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),             'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),            'category1' => $category1->name[intval($params['cookie']->id_lang)],            'category2' => $category2->name[intval($params['cookie']->id_lang)],            'category3' => $category3->name[intval($params['cookie']->id_lang)],       'products1' => $products1,        'products2' => $products2,            'products3' => $products3,        'currency' => new Currency(intval($params['cart']->id_currency)),            'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),         'productNumber1' => sizeof($products1),            'productNumber2' => sizeof($products2),           'productNumber3' => sizeof($products3),       'homeSize' => Image::getSize('home')));        return $this->display(__FILE__, 'homefeatured.tpl');    } }
    Cevap
  9. MahmutGulerce - 15 Ağustos 2017 at 13:28

    Merhaba;
    İlgili katgoride ürün varsa göstersin yoksa göstermesin isterseniz örneğin 2. kategori

    {if $producs2}// İkinci kategori için tpl kodları burada olacak<h2>{$category2.name}</h2>{foreach from=$products2........{/if}

    Eğer 4 ün katı değilse göstermesin isterseniz

    {if $products2|@count mod 4}....{/if}

    Fakat 5 ürün varsa hiçbirşey göstermez.
    Bu matematik işlemi basit değil. Smartyde de yapılır ama performans paranoyağı birisi olarak bu işlemleri php de yapmanızı öneririm. Smarty de aynı şeyi söylüyor zaten. Beni matematiğe bulaştırmayın diyor.

    Öncelikle mysql deki ürün sayısını
    “COUNT FROM” ile alabileceğiniz gibi daha pratik olarak prestashopun category sınıfının countNbProductAndSub diye bir fonksiyonu var.

    Örnek php dosyasında

    $col = 4 // Sütun sayısı$category2 = new Category(2);$nop = $category2->countNbProductAndSub($category2->id, intval($params['cookie']->id_lang) ); // kategorideki ürün sayısı (Number Of Product)$norow = ceil($nop/$col); // Oluşacak satır sayısını bulma (Number Of Rows) * Örn: Eğer 5 ürün varsa sonuç ceil ile iki çıkacaktır.if (!$nop % $col)  $norow--; // Son satırda 4 üründen az varsa satır azaltma$limit = $norow*$col; // toplam gösterilecek ürün düzeltmesi// ve son olarak 4 ün katı kadar ürün içeren sorgu$products2 = $category2->getProducts(intval($params['cookie']->id_lang), 1, $limit);

    Kolay gelsin
    Not: Deneyemedim syntax hataları olabilir.

    Cevap
  10. alimurat - 15 Ağustos 2017 at 13:28

    sanırım temize çekmeni beklemem gerek :)

    Cevap
  11. MahmutGulerce - 15 Ağustos 2017 at 13:28

    Evet temize çekeyim en iyisi. Satır düzenlemesinin ayrı bir fonksiyon olarak çalışması daha mantıklı olacak. Zaten kod yazım standartları konusunda aşırı hassas birisiyim yukarıdaki kalabalığı görünce moralim bozuluyor.

    Başımda bir php kütüphane işi var bu gün 2500+ satır kod yazdım ve bitmedi halen bitirince bunu halledecem.

    Cevap
  12. alimurat - 15 Ağustos 2017 at 13:28

    sorun çözülmüştür. ilgilenen ilgilenmeye çalışan arkadaşlara sonsuz teşekkürler.
    http://www.prestasho…delikanl_nedir_ başlıklı foruma katılımlarınızı bekliyorum

    Cevap
  13. alimurat - 15 Ağustos 2017 at 13:28

    tekrar s.a.
    Mahmut bi derleme ile homefeatured sorununda çözüme çok yaklaşmıştık ama dün bu konuda son noktayı koyamadık.
    inşallah safa ile gerçekleşen (çoğunluğu yanlış anlaşılma ve aşırı tepkiler sonucu çıkan) gereksiz bir atışma bu konuda olumsuz bir etki bırakmamıştır.
    selamlar

    Cevap
  14. ugur onur - 15 Ağustos 2017 at 13:28

    alimurat bey,

    konu başlığinı homefeatured modülünde her kategoriden 10 ürün göstermek (ÇÖZÜLDÜ) şeklinde değiştirmeniz mümkün mü acaba..?

    iyi akşamlar

    Cevap
  15. tatar - 15 Ağustos 2017 at 13:28

    Konu uçmuş modul olarak yayınlamanız mumkunmu kayboldum kodların arasında :)

    Cevap
  16. MahmutGulerce - 15 Ağustos 2017 at 13:28

    Konu uçmuş modul olarak yayınlamanız mumkunmu kayboldum kodların arasında :)

    Hocam bana iki üç gün sonra hatırlatırsan modül yapıp buradan yayınlarım.

    Cevap
  17. melanolic61 - 15 Ağustos 2017 at 13:28

    Merhaba öncelikle anlatımın çok güzel ve anlaşılırdı ilk verdiğin kodları aldım sadece tpl de değişiklik yaparak siteye uyarladım çok güzel oldu ancak bi sorunum var.

    Örneğin bir kategoriden 10 ürün çekiyor ama eklenen ilk 10 ürünü cekiyor. Benim istediğim o kategoriye bir ürün ekleyince ana sayfada yerini alsın. Kısaca kategoriye ait son ürünleri göstersin. Bunu nasıl yapabilirin.

    Cevap
  18. melanolic61 - 15 Ağustos 2017 at 13:28

    Merhaba öncelikle anlatımın çok güzel ve anlaşılırdı ilk verdiğin kodları aldım sadece tpl de değişiklik yaparak siteye uyarladım çok güzel oldu ancak bi sorunum var.

    Örneğin bir kategoriden 10 ürün çekiyor ama eklenen ilk 10 ürünü cekiyor. Benim istediğim o kategoriye bir ürün ekleyince ana sayfada yerini alsın. Kısaca kategoriye ait son ürünleri göstersin. Bunu nasıl yapabilirin.

    güncel

    Cevap
  19. driwer - 15 Ağustos 2017 at 13:28

    aynı sorun bendede var lütfen yardım edin sadece ilk eklediğim konular ana sayfada çıkıyor diğer eklediğim konular çıkmıyor teşekkürler

    Cevap
  20. askinjew - 15 Ağustos 2017 at 13:28

    Mahmut bey konu çözüldü olarak kapatılmış ama bu konu ile igili bir modül yapıp yayınlayacağınızı söylemişsiniz (gerçi çok uzun zaman olmuş ama ben daha yeniyim hoşgörünüze sığınıyorum) yayınladınızmı acaba bulamadaımda. Acemiliğimden yanlış da arıyor olabilirim yardımcı olabilirmisiniz. teşekkürler

    Cevap
  21. serhan - 15 Ağustos 2017 at 13:28

    1.5.3.1 versiyonu için nasıl yapmamız gerekli peki

    Cevap
  22. Şahin YILDIZ - 15 Ağustos 2017 at 13:28

    Mahmut bey yine bombayı patlatmışsınız… kotlamayı kullandım ..sorunsuz çalışıyor..

    Cevap

Cevap bırakın