rykketid Posted March 3, 2013 Share Posted March 3, 2013 Привет! Появилась необходимость добавить дополнительные скрипты на главной странице. Создал IndexController.php в override/controllers/ <?php class IndexController extends IndexControllerCore { public function setMedia() { global $cookie; Tools::addCSS(__PS_BASE_URI__.'components/css/bootstrap.min.css', 'all'); Tools::addCSS(__PS_BASE_URI__.'components/css/font-awesome.css', 'all'); Tools::addCSS(_THEME_CSS_DIR_.'global.css', 'all'); if(Configuration::get('PL_JQUERY')==1) Tools::addJS('http'.($this->ssl?'s':'').'://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'); elseif(Configuration::get('PL_JQUERY')==2) Tools::addJS('http'.($this->ssl?'s':'').'://yandex.st/jquery/1.7.2/jquery.min.js'); else Tools::addJS(_PS_JS_DIR_.'jquery/jquery.min.js'); Tools::addJS(array(_PS_JS_DIR_.'jquery/jquery.easing.1.3.js', _PS_JS_DIR_.'tools.js')); Tools::addJS(_PS_JS_DIR_.'jquery.bxSlider.mnky.min.js'); $language = new Language($cookie->id_lang); if ($language->is_rtl) Tools::addCSS(_THEME_CSS_DIR_.'rtl.css'); } } При загрузке главной страницы изменения, связанные с Tools::addJS(_PS_JS_DIR_.'jquery.bxSlider.mnky.min.js'); игнорируются, а остальные нет. Причем эта же проблема всплывает и при изменении других контроллеров. Может ктонибудь сталкивался с такого рода проблемами и уже решал их? Помогите разобраться, что же тут происходит Есть один способ - замена кода в оригинальных файлах, но это не то.. Link to comment Share on other sites More sharing options...
vscorpion Posted March 3, 2013 Share Posted March 3, 2013 (edited) в настройках системы убери кеширование и все заработает. у меня проблема наподобе Здравствуйте. у меня 2 вопроса. 1 вопрос: Читал в официальном документе, что можно переопределить методы класса поместив файл по одному из путей: /override/controllers/front/ProductController.php /modules/my_module/override/controllers/front/ProductController.php Я создал модуль, который отлично работает, но мне надо полностью видоизменить Manufacturer. Весь его вывод. если же я помещаю свои переопределенные методы в /override/controllers/front/Manufacturer.php то все работает если же в/modules/my_module/override/controllers/front/Manufacturer.php, то загружается стандартная страница. Почему? файлы идентичны. Я хочу создать нормальный модуль для своих нужд - для использования его в своих дальнейших магазинах. как мне сделать так, чтобы можно было установить и удалить его потом, с возможностью безопасного обновления магазина. 2 вопрос: Я создал модуль отображающий нужные мне категории на главной странице, но я хочу поменять линки, чтобы при нажатии на них можно было посмотреть какие производители принадлежат данной группе. тоетсь скажем у производителя а имеются товары в категории телевизоры, как передать какой-от параметр ил ичто-то. Я уже пробовал переопределять метод getCategoryLink в классе LINK, но что-то я где-то не доделываю... подскажите в каком направлении копать. Мне очень понравилась система Presta, хочу ее оптимизировать под свои нужды. МОгу позже как доделаю поделиться модулями.. Спасибо prestashop 1.5.3.1 Edited March 3, 2013 by vscorpion (see edit history) Link to comment Share on other sites More sharing options...
vscorpion Posted March 4, 2013 Share Posted March 4, 2013 мдя..форум мертвый...спецов нет Link to comment Share on other sites More sharing options...
frozzen Posted March 4, 2013 Share Posted March 4, 2013 1 вопрос: Читал в официальном документе, что можно переопределить методы класса поместив файл по одному из путей: /override/controllers/front/ProductController.php /modules/my_module/override/controllers/front/ProductController.php Я создал модуль, который отлично работает, но мне надо полностью видоизменить Manufacturer. Весь его вывод. если же я помещаю свои переопределенные методы в /override/controllers/front/Manufacturer.php то все работает если же в/modules/my_module/override/controllers/front/Manufacturer.php, то загружается стандартная страница. Почему? файлы идентичны. Я хочу создать нормальный модуль для своих нужд - для использования его в своих дальнейших магазинах. как мне сделать так, чтобы можно было установить и удалить его потом, с возможностью безопасного обновления магазина. Там система немного другая: переопределенные классы/контроллеры не подхватываются из модулей на лету. Они корректно сливаются с теми же переопределенными классами/контроллерами из общей "оверрайд" папки во время ИНСТАЛЛЯЦИИ модуля. И также корректно оттуда "вытираются" при ДЕИНСТАЛЛЯЦИИ. 2 вопрос: Я создал модуль отображающий нужные мне категории на главной странице, но я хочу поменять линки, чтобы при нажатии на них можно было посмотреть какие производители принадлежат данной группе. тоетсь скажем у производителя а имеются товары в категории телевизоры, как передать какой-от параметр ил ичто-то. Я уже пробовал переопределять метод getCategoryLink в классе LINK, но что-то я где-то не доделываю... подскажите в каком направлении копать. Мне очень понравилась система Presta, хочу ее оптимизировать под свои нужды. МОгу позже как доделаю поделиться модулями.. Спасибо Переделывайте .TPL в том месте, где формируются линки. Link to comment Share on other sites More sharing options...
vscorpion Posted March 4, 2013 Share Posted March 4, 2013 (edited) спасибо за ответ, можно поподробнее не совсем понятно. public function install() { if (!parent::install() || !$this->registerHook('leftColumn') || !$this->registerHook('home') || !$this->registerHook('header')) return false; Configuration::updateValue('VL_MANUFACTURER_LOGO', 1); Configuration::updateValue('VL_MANUFACTURER_MIN_PAY_PROD', 1); Configuration::updateValue('VL_MANUFACTURER_PAY_DELIVERY', 1); Configuration::updateValue('VL_MANUFACTURER_TIME_DELIVERY', 1); Configuration::updateValue('VL_MANUFACTURER_DESCRIPTION', 1); Configuration::updateValue('VL_MANUFACTURER_CATEGORY', 1); Configuration::updateValue('VL_MANUFACTURER_NUM_COMMENT', 1); Configuration::updateValue('VL_MANUFACTURER_RATING', 1); Configuration::updateValue('VL_MANUFACTURER_COLUMN', 3); Configuration::updateValue('VL_MANUFACTURER_SORT_WAY', 0); Configuration::updateValue('VL_MANUFACTURER_SORT', 2); return true; } имею переопределенный класс <?php class Manufacturer extends ManufacturerCore { /** * Return manufacturers * * @param boolean $get_nb_products [optional] return products numbers for each * @return array Manufacturers */ public static function getManufacturers($get_nb_products = false, $id_lang = 0, $active = true, $p = false, $n = false, $all_group = false) { } } что куда надо прописать, чтобы при инсталяции он автоматом установился в /override/class/Manufacturer.php и пи удалении удалился? в .tpl - там же берется $link->getmanufacturerLink($manufacturer.id_manufacturer, $manufacturer.link_rewrite) а тому же меняется я так понял в Link.php то есть получается через куки передавать параметр категории? объясните пожалуйста. Edited March 4, 2013 by vscorpion (see edit history) Link to comment Share on other sites More sharing options...
vscorpion Posted March 4, 2013 Share Posted March 4, 2013 (edited) так вроде первое понял, но выдает ошибку при установке Не могу установить подмену (override): Class LinkOverride does not exist <?php /* * 2013 Vlad Mordvinov * * Prestashop module: link classes override */[/size] [size=4]class Link extends LinkCore { /** * Create a link to a category * * @param mixed $category Category object (can be an ID category, but deprecated) * @param string $alias * @param int $id_lang * @param string $selected_filters Url parameter to autocheck filters of the module blocklayered * @param int $link_type Type link: 0 - default, 1 - manufacturer, 2 - Supplier * @return string */ public function getCategoryLink($category, $alias = null, $id_lang = null, $selected_filters = null, $link_type = 0) { switch($link_type) { default: case 0: $urlHTTP = $LinkCore->getCategoryLink($category, $alias, $id_lang, $selected_filters); break; case 1: break; case 2: break; }[/size] [size=4]// return $url.Dispatcher::getInstance()->createUrl($rule, $id_lang, $params, $this->allow); returk $urlHTTP; }[/size] [size=4]}[/size] [size=4] если удалить этот класс то все гуд, класс Manufacturer.php перезаписывается как вы и сказали. Но вот Link.php нет Edited March 4, 2013 by vscorpion (see edit history) Link to comment Share on other sites More sharing options...
frozzen Posted March 5, 2013 Share Posted March 5, 2013 А что у Вас за класс LinkOverride, который не может найти инсталлятор? Link to comment Share on other sites More sharing options...
vscorpion Posted March 5, 2013 Share Posted March 5, 2013 в том то и дело что такого и нет вовсе, я пперезаписывапл класс LINK. его если убрать то все нормально устанавливается Link to comment Share on other sites More sharing options...
vscorpion Posted March 5, 2013 Share Posted March 5, 2013 (edited) странно он не все модули дает переопределить. Carrier.php тоже не дает - таже ошибка Edited March 5, 2013 by vscorpion (see edit history) Link to comment Share on other sites More sharing options...
sors Posted March 5, 2013 Share Posted March 5, 2013 В classes\module\Module.php где-то в строке 1892 eval(preg_replace(array('#^\s*<\?php#', '#class\s+'.$classname.'(\s+extends\s+([a-z0-9_]+)(\s+implements\s+([a-z0-9_]+))?)?#i'), array('', 'class '.$classname.'Override'), implode('', $module_file))); Замените eval на echo. Интересно что он покажет при установке Link.php Link to comment Share on other sites More sharing options...
vscorpion Posted March 5, 2013 Share Posted March 5, 2013 (edited) В classes\module\Module.php где-то в строке 1892 eval(preg_replace(array('#^\s*<\?php#', '#class\s+'.$classname.'(\s+extends\s+([a-z0-9_]+)(\s+implements\s+([a-z0-9_]+))?)?#i'), array('', 'class '.$classname.'Override'), implode('', $module_file))); Замените eval на echo. Интересно что он покажет при установке Link.php Не могу установить подмену (override): Class CarrierOverrideOriginal does not exist что-то как-то через раз ставит о примерно понял, если какието нестыковки в названии переменной в модуле он и не ставит, сейчас поправил поставился. ВОпрос другой теперь, Если я теперь хочу в контроллере во front поменять вывод шаблона - я ка кнаписано в инструкции запихал файл в /modules/views/templates/front/vlmanufacturer.tpl в модуле прописал его вывод, но что-то ничего не скопировалось в папку /theme/modules/vmmodules Edited March 5, 2013 by vscorpion (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts