PowerPartners.ru

Форум партнерской программы
Текущее время: 28 мар 2024, 13:02

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Пользовательские хуки
СообщениеДобавлено: 14 фев 2018, 17:08 
Не в сети

Зарегистрирован: 14 фев 2018, 17:04
Сообщения: 4
Добрый день, на днях начал изучать код магазина. Все в принципе понятно, но не смог разобраться с хуками.

Вопрос собственно в следующем, кто нибудь использовал хуки? И реализованы ли они вообще? Подключение видел, а вот вызов хуков, нет.

_________________
:ugeek:


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Пользовательские хуки
СообщениеДобавлено: 14 фев 2018, 17:34 
Не в сети
Администратор

Зарегистрирован: 12 дек 2008, 01:50
Сообщения: 2478
Хуки реализованы, добавляются динамически по мере возникновения задач, которые невозможно решить в рамках стандартного движка, полного описания нет, в настоящее время реализованы onTemplateStart, onCategoryInvalid, onProductInvalid, onProductNotExist

Ибо из задач пока было только:
1. Передача данных $_SERVER в js
2. Выдавать 404 на несуществующие категории и товары

Если появятся новые задачи - появятся и новые хуки.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Пользовательские хуки
СообщениеДобавлено: 14 фев 2018, 17:47 
Не в сети

Зарегистрирован: 14 фев 2018, 17:04
Сообщения: 4
admin писал(а):
Хуки реализованы, добавляются динамически по мере возникновения задач, которые невозможно решить в рамках стандартного движка, полного описания нет, в настоящее время реализованы onTemplateStart, onCategoryInvalid, onProductInvalid, onProductNotExist

Ибо из задач пока было только:
1. Передача данных $_SERVER в js
2. Выдавать 404 на несуществующие категории и товары

Если появятся новые задачи - появятся и новые хуки.


Насколько понял, если я хочу сделать глобальную переменную в шаблон, мне нужен хук onTemplateStart.

А не могли бы вы привести пример реализации? Был бы очень признателен.

_________________
:ugeek:


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Пользовательские хуки
СообщениеДобавлено: 14 фев 2018, 17:54 
Не в сети

Зарегистрирован: 14 фев 2018, 17:04
Сообщения: 4
Разобрался, спасибо большое.

Файл /custom/hooks.php
Код:
<?php

/**
 * @param $tmpl vlibTemplate
 */
function onTemplateStart($tmpl)
{
    $tmpl->setVar('CLIENT_VERSION', 2);
}


Поможет решить проблему с обновлением CSS, например так:

Код:
<link rel="stylesheet" href="/theme/css/screen.css?v=<TMPL_VAR name="CLIENT_VERSION">>

_________________
:ugeek:


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Пользовательские хуки
СообщениеДобавлено: 14 фев 2018, 19:30 
Не в сети
Администратор

Зарегистрирован: 12 дек 2008, 01:50
Сообщения: 2478
А что это за решение, если не секрет?

Кто из современных веб-серверов или браузеров не обрабатывают корректно keep-alive, If-Modified-Since и 304 и продолжают тупо кэшировать? Еще остались такие связки?

Или это для сплит-тестирования на разных css?

Прям теряюсь в догадках...


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Пользовательские хуки
СообщениеДобавлено: 14 фев 2018, 20:08 
Не в сети

Зарегистрирован: 14 фев 2018, 17:04
Сообщения: 4
admin писал(а):
А что это за решение, если не секрет?

Кто из современных веб-серверов или браузеров не обрабатывают корректно keep-alive, If-Modified-Since и 304 и продолжают тупо кэшировать? Еще остались такие связки?

Или это для сплит-тестирования на разных css?

Прям теряюсь в догадках...


Для тестирования, и для выкладки на прод, если меняли скрипты, стили, кэш полной страницы сохраняется, а обновляем только нужные нам вещи.

_________________
:ugeek:


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Пользовательские хуки
СообщениеДобавлено: 14 фев 2018, 21:17 
Не в сети
Администратор

Зарегистрирован: 12 дек 2008, 01:50
Сообщения: 2478
MikeCN писал(а):
...кэш полной страницы сохраняется, а обновляем только нужные нам вещи.


Эммммм... В 21-ом веке вроде происходит так:

Самый первый запрос (с пустым кэшем браузера)

Код:
connect to urshop.ru 80...

> GET / HTTP/1.1
> Host: urshop.com

HTTP/1.1 200 OK
Date: xxxxxxxxxxxx
Cache-Control: max-age=0
Expires: xxxxxxxxxxxx
Last-Modified: xxxxxxxxxxxx
Content-Type: text/html

> GET /style.css HTTP/1.1
> Host: urshop.com

HTTP/1.1 200 OK
Date: xxxxxxxxxxxx
Cache-Control: max-age=YYY, must-revalidate
Expires: zzzzzzzzzzzz
Last-Modified: mmmmmmmmmmmm
Content-Type: text/css


Для динамики сервак отвечает что URI прям свежий и кэшировать его не надо (max-age=0)
А вот при запросе статики, он выставляет уже реальный Last-Modified, взятый из файловой системы и подставляет Expires из ExpiresDefault mod_expires.c

Соответственно, второе открытие страницы (с полным кэшем):
Код:
connect to urshop.ru 80...

> GET / HTTP/1.1
> Host: urshop.com

HTTP/1.1 200 OK
Date: xxxxxxxxxxxx
Cache-Control: max-age=0
Expires: xxxxxxxxxxxx
Last-Modified: xxxxxxxxxxxx
Content-Type: text/html

> GET /style.css HTTP/1.1
> Host: urshop.com
> If-Modified-Since mmmmmmmmmmmm

HTTP/1.1 304 Not Modified


Тут морда перезагрузилась ибо было сказано не кэшировать, а вот стили взялись из кэша, поскольку в кэше лежит версия от mmmmmmmmmmmm, и сервер сказал нам 304 Not Modified.

Но когда вы поменяете на серваке /style.css, и дата файла изменится с mmmmmmmmmmmm на wwwwwwwwwwwwww

Сетевой обмен уже пойдет так:
Код:
> GET /style.css HTTP/1.1
> Host: urshop.com
> If-Modified-Since mmmmmmmmmmmm

HTTP/1.1 200 OK
Date: wwwwwwwwwwwwww
Cache-Control: max-age=YYY, must-revalidate
Expires: zzzzzzzzzzzz
Last-Modified: wwwwwwwwwwwwww
Content-Type: text/css


Т.е. браузер запросит стили у сервака, отметив, что у него в кеше есть этот файл от mmmmmmmmmmmm, а вот сервак, увидив что времена не совпадают отдаст содержимое браузеру с указанием, что нужно обновить кэш новым содержимом и хранить столько-то дней.

Костыль с добавлением ?v=123 конечно же проверенное временем решение, но это действительно костыль из прошлого века, который может пригодиться лишь тем, кто не представляет себе протокол http1.1 и mod_expires


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB