Şimdi Ara

Opencart 2x ürün liste sayfalarında stok bilgisi gösterme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
1.080
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Opencart sitede ürünlerin listelendiği sayfalarda stok bilgisi daha doğrusu (tükendi yazısını)göstermek istiyorum.
    bir çok kaynağa ulaştım hemen hemen hepsi aynı yöntem.
    mantık şu: controller > stok bilgisi tanımlıyoruz.
    product tpl > stok bilgisi yazdırıyoruz. hepsini denedim "undefined variable" hatasını alıyorum.

    tpl dosyasına da controller > product.php dosyasını şuşekilde çağırıyorum yine hata veriyor. $this->load->controller(product/product.php);

    nasıl yapacağım hakkında fikri olan var mı?



  • Merhaba,
    Stoktaki ürün miktarı 0 veya daha az olunca "Tükendi" yazısını göstermek için şöyle yapıyoruz.

    OpenCart 2.3.0.2 versiyonunu esas alarak anlatıyorum. Sanıyorum ki bütün 2.x serisinde geçerli olur.

    1) Önce bir ürünün gösterildiği ürün detay sayfasında yapalım.

    [kök dizin]/catalog/controller/product/product.php dosyasını açıyoruz.

    Aşağıdaki satırları buluyoruz.
    			$data['product_id'] = (int)$this->request->get['product_id']; 
    $data['manufacturer'] = $product_info['manufacturer'];
    $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']);
    $data['model'] = $product_info['model'];
    $data['reward'] = $product_info['reward'];
    $data['points'] = $product_info['points'];
    $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');


    Burada $data['points'] = $product_info['points']; satırından sonra
    $data['quantity'] = $product_info['quantity'];
    satırını ekliyoruz.

    Yani şöyle gözükecek;

    			$data['product_id'] = (int)$this->request->get['product_id']; 
    $data['manufacturer'] = $product_info['manufacturer'];
    $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']);
    $data['model'] = $product_info['model'];
    $data['reward'] = $product_info['reward'];
    $data['points'] = $product_info['points'];
    $data['quantity'] = $product_info['quantity'];
    $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');


    Bu dosyayı kaydedelim ve şimdi,
    [kök dizin]/catalog/view/theme/default/template/product/product.tpl dosyasını açıyoruz.

    (Ben standart OpenCart teması üzerinde yaptığım için bu dosyayı açıyorum. Eğer siz farklı bir tema kullanıyorsanız kendi temanızın product.tpl dosyasını bulun ve onu açın. Onun da muhtemel yolu şöyle olacaktır. [kök dizin]/catalog/view/theme/[tema ismi]/template/product/product.tpl )

    Bu dosyada <?php if ($quantity <= 0) { ?>Tükendi<?php } ?> ifadesini kullanacağız. Ben bunu fiyattan önce bir yerlere yazdım. Şöyle görünüyor.

     
    <ul class="list-unstyled">
    <?php if ($manufacturer) { ?>
    <li><?php echo $text_manufacturer; ?> <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=131280395&url=<?php echo $manufacturers; ?>" data-href="<?php echo $manufacturers; ?>"><?php echo $manufacturer; ?></a></li>
    <?php } ?>
    <li><?php echo $text_model; ?> <?php echo $model; ?></li>
    <?php if ($reward) { ?>
    <li><?php echo $text_reward; ?> <?php echo $reward; ?></li>
    <?php } ?>
    <li><?php echo $text_stock; ?> <?php echo $stock; ?></li>
    <li><?php if ($quantity <= 0) { ?>Tükendi<?php } ?></li>
    </ul>


    2) Gelelim kategori sayfasında "Tükendi" yazmaya...

    Yine benzer bir yol takip edeceğiz.

    [kök dizin]/catalog/controller/product/category.php dosyasını açıyoruz.

    Bu dosyada
    'stock' => $result['quantity'],
    satırını ekleyeceğiz. Ekleyeceğimiz yer şurası

    				$data['products'][] = array( 
    'product_id' => $result['product_id'],
    'thumb' => $image,
    'name' => $result['name'],
    'stock' => $result['quantity'],
    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..',
    'price' => $price,
    'special' => $special,
    'tax' => $tax,
    'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1,
    'rating' => $result['rating'],
    'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
    );


    Bu dosyayı kaydedelim ve şimdi,
    [kök dizin]/catalog/view/theme/default/template/product/category.tpl dosyasını açıyoruz. (Tema kullanıyorsanız lütfen daha önce yaptığım uyarıyı dikkate alın.)

    Burada
    <?php if ($product['stock'] <= 0){ ?>Tükendi<?php } ?>
    ifadesini kullanacağız.

    Ben aşağıdaki kodların arasına ekledim.
                    <p><?php echo $product['description']; ?></p> 
    <?php if ($product['price']) { ?>
    <p class="price">
    <?php if (!$product['special']) { ?>
    <?php echo $product['price']; ?>
    <?php } else { ?>
    <span class="price-new"><?php echo $product['special']; ?></span> <span class="price-old"><?php echo $product['price']; ?></span>
    <?php } ?>
    <?php if ($product['tax']) { ?>
    <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
    <?php } ?>
    </p>
    <p><?php if ($product['stock'] <= 0){ ?>Tükendi<?php } ?></p>
    <?php } ?>


    Eveeet... Dosyalarımızı kaydedip kontrollerimizi yapalım. Artık ürün detay sayfasında ve ürünlerin listelendiği kategori sayfalarında stokta 0 veya daha az bir ürün kaldıysa "Tükendi" yazısını göreceksiniz. Tabi siz "Tükendi" yazısını daha afili yazabilirsiniz veya yazı yerine resim, badge,... vs koyabilirsiniz. Ben sade yaptım, fazla yoğurt kullanmadım. Tarife bağımlı kalmak zorunda değilsiniz kendiniz değişik soslar hazırlayabilirsiniz. Hatta madem ürün tükendi "Sepete Ekle" butonunu pasif duruma getirmek veya kaldırmak lazım. Ama böyle şeyleri size bırakıyorum. Kolay gelsin.




  • quote:

    Orijinalden alıntı: DoubleDragon

    Merhaba,
    Stoktaki ürün miktarı 0 veya daha az olunca "Tükendi" yazısını göstermek için şöyle yapıyoruz.

    OpenCart 2.3.0.2 versiyonunu esas alarak anlatıyorum. Sanıyorum ki bütün 2.x serisinde geçerli olur.

    1) Önce bir ürünün gösterildiği ürün detay sayfasında yapalım.

    [kök dizin]/catalog/controller/product/product.php dosyasını açıyoruz.

    Aşağıdaki satırları buluyoruz.
    			$data['product_id'] = (int)$this->request->get['product_id']; 
    $data['manufacturer'] = $product_info['manufacturer'];
    $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']);
    $data['model'] = $product_info['model'];
    $data['reward'] = $product_info['reward'];
    $data['points'] = $product_info['points'];
    $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');


    Burada $data['points'] = $product_info['points']; satırından sonra
    $data['quantity'] = $product_info['quantity'];
    satırını ekliyoruz.

    Yani şöyle gözükecek;

    			$data['product_id'] = (int)$this->request->get['product_id']; 
    $data['manufacturer'] = $product_info['manufacturer'];
    $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']);
    $data['model'] = $product_info['model'];
    $data['reward'] = $product_info['reward'];
    $data['points'] = $product_info['points'];
    $data['quantity'] = $product_info['quantity'];
    $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');


    Bu dosyayı kaydedelim ve şimdi,
    [kök dizin]/catalog/view/theme/default/template/product/product.tpl dosyasını açıyoruz.

    (Ben standart OpenCart teması üzerinde yaptığım için bu dosyayı açıyorum. Eğer siz farklı bir tema kullanıyorsanız kendi temanızın product.tpl dosyasını bulun ve onu açın. Onun da muhtemel yolu şöyle olacaktır. [kök dizin]/catalog/view/theme/[tema ismi]/template/product/product.tpl )

    Bu dosyada <?php if ($quantity <= 0) { ?>Tükendi<?php } ?> ifadesini kullanacağız. Ben bunu fiyattan önce bir yerlere yazdım. Şöyle görünüyor.

     
    <ul class="list-unstyled">
    <?php if ($manufacturer) { ?>
    <li><?php echo $text_manufacturer; ?> <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=131283780&url=<?php echo $manufacturers; ?>" data-href="<?php echo $manufacturers; ?>"><?php echo $manufacturer; ?></a></li>
    <?php } ?>
    <li><?php echo $text_model; ?> <?php echo $model; ?></li>
    <?php if ($reward) { ?>
    <li><?php echo $text_reward; ?> <?php echo $reward; ?></li>
    <?php } ?>
    <li><?php echo $text_stock; ?> <?php echo $stock; ?></li>
    <li><?php if ($quantity <= 0) { ?>Tükendi<?php } ?></li>
    </ul>


    2) Gelelim kategori sayfasında "Tükendi" yazmaya...

    Yine benzer bir yol takip edeceğiz.

    [kök dizin]/catalog/controller/product/category.php dosyasını açıyoruz.

    Bu dosyada
    'stock' => $result['quantity'],
    satırını ekleyeceğiz. Ekleyeceğimiz yer şurası

    				$data['products'][] = array( 
    'product_id' => $result['product_id'],
    'thumb' => $image,
    'name' => $result['name'],
    'stock' => $result['quantity'],
    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..',
    'price' => $price,
    'special' => $special,
    'tax' => $tax,
    'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1,
    'rating' => $result['rating'],
    'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
    );


    Bu dosyayı kaydedelim ve şimdi,
    [kök dizin]/catalog/view/theme/default/template/product/category.tpl dosyasını açıyoruz. (Tema kullanıyorsanız lütfen daha önce yaptığım uyarıyı dikkate alın.)

    Burada
    <?php if ($product['stock'] <= 0){ ?>Tükendi<?php } ?>
    ifadesini kullanacağız.

    Ben aşağıdaki kodların arasına ekledim.
                    <p><?php echo $product['description']; ?></p> 
    <?php if ($product['price']) { ?>
    <p class="price">
    <?php if (!$product['special']) { ?>
    <?php echo $product['price']; ?>
    <?php } else { ?>
    <span class="price-new"><?php echo $product['special']; ?></span> <span class="price-old"><?php echo $product['price']; ?></span>
    <?php } ?>
    <?php if ($product['tax']) { ?>
    <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
    <?php } ?>
    </p>
    <p><?php if ($product['stock'] <= 0){ ?>Tükendi<?php } ?></p>
    <?php } ?>


    Eveeet... Dosyalarımızı kaydedip kontrollerimizi yapalım. Artık ürün detay sayfasında ve ürünlerin listelendiği kategori sayfalarında stokta 0 veya daha az bir ürün kaldıysa "Tükendi" yazısını göreceksiniz. Tabi siz "Tükendi" yazısını daha afili yazabilirsiniz veya yazı yerine resim, badge,... vs koyabilirsiniz. Ben sade yaptım, fazla yoğurt kullanmadım. Tarife bağımlı kalmak zorunda değilsiniz kendiniz değişik soslar hazırlayabilirsiniz. Hatta madem ürün tükendi "Sepete Ekle" butonunu pasif duruma getirmek veya kaldırmak lazım. Ama böyle şeyleri size bırakıyorum. Kolay gelsin.

    Teşkkürler hocam. categor.php ve search.php sayfalarına stok tanımlayıp .tpl dosyalarına çektim. başarılı bir şekilde çalışıyor.
    tek bir sıkıntı oluşturdu: anasayfada "önerilen ürünler" gibi ürünler sergilediğimizde categor.tpl 'e dahil olmadığı için bütün ürünler tükendi görünüyor. Onu da php ile hallettim.
    <?php 
    $homepage = "/";
    $currentpage = $_SERVER['REQUEST_URI'];
    if ($homepage != $currentpage) {
    if ($product['stock'] < 1) {
    echo '<div class="tukendi-yazi">TÜKENDİ</div>';
    }
    }
    ?>


    Aslında bu işin doğrusu "stock_status_id" üzerinden gitmek.Çünkü opencart ta stok durumlarını panelden tanımlayabiliyoruz.

    Paylaşım için teşekkürler hocam...




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.