Jump to content

ean13 ve upc alanlarında format kontrolü kaldırma


Recommended Posts

Merhabalar,

 

upc ve ean13 alanlarını farklı bir amaçla kullanmak istiyorum. fakat belli bir formatta kullanabiliyoruz o alanları "classes/Product.php" kısmından kaldırdım fakat kombinasyonlarda kalkmadı. diğer sayfalarda gördüğümü değiştirdim. hatta "classess/Validate.php" dosyasından da fonksiyonu düzenledim fakat kombinasyonlar kısmına etki etmedi. hala upc alanı geçersiz diyor. bunun için ne yapabilirim?

Link to comment
Share on other sites

öncelikle teşekkürler cevabınız için. dikkatimden kaçmış bir alan varmış oyüzden hata vermiş. çözdüm hatayı teşekkürler. birşey daha sormak istiyorum size. yeni ve indirimli ürünleri bizim seçmemiz mümkün mü? sistem otomatik seçmese? böyle bir modül var mı?

Link to comment
Share on other sites

Ücretli  var bu konuda,

ücretsiz bir kod paylaşımı yaparım ben sadece kendi seçtiğin ürünlerin id lerini , haftaya paylaşım sağlayıp burdan linkini paylaşırım , inş.

NewProductsController.php

BestSalesController.php

PricesDropController.php

dosyları içinde esitleme yepılacak şekilde düzenlenebilir.

modül olarak yapılacak iş bu dosyalara override yapılarak olabilir yada prestashop hookları içine register edilerek yapılabilir.

Link to comment
Share on other sites

Ücretli  var bu konuda,

ücretsiz bir kod paylaşımı yaparım ben sadece kendi seçtiğin ürünlerin id lerini , haftaya paylaşım sağlayıp burdan linkini paylaşırım , inş.

NewProductsController.php

BestSalesController.php

PricesDropController.php

dosyları içinde esitleme yepılacak şekilde düzenlenebilir.

modül olarak yapılacak iş bu dosyalara override yapılarak olabilir yada prestashop hookları içine register edilerek yapılabilir.

 

Ücretli modüller nelerdir? Ayrıca bu konuda yazınızı bekliyorum. NewProductsController.php dosyasının içeriğini paylaştım aşağıda. Ben yeni ürünler diye bir kategori oluşturdum. O kategorinin içine attığım ürünler yeni olarak etiketlensin istiyorum. Bunun için nasıl bir değişiklik yapabilirim? orderby kısmında date_add en büyük değer şeklinde sıralanmış fakat burada sorguya kategori_id yi nasıl eklerim bulamadım. Örnek olarak gösterebilirseniz diğer sayfalara da uygulayabilirim aynı sistemi.

<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2015 PrestaShop SA
*  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/


class NewProductsControllerCore extends FrontController
{
    public $php_self = 'new-products';


    public function setMedia()
    {
        parent::setMedia();
        $this->addCSS(_THEME_CSS_DIR_.'product_list.css');
    }


    /**
     * Assign template vars related to page content
     * @see FrontController::initContent()
     */
    public function initContent()
    {
        parent::initContent();


        $this->productSort();


        // Override default configuration values: cause the new products page must display latest products first.
        if (!Tools::getIsset('orderway') || !Tools::getIsset('orderby')) {
            $this->orderBy = 'date_add';
            $this->orderWay = 'DESC';
        }


        $nb_products = (int)Product::getNewProducts(
            $this->context->language->id,
            (isset($this->p) ? (int)$this->p - 1 : null),
            (isset($this->n) ? (int)$this->n : null),
            true
        );


        $this->pagination($nb_products);


        $products = Product::getNewProducts($this->context->language->id, (int)$this->p - 1, (int)$this->n, false, $this->orderBy, $this->orderWay);
        $this->addColorsToProductList($products);


        $this->context->smarty->assign(array(
            'products' => $products,
            'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
            'nbProducts' => (int)$nb_products,
            'homeSize' => Image::getSize(ImageType::getFormatedName('home')),
            'comparator_max_item' => Configuration::get('PS_COMPARATOR_MAX_ITEM')
        ));


        $this->setTemplate(_PS_THEME_DIR_.'new-products.tpl');
    }
}
Link to comment
Share on other sites

Merhabalar,

 

Yazınızı bekledim ama göremedim. classes/Product.php dosyasının bir kısmını aşağıda paylaştım. SQL'de ps_product tablosunda "yeni_urun" adında int formatında bir sütun oluşturdum. 0 değeri normal ürün, 1 değeri yeni ürün olarak çalışsın istiyorum. Admin panelinde ürün düzenleme sayfasında information bölümüne radio button koyarak bu değerin değişmesini sağladım. Yani yönetim panelinden değiştirebiliyorum "yeni_urun" sütunundaki 0 ve 1 değerini. Fakat classes/Product.php dosyasında bu düzenlemeyi yapamadım. date_add alanlarını temizleyip yeni_urun = 1 ise yeni ürün olarak belirtilsin istiyorum. bunu nasıl sağlayabilirim? nasıl bir düzenleme yapmam gerek? Kodlar aşağıdadır. Hangi alanları ekleyip silmem gerek?

    /**
    * Get new products
    *
    * @param int $id_lang Language id
    * @param int $pageNumber Start from (optional)
    * @param int $nbProducts Number of products to return (optional)
    * @return array New products
    */
    public static function getNewProducts($id_lang, $page_number = 0, $nb_products = 10, $count = false, $order_by = null, $order_way = null, Context $context = null)
    {
        if (!$context) {
            $context = Context::getContext();
        }

        $front = true;
        if (!in_array($context->controller->controller_type, array('front', 'modulefront'))) {
            $front = false;
        }

        if ($page_number < 0) {
            $page_number = 0;
        }
        if ($nb_products < 1) {
            $nb_products = 10;
        }
        if (empty($order_by) || $order_by == 'position') {
            $order_by = 'date_add';
        }
        if (empty($order_way)) {
            $order_way = 'DESC';
        }
        if ($order_by == 'id_product' || $order_by == 'price' || $order_by == 'date_add' || $order_by == 'date_upd') {
            $order_by_prefix = 'product_shop';
        } elseif ($order_by == 'name') {
            $order_by_prefix = 'pl';
        }
        if (!Validate::isOrderBy($order_by) || !Validate::isOrderWay($order_way)) {
            die(Tools::displayError());
        }

        $sql_groups = '';
        if (Group::isFeatureActive()) {
            $groups = FrontController::getCurrentCustomerGroups();
            $sql_groups = ' AND EXISTS(SELECT 1 FROM `'._DB_PREFIX_.'category_product` cp
				JOIN `'._DB_PREFIX_.'category_group` cg ON (cp.id_category = cg.id_category AND cg.`id_group` '.(count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1').')
				WHERE cp.`id_product` = p.`id_product`)';
        }

        if (strpos($order_by, '.') > 0) {
            $order_by = explode('.', $order_by);
            $order_by_prefix = $order_by[0];
            $order_by = $order_by[1];
        }

        if ($count) {
            $sql = 'SELECT COUNT(p.`id_product`) AS nb
					FROM `'._DB_PREFIX_.'product` p
					'.Shop::addSqlAssociation('product', 'p').'
					WHERE product_shop.`active` = 1
					AND product_shop.`date_add` > "'.date('Y-m-d', strtotime('-'.(Configuration::get('PS_NB_DAYS_NEW_PRODUCT') ? (int)Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY')).'"
					'.($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '').'
					'.$sql_groups;
            return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql);
        }

        $sql = new DbQuery();
        $sql->select(
            'p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`,
			pl.`meta_keywords`, pl.`meta_title`, pl.`name`, pl.`available_now`, pl.`available_later`, image_shop.`id_image` id_image, il.`legend`, m.`name` AS manufacturer_name,
			product_shop.`date_add` > "'.date('Y-m-d', strtotime('-'.(Configuration::get('PS_NB_DAYS_NEW_PRODUCT') ? (int)Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY')).'" as new'
        );

        $sql->from('product', 'p');
        $sql->join(Shop::addSqlAssociation('product', 'p'));
        $sql->leftJoin('product_lang', 'pl', '
			p.`id_product` = pl.`id_product`
			AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl')
        );
        $sql->leftJoin('image_shop', 'image_shop', 'image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$context->shop->id);
        $sql->leftJoin('image_lang', 'il', 'image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang);
        $sql->leftJoin('manufacturer', 'm', 'm.`id_manufacturer` = p.`id_manufacturer`');

        $sql->where('product_shop.`active` = 1');
        if ($front) {
            $sql->where('product_shop.`visibility` IN ("both", "catalog")');
        }
        $sql->where('product_shop.`date_add` > "'.date('Y-m-d', strtotime('-'.(Configuration::get('PS_NB_DAYS_NEW_PRODUCT') ? (int)Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY')).'"');
        if (Group::isFeatureActive()) {
            $groups = FrontController::getCurrentCustomerGroups();
            $sql->where('EXISTS(SELECT 1 FROM `'._DB_PREFIX_.'category_product` cp
				JOIN `'._DB_PREFIX_.'category_group` cg ON (cp.id_category = cg.id_category AND cg.`id_group` '.(count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1').')
				WHERE cp.`id_product` = p.`id_product`)');
        }

        $sql->orderBy((isset($order_by_prefix) ? pSQL($order_by_prefix).'.' : '').'`'.pSQL($order_by).'` '.pSQL($order_way));
        $sql->limit($nb_products, $page_number * $nb_products);

        if (Combination::isFeatureActive()) {
            $sql->select('product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity, IFNULL(product_attribute_shop.id_product_attribute,0) id_product_attribute');
            $sql->leftJoin('product_attribute_shop', 'product_attribute_shop', 'p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop='.(int)$context->shop->id);
        }
        $sql->join(Product::sqlStock('p', 0));

        $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);

        if (!$result) {
            return false;
        }

        if ($order_by == 'price') {
            Tools::orderbyPrice($result, $order_way);
        }

        $products_ids = array();
        foreach ($result as $row) {
            $products_ids[] = $row['id_product'];
        }
        // Thus you can avoid one query per product, because there will be only one query for all the products of the cart
        Product::cacheFrontFeatures($products_ids, $id_lang);
        return Product::getProductsProperties((int)$id_lang, $result);
    }
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...