ninzzo Posted May 26, 2014 Share Posted May 26, 2014 Помогите! Закинул в шапку темы в header.tpl подключение к fancybox: <script type="text/javascript" src="fancy/jquery.fancybox-1.3.4.js"></script> <script type="text/javascript" src="fancy/jquery.easing-1.3.pack.js"></script> <script type="text/javascript" src="fancy/jquery.mousewheel-3.0.4.pack.js"></script> <link rel="stylesheet" href="fancy/jquery.fancybox-1.3.4.css" type="text/css" media="screen" /> <script type="text/javascript"> $(document).ready(function() { //...настройки отображени я фансибокса.. }); </script> На странице хочу открыть окно через <a class="gallery" href="form.php">Клик</a> При нажатии на клик ничего не происходит. Хотя если нажать ф12 и смотреть подключенный скрипты сайта, то все нормально. Все скрипты подключены. Самое интересное что точно этот же скрипт работает на 10 других сайтах и даже на денвере. Версия престашоп 1.5 В чем может быть проблема? Link to comment Share on other sites More sharing options...
Kerm Posted May 27, 2014 Share Posted May 27, 2014 Ну для начала в престе и так подключен фанси бокс, правда не на всех страницах, а например на карточке товара. Лучше подключать скрипты не в шаблоне в в определенном контроллере, к примеру если Вам не везде эти скрипты нужны...потому что если в header скрипт засунуть, то на карточке товара у Вас уже два одинаковых скрипта будет подключено.Еще смотрите консоль браузера на наличие ошибок в javascript, возможно конфликтуют скрипты с другими скриптами престы. Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted May 27, 2014 Share Posted May 27, 2014 Fancybox подключается в хуке хедера вот таким образом: $this->context->controller->addJqueryPlugin(array('fancybox')); Link to comment Share on other sites More sharing options...
Kerm Posted May 27, 2014 Share Posted May 27, 2014 Помогите! Закинул в шапку темы в header.tpl подключение к fancybox: <script type="text/javascript" src="fancy/jquery.fancybox-1.3.4.js"></script> <script type="text/javascript" src="fancy/jquery.easing-1.3.pack.js"></script> <script type="text/javascript" src="fancy/jquery.mousewheel-3.0.4.pack.js"></script> <link rel="stylesheet" href="fancy/jquery.fancybox-1.3.4.css" type="text/css" media="screen" /> <script type="text/javascript"> $(document).ready(function() { //...настройки отображени я фансибокса.. }); </script> На странице хочу открыть окно через <a class="gallery" href="form.php">Клик</a> При нажатии на клик ничего не происходит. Хотя если нажать ф12 и смотреть подключенный скрипты сайта, то все нормально. Все скрипты подключены. Самое интересное что точно этот же скрипт работает на 10 других сайтах и даже на денвере. Версия престашоп 1.5 В чем может быть проблема? А после добавления строчек в файл ты кеш почистил престы? визуально если просмотреть код страницу в есть эти ссылки? Link to comment Share on other sites More sharing options...
ninzzo Posted May 27, 2014 Author Share Posted May 27, 2014 $this->context->controller->addJqueryPlugin(array('fancybox')); это просто вставить в header.tpl??? если я так сделаю и получился, то как мне вызывать окно? Где его настройки и т.д. Слишком мутно как то получится. Можно подробнее как это настроить потом для определенной ссылки класса или по id ? А после добавления строчек в файл ты кеш почистил престы? визуально если просмотреть код страницу в есть эти ссылки? Да, с этим поначалу тоже возился. Но сделал. Ну для начала в престе и так подключен фанси бокс, правда не на всех страницах, а например на карточке товара. Лучше подключать скрипты не в шаблоне в в определенном контроллере, к примеру если Вам не везде эти скрипты нужны...потому что если в header скрипт засунуть, то на карточке товара у Вас уже два одинаковых скрипта будет подключено. Еще смотрите консоль браузера на наличие ошибок в javascript, возможно конфликтуют скрипты с другими скриптами престы. Нужно везде. Как раз в шапке будет "заказать звонок" и еще на 2 страницах. А я не вижу что бы он был подключен, но когда в шапку добавляю скрип полключения и css фансибокса, то все нормально. Мне бы вообще любое попап окно, может есть какое то встроенное? Если есть то как вызвать ? Такой популярный магазин и такие трудности =( Link to comment Share on other sites More sharing options...
Kerm Posted May 27, 2014 Share Posted May 27, 2014 Трудного там не чего, просто нужно разбираться или делать специалисту там все. $this->context->controller->addJqueryPlugin(array('fancybox'));Это в нужном месте в \classes\controller\FrontController.phpВ нутри функции public function setMedia(){} если я не ошибаюсь... Если так подключишь то надо со страницы товара в другом файле убрать будет вывод этого, а то два раза выведется скрипт. На сайте fancybox есть примеры как подключать скрипт.. Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted May 27, 2014 Share Posted May 27, 2014 http://blog.belvg.ru/%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-javascript-%D0%B2-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%85-prestashop.html Здесь описано, как работать с JS в престашопе Link to comment Share on other sites More sharing options...
Kerm Posted May 29, 2014 Share Posted May 29, 2014 $this->addjqueryPlugin('fancybox'); $this->addCSS(_PS_CSS_DIR_.'jquery.fancybox-1.3.4.css', 'all'); Вот так подключается fancybox в \classes\controller\FrontController.php в функции public function setMedia(){} При этом из controllers\ProductController.php нужно убрать вывод того же самого на карточке товара! Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted May 29, 2014 Share Posted May 29, 2014 $this->addjqueryPlugin('fancybox'); $this->addCSS(_PS_CSS_DIR_.'jquery.fancybox-1.3.4.css', 'all'); Вот так подключается fancybox в \classes\controller\FrontController.php в функции public function setMedia(){} При этом из controllers\ProductController.php нужно убрать вывод того же самого на карточке товара! Метод addCss не нужно использовать после addJqueryPlugin, т.к. он автоматом CSS добавляет Link to comment Share on other sites More sharing options...
Kerm Posted May 30, 2014 Share Posted May 30, 2014 Метод addCss не нужно использовать после addJqueryPlugin, т.к. он автоматом CSS добавляет Я привел строчки скопированные 1 в 1 из файла FrontController.php которые находились чуть ниже в правиле "if (Tools::isSubmit('live_edit') && Too...." Т.е. если разработчики так сделали, значит так надо и в шаблоне выводиться только 1 ксс...следовательно $this->addjqueryPlugin('fancybox'); в престе 1.5.6.2 не добавляет css стиль автоматом. Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted May 30, 2014 Share Posted May 30, 2014 Я привел строчки скопированные 1 в 1 из файла FrontController.php которые находились чуть ниже в правиле "if (Tools::isSubmit('live_edit') && Too...." Т.е. если разработчики так сделали, значит так надо и в шаблоне выводиться только 1 ксс...следовательно $this->addjqueryPlugin('fancybox'); в престе 1.5.6.2 не добавляет css стиль автоматом. Добавляет. Вот этот метод: public function addJqueryPlugin($name, $folder = null) { $plugin_path = array(); if (is_array($name)) { foreach ($name as $plugin) { $plugin_path = Media::getJqueryPluginPath($plugin, $folder); if(!empty($plugin_path['js'])) $this->addJS($plugin_path['js']); if(!empty($plugin_path['css'])) $this->addCSS($plugin_path['css']); } } else $plugin_path = Media::getJqueryPluginPath($name, $folder); if(!empty($plugin_path['css'])) $this->addCSS($plugin_path['css']); if(!empty($plugin_path['js'])) $this->addJS($plugin_path['js']); } Дело в том, что FrontController пытается включить кастомные стили для фэнсибокса. 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