MinifyX ПОСТхук для обработки плейсхолдеров MODX
Приветствую сообщество!
Начал разбираться с более продвинутой версией MinifyX и столкнулся с одной фигней, не могу сформировать ПОСТхук для замены плейсхолдеров MODX.
Например, мне надо в скомпилированном файле скрипта, вот этот плейсхолдер ALIAS, распарсить за менить на текущее поле alias текущего документа, т.е. в теле скрипта он вызванивается так:
Начал разбираться с более продвинутой версией MinifyX и столкнулся с одной фигней, не могу сформировать ПОСТхук для замены плейсхолдеров MODX.
Например, мне надо в скомпилированном файле скрипта, вот этот плейсхолдер ALIAS, распарсить за менить на текущее поле alias текущего документа, т.е. в теле скрипта он вызванивается так:
url: "assets/main/data/infra-[[+alias]].json"
ПОСТхук из примера выглядит так (ясное дело, что я менял все параметры и вертел вызовом как только мог):<?php
if ($MinifyX->isJs()) {
$content = parse($MinifyX->getContent(), ['config' => json_encode(['key'=>$object->getValue(),'user'=>$modx->user->id])]);
$MinifyX->setContent($content);
}
В результате на выходе должно получиться так:url: "assets/main/data/infra-index.json"
А получается, что выводит все равно так:url: "assets/main/data/infra-[[+alias]].json"
Вопрос! Почему и как написать вызов Хука так, чтобы он выполнял свою задачу? Комментарии: 10
url: «assets/main/data/infra-index.json»Откуда взялся index? Вы парсите плейсхолдер «alias», а передаете «config», в котором нет никакого index.
ну я ж написал, что:
ясное дело, что я менял все параметры и вертел вызовом как только могт.е. менял на то что мне надо было, но ничего не происходило, я ж не совсем бом бом
просто привел запись к первоначальному варианту, чтобы было понятно, что брал её из примера и документации
Совсем никто не поможет :(
Я выше написал, что вопрос один, а пример кода другой. Ответ — я же не бом бом. Ни примера вызова сниппета ничего. Лично я не знаю, чем еще помочь.
добро, сейчас перечислю сколько вариантов я перепробовал, просто они очевидные, собственно как я их понял:
В файле скрипта я вызвал и так:
В файле ХУКа менял так:
Располагал хук до вызова условия (и после):
Так понятно надеюсь? Я ж говорю, я ж не совсем бом бом, чтобы сначала не попробовать и заменить на требуемое, собственно мне просто нужен корректный код хука, либо сказать где я копаю не так, что он не работает, может баг, может он так вообще не работает. Спасибо за любую помощь, заранее!
П.С.
Библиотеку модхелпер установил, может там надо что то подкрутить, чтобы заработало…
В файле скрипта я вызвал и так:
url: "assets/main/data/infra-[[+alias]].json"
и так:url: "assets/main/data/infra-[[*alias]].json"
и как только не экспериментировал… менял скобки, менял название плейсхолдера…В файле ХУКа менял так:
if ($MinifyX->isJs()) {
$content = parse($MinifyX->getContent(), ['alias' => json_encode(['key'=>$object->getValue(),'resource'=>$modx->resource->alias])]);
$MinifyX->setContent($content);
}
if ($MinifyX->isJs()) {
$content = parse($MinifyX->getContent(), ['alias' => json_encode(['resource'=>$modx->resource->alias])]);
$MinifyX->setContent($content);
}
if ($MinifyX->isJs()) {
$content = parse($MinifyX->getContent(), ['alias' => $modx->resource->alias])]);
$MinifyX->setContent($content);
}
вроде что то еще пробовал, но ничего не выходило.Располагал хук до вызова условия (и после):
<?php
if ($modx->resource->parent == 8) {
// Добавляем файлы
$MinifyX->addJsSource("{assets_url}main/js/map.min.js");
}
собственно:main/js/map.min.js
файл скрипта куда выполняется замена, который появляется только при условии, что у дочки мамка под номером 8.Так понятно надеюсь? Я ж говорю, я ж не совсем бом бом, чтобы сначала не попробовать и заменить на требуемое, собственно мне просто нужен корректный код хука, либо сказать где я копаю не так, что он не работает, может баг, может он так вообще не работает. Спасибо за любую помощь, заранее!
П.С.
Библиотеку модхелпер установил, может там надо что то подкрутить, чтобы заработало…
Поавильно последний вариант. Только я бы использовал str_replace вместо parse. А в ифе вызови
log_error($content);
И посмотри, что в лог пишется. <?php
if ($MinifyX->isJs()) {
$content = parse($MinifyX->getContent(), ['alias' => $modx->resource->alias]);
log_error($content);
$MinifyX->setContent($content);
}
такой все же не работает, в лог ничего не уходит, журнал пустой, пытался переставить местами ХУКи, тоже не работает:'preHooks' => 'modxTagDecoder.php, infraMaps.php'
и так:'preHooks' => 'infraMaps.php, modxTagDecoder.php'
Так и отдает в скомпилированный файл скрипта:url: "assets/main/data/infra-[[+alias]].json"
Это постхук должен быть.
ага! Все сяб! Заработало, просто я уже как то пробовал в постхук и он чут тупил и всю страницу крухал! Спасибо большое!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.