rameajans Posted October 10, 2016 Share Posted October 10, 2016 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 More sharing options...
safa Posted October 11, 2016 Share Posted October 11, 2016 Herşeyi doğru yapmışssınız gibi gözüküyor. vertabanından toblolarını kontrol ettinizmi ? detaylı bakmadım tablo alanlarında kısıtlama olabilir. Link to comment Share on other sites More sharing options...
rameajans Posted October 11, 2016 Author Share Posted October 11, 2016 ö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 More sharing options...
safa Posted October 13, 2016 Share Posted October 13, 2016 Ü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 More sharing options...
rameajans Posted October 13, 2016 Author Share Posted October 13, 2016 Ü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 More sharing options...
safa Posted October 18, 2016 Share Posted October 18, 2016 Selamlar, kusura bakma yoğunluktan geç cevap verebildim. ücretli olarak http://addons.prestashop.com/en/4922-advanced-featured-products.html bu modülü kullanmıştım geçen sene. yeni ürünler vs. de istediğin ürünleri göstermek ile ilgili bir aksilik çıkmassa bugün detaylı bir yazı hazırlarım foruma iyi çalışmalar.. Link to comment Share on other sites More sharing options...
rameajans Posted October 23, 2016 Author Share Posted October 23, 2016 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now