Ответить Новая тема Новый опрос 
Всего: 2 1 2 >
 Вопрос по Hook'ам
naff
Cпециалист
Сообщений: 216
Регистрация: 05-09-2011


09-11-2011 08:22
Хочу создать свой хук (не для отображение, а как событие)
То есть при определенном событии вызывается хук и обрабатывается - аналог newOrder (он тоже отвечает не за отображение а используется как событие).

Вопрос как вызвать свой хук? То есть как при определенном событии вызвать свой хук который будет обработан моим модулем? С добавлением и обработкой все понятно, не понятно только как заставить обрабатываться этот хук...

Буду очень признателен за помощь!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
naff
Cпециалист
Сообщений: 216
Регистрация: 05-09-2011


09-11-2011 08:25
Есть предположение что таким образом можно вызвать выполнения хука:
Module::hookExec('мой_хук');

Так ли это делается?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ors
Профессионал
Сообщений: 1885
Регистрация: 09-11-2009


09-11-2011 11:56
Да. http://prestalab.ru/wiki/mexanizm-xukov
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
naff
Cпециалист
Сообщений: 216
Регистрация: 05-09-2011


09-11-2011 14:44
Тогда еще вопрос:
Можно ли вызвать хук в Javascript? И как это правильно делается?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ors
Профессионал
Сообщений: 1885
Регистрация: 09-11-2009


09-11-2011 17:56
Если хук предусмотрен в определенном месте скрипта, то можно. Знаю только один такой: productOutOfStock. Он должен вернуть js функцию как элемент массива oosHookJsCodeFunctions.

Подробнее смотрите в коде themes\prestashop\js\product.js
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
e_v_medvedev
Профессионал
Сообщений: 806
Откуда: Москва
Регистрация: 25-03-2011


09-11-2011 20:00
Поскольку хук обрабатывается на сервере, а JS код на клиенте, то это не возможно. Возможно только обработать результат исполнения хука, возвращенного сервером, с помощью JS.
Вернуть из хука скрипт естественно не проблема, так как это просто часть HTML кода.
Либо постановка вопроса не точна.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
naff
Cпециалист
Сообщений: 216
Регистрация: 05-09-2011


09-11-2011 20:00
Можно тогда у вас спросить конкретней?
У меня в шаблоне есть джава скрипт (обратный отсчет времени), когда счетчик досчитывает до нуля мне нужно вызвать мой хук... Вопрос как правильно прописать вызов?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
e_v_medvedev
Профессионал
Сообщений: 806
Откуда: Москва
Регистрация: 25-03-2011


09-11-2011 20:12
Из JS можно вызвать только страницу с сайта (URL), следовательно вам придется сформировать специальную страницу (php-скрипт), которая вызовет на сервере выполнение хука а потом вернет результат JS скрипту на клиент для обработки. Других вариантов нет.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
naff
Cпециалист
Сообщений: 216
Регистрация: 05-09-2011


09-11-2011 20:36
Спасибо! Я так и думал...
Если я в созданном пхп скрипте (отдельным файлом) просто вызову Module::hookExec('мой_хук'); - это не будет работать... Что нужно подключить для работы этой функции?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ors
Профессионал
Сообщений: 1885
Регистрация: 09-11-2009


09-11-2011 20:44
Если 'мой_хук' уже существует, то его можно из модуля вызвать ничего не подключая. Если не существует, то его нужно установить
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос 
Всего: 2 1 2 >