LineTV Posted June 19, 2014 Share Posted June 19, 2014 (edited) Hello All, I am getting this error when I open up Module in PS 1.6.... 2 errors blocknewproducts (parse error in /modules/blocknewproducts/blocknewproducts.php) blocknewproducts (class missing in /modules/blocknewproducts/blocknewproducts.php) Is there anything Im missing, Can someone help, here is what my blocknewproducts.php file look like: if (!defined('_PS_VERSION_')) exit;class BlockNewProducts extends Module{ protected static $cache_new_products; public function __construct() { $this->name = 'blocknewproducts'; $this->tab = 'front_office_features'; $this->version = '1.9'; $this->author = 'PrestaShop'; $this->need_instance = 0; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('New products block'); $this->description = $this->l('Displays a block featuring your store\'s newest products.'); $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); } public function install() { $success = (parent::install() && $this->registerHook('header') && $this->registerHook('addproduct') && $this->registerHook('updateproduct') && $this->registerHook('deleteproduct') && Configuration::updateValue('NEW_PRODUCTS_NBR', 5) && $this->registerHook('displayHomeTab') && $this->registerHook('displayHomeTabContent') ); if ($success) { // Hook the module either on the left or right column $theme = new Theme(Context::getContext()->shop->id_theme); if ((!$theme->default_left_column || !$this->registerHook('leftColumn')) && (!$theme->default_right_column || !$this->registerHook('rightColumn'))) { // If there are no colums implemented by the template, throw an error and uninstall the module $this->_errors[] = $this->l('This module need to be hooked in a column and your theme does not implement one'); parent::uninstall(); return false; } } $this->_clearCache('*'); return $success; } public function uninstall() { $this->_clearCache('*'); return parent::uninstall(); } public function getContent() { $output = ''; if (Tools::isSubmit('submitBlockNewProducts')) { if (!($productNbr = Tools::getValue('NEW_PRODUCTS_NBR')) || empty($productNbr)) $output .= $this->displayError($this->l('Please complete the "products to display" field.')); elseif ((int)($productNbr) == 0) $output .= $this->displayError($this->l('Invalid number.')); else { Configuration::updateValue('PS_NB_DAYS_NEW_PRODUCT', (int)(Tools::getValue('PS_NB_DAYS_NEW_PRODUCT'))); Configuration::updateValue('PS_BLOCK_NEWPRODUCTS_DISPLAY', (int)(Tools::getValue('PS_BLOCK_NEWPRODUCTS_DISPLAY'))); Configuration::updateValue('NEW_PRODUCTS_NBR', (int)($productNbr)); $output .= $this->displayConfirmation($this->l('Settings updated')); } } return $output.$this->renderForm(); } private function getNewProducts() { if (!Configuration::get('NEW_PRODUCTS_NBR')) return; $newProducts = false; if (Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) $newProducts = Product::getNewProducts((int) $this->context->language->id, 0, (int)Configuration::get('NEW_PRODUCTS_NBR')); } if (!$newProducts && Configuration::get('PS_BLOCK_NEWPRODUCTS_DISPLAY')) return; return $newProducts; } public function hookRightColumn($params) { if (!$this->isCached('blocknewproducts.tpl', $this->getCacheId())) { if (!isset(BlockNewProducts::$cache_new_products)) BlockNewProducts::$cache_new_products = $this->getNewProducts(); $this->smarty->assign(array( 'new_products' => BlockNewProducts::$cache_new_products, 'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')) )); } if (BlockNewProducts::$cache_new_products === false) return false; return $this->display(__FILE__, 'blocknewproducts.tpl', $this->getCacheId()); } protected function getCacheId($name = null) { if ($name === null) $name = 'blocknewproducts'; return parent::getCacheId($name.'|'.date('Ymd')); } public function hookLeftColumn($params) { return $this->hookRightColumn($params); } public function hookdisplayHomeTab($params) { if (!$this->isCached('tab.tpl', $this->getCacheId('blocknewproducts-tab'))) BlockNewProducts::$cache_new_products = $this->getNewProducts(); if (BlockNewProducts::$cache_new_products === false) return false; return $this->display(__FILE__, 'tab.tpl', $this->getCacheId('blocknewproducts-tab')); } public function hookdisplayHomeTabContent($params) { if (!$this->isCached('blocknewproducts_home.tpl', $this->getCacheId('blocknewproducts-home'))) { $this->smarty->assign(array( 'new_products' => BlockNewProducts::$cache_new_products, 'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')) )); } if (BlockNewProducts::$cache_new_products === false) return false; return $this->display(__FILE__, 'blocknewproducts_home.tpl', $this->getCacheId('blocknewproducts-home')); } public function hookHeader($params) { if (isset($this->context->controller->php_self) && $this->context->controller->php_self == 'index') $this->context->controller->addCSS(_THEME_CSS_DIR_.'product_list.css'); $this->context->controller->addCSS($this->_path.'blocknewproducts.css', 'all'); } public function hookAddProduct($params) { $this->_clearCache('*'); } public function hookUpdateProduct($params) { $this->_clearCache('*'); } public function hookDeleteProduct($params) { $this->_clearCache('*'); } public function _clearCache($template, $cache_id = NULL, $compile_id = NULL) { parent::_clearCache('blocknewproducts.tpl'); parent::_clearCache('blocknewproducts_home.tpl', 'blocknewproducts-home'); parent::_clearCache('tab.tpl', 'blocknewproducts-tab'); } public function renderForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->l('Settings'), 'icon' => 'icon-cogs' ), 'input' => array( array( 'type' => 'text', 'label' => $this->l('Products to display'), 'name' => 'NEW_PRODUCTS_NBR', 'class' => 'fixed-width-xs', 'desc' => $this->l('Define the number of products to be displayed in this block.') ), array( 'type' => 'text', 'label' => $this->l('Number of days for which the product is considered \'new\''), 'name' => 'PS_NB_DAYS_NEW_PRODUCT', 'class' => 'fixed-width-xs', ), array( 'type' => 'switch', 'label' => $this->l('Always display this block'), 'name' => 'PS_BLOCK_NEWPRODUCTS_DISPLAY', 'desc' => $this->l('Show the block even if no new products are available.'), 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('Disabled') ) ), ) ), 'submit' => array( 'title' => $this->l('Save'), ) ), ); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $helper->identifier = $this->identifier; $helper->submit_action = 'submitBlockNewProducts'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } public function getConfigFieldsValues() { return array( 'PS_NB_DAYS_NEW_PRODUCT' => Tools::getValue('PS_NB_DAYS_NEW_PRODUCT', Configuration::get('PS_NB_DAYS_NEW_PRODUCT')), 'PS_BLOCK_NEWPRODUCTS_DISPLAY' => Tools::getValue('PS_BLOCK_NEWPRODUCTS_DISPLAY', Configuration::get('PS_BLOCK_NEWPRODUCTS_DISPLAY')), 'NEW_PRODUCTS_NBR' => Tools::getValue('NEW_PRODUCTS_NBR', Configuration::get('NEW_PRODUCTS_NBR')), ); }} Edited June 19, 2014 by LineTV (see edit history) Link to comment Share on other sites More sharing options...
vekia Posted June 19, 2014 Share Posted June 19, 2014 this funciton private function getNewProducts() { if (!Configuration::get('NEW_PRODUCTS_NBR')) return; $newProducts = false; if (Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) $newProducts = Product::getNewProducts((int) $this->context->language->id, 0, (int)Configuration::get('NEW_PRODUCTS_NBR')); } if (!$newProducts && Configuration::get('PS_BLOCK_NEWPRODUCTS_DISPLAY')) return; return $newProducts; } you closed function after if (Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) $newProducts = Product::getNewProducts((int) $this->context->language->id, 0, (int)Configuration::get('NEW_PRODUCTS_NBR')); remove this bracket (right after this code) Link to comment Share on other sites More sharing options...
LineTV Posted June 19, 2014 Author Share Posted June 19, 2014 @Vekia, Thank you for your support. I really appreciate it. I have sent you a couple of emails regarding another issue I'd like to fix. I needed to display products created on multistores on the default page (without sharing inventories, orders or customers) - How can I get this done? Please advice. Thanks Link to comment Share on other sites More sharing options...
Recommended Posts