Jump to content

Подключил fancybox в шапке и не работает


Recommended Posts

Помогите!

 

Закинул в шапку темы в 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

Ну для начала в престе и так подключен фанси бокс, правда не на всех страницах, а например на карточке товара. Лучше подключать скрипты не в шаблоне в в определенном контроллере, к примеру если Вам не везде эти скрипты нужны...потому что если в header скрипт засунуть, то на карточке товара у Вас уже два одинаковых скрипта будет подключено.

Еще смотрите консоль браузера на наличие ошибок в javascript, возможно конфликтуют скрипты с другими скриптами престы.

Link to comment
Share on other sites

Помогите!

 

Закинул в шапку темы в 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

$this->context->controller->addJqueryPlugin(array('fancybox'));

 

 

это просто вставить в header.tpl???

 

если я так сделаю и получился, то как мне вызывать окно? Где его настройки и т.д. Слишком мутно как то получится. Можно подробнее как это настроить потом для определенной ссылки класса или по id ?

 

А после добавления строчек в файл ты кеш почистил престы? визуально если просмотреть код страницу в есть эти ссылки?

Да, с этим поначалу тоже возился. Но сделал.

 

Ну для начала в престе и так подключен фанси бокс, правда не на всех страницах, а например на карточке товара. Лучше подключать скрипты не в шаблоне в в определенном контроллере, к примеру если Вам не везде эти скрипты нужны...потому что если в header скрипт засунуть, то на карточке товара у Вас уже два одинаковых скрипта будет подключено.

 

Еще смотрите консоль браузера на наличие ошибок в javascript, возможно конфликтуют скрипты с другими скриптами престы.

 

 

Нужно везде. Как раз в шапке будет "заказать звонок" и еще на 2 страницах.

 

А я не вижу что бы он был подключен, но когда в шапку добавляю скрип полключения и css фансибокса, то все нормально.

 

 

Мне бы вообще любое попап окно, может есть какое то встроенное?  Если есть то как вызвать ? 

 

Такой популярный магазин и такие трудности =(  

Link to comment
Share on other sites

Трудного там не чего, просто нужно разбираться или делать специалисту там все.

 

$this->context->controller->addJqueryPlugin(array('fancybox'));

Это в нужном месте в 
\classes\controller\FrontController.php

В нутри функции public function setMedia(){} если я не ошибаюсь...

 

Если так подключишь то надо со страницы товара в другом файле убрать будет вывод этого, а то два раза выведется скрипт.

 

На сайте fancybox есть примеры как подключать скрипт..

Link to comment
Share on other sites

$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

 

$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

Метод 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

Я привел строчки скопированные 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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...