Jump to content

rameajans

Members
  • Posts

    4
  • Joined

  • Last visited

Profile Information

  • First Name
    Emrah
  • Last Name
    Demirci

rameajans's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. 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); }
  2. Ü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'); } }
  3. ö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ı?
  4. 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?
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More