Камиль
Гит
Evgeniy
https://github.com/evolution-cms/evolution/pulls
Evgeniy
Пусто
Камиль
Нет
Камиль
Твои репозиторий плагин под 1.4
Evgeniy
о0
Andrey
Напугал людей =)
Evgeniy
Воу. Тестировалось?
Evgeniy
Прими мою правку по EvoBlade
Вопрос задал по PR
Камиль
Воу. Тестировалось?
Да. Установи comments blade и сам всё поймёшь
Evgeniy
Да нет у меня времени ставить и тестировать
Evgeniy
С какой целью добавлен MODX_BASE_PATH. Куда раньше кеш падал и куда теперь?
Evgeniy
Простые вопросы для того, кто отправил PR. Почему аудитор должен гадать
Камиль
Он почему то в некоторых случаях его не видет
Камиль
Честно не знаю в чем проблема но абсолютный пусть решил вопрос
Pathologic
С какой целью добавлен MODX_BASE_PATH. Куда раньше кеш падал и куда теперь?
скорее всего если шаблонизатор в админке вызывался, то путь получался неверный
Evgeniy
Pathologic
а, ну вообще да
Evgeniy
Но вообще, нужно больше инфы давать при составлении PR
Pathologic
как раз там такой случай
Evgeniy
И если нет понимания почему не работает. То описывать хотя бы как воспроизвести ошибку. Сейчас даже имея на руках ссылку на компонент с которым ошибка отталкиваться не от куда.
Evgeniy
Смотрю сюда https://github.com/Pathologic/Comments/blob/blade/assets/snippets/Comments/ajax.php
Evgeniy
<?php define('MODX_API_MODE', true); include_once(dirname(__FILE__) . "/index.php"); $modx->db->connect(); /** Принудительно обновляем конфиг */ $modx->config = array(); unlink(MODX_BASE_PATH.'assets/cache/siteCache.idx.php'); $modx->getSettings(); $modx->documentMethod = "id"; $modx->documentIdentifier = isset($_REQUEST['pageID']) ? (int)$_REQUEST['pageID'] : 1; $modx->documentObject = $modx->getDocumentObject('id', $modx->documentIdentifier); $modx->invokeEvent("OnWebPageInit");
Evgeniy
Что-то типо такого в ajax файлах должно быть. Ибо есть плагины завязанные на OnWebPageInit и дергают там как раз таки documentMethod, documentIdentifier, или documentObject. В итоге могут быть непредвиденные ошибки
Pathologic
а они и так будут
Evgeniy
Очень вероятно, что это и приводит к неправильному тут https://github.com/AgelxNash/EvoBlade/blob/master/assets/plugins/blade/events/OnWebPageInit.php
Evgeniy
а они и так будут
А где они определяются у тебя?
Yaroslav
пожскажите как вывести на одной странице, разные блоки pagebuilder ?
Pathologic
А где они определяются у тебя?
я их никогда и не определял в таких ситуациях, кроме случаев, когда это нужно для работы сниппетов
Yaroslav
container параметр?
В конфиге указать ? Или нужно и php файл создать ?
Evgeniy
я их никогда и не определял в таких ситуациях, кроме случаев, когда это нужно для работы сниппетов
Чтото мне подсказывает, что проблема именно в этом была у автора PR
Anonymous
В конфиге указать ? Или нужно и php файл создать ?
Я натупил. Blocks параметр. http://docs.evo.im/04_extras/pagebuilder/snippet.html
Pathologic
Чтото мне подсказывает, что проблема именно в этом была у автора PR
нет, автор на чистую версию ставил только для тестирования
Pathologic
в общем-то API_MODE уже предполагает, что не будет documentObject и всего такого, там и парсер-то не выполняется
Evgeniy
Я не помню когда в первый раз столкнулся с подобной проблемой на OnWebPageInit. С тех пор в своих скрптах всегда определяю эти данные
Pathologic
а я проверяю в плагинах ((:
Evgeniy
😊
Pathologic
но вообще ты сам и предложил эту инициализацию и с тех пор никто не жаловался
Evgeniy
Я жаловался, дорабатывал. Но после этого проблем больше небыло
Pathologic
ну в статью свою ты тем не менее дополнений никаких не вносил, в публичных решениях тоже ничего такого не наблюдается
Evgeniy
Кароче 100% в этом проблема
Pathologic
а кэш зачем удалять при каждом запросе?
Evgeniy
Не помню)
Pathologic
покажи лучше, зачем тебе понадобился documentObject в onWebPageInit если его в этот момент не может быть вообще
Pathologic
он загружается позже вызова этого события
Evgeniy
https://github.com/evolution-cms/evolution/blob/1.4.x/manager/includes/document.parser.class.inc.php#L2855
Evgeniy
Чуть выше смотри и увидишь, что до вызова этого события - инициализируется documentIdentifier
Pathologic
documentIdentifier да
Evgeniy
Ну вот от этого и пляшем
Evgeniy
documentIdentifier есть, а DocumentObject пуст
Evgeniy
При этом куча скриптов вместо $modx->documentIdentifier дергает $modx->documentObject['id']
Evgeniy
Да я и сам так делаю
Evgeniy
Ну не бежать же все плагины и скрипты исправлять
Pathologic
но на самом деле не должен быть и documentIdentifier, потому что в index.php^ // execute the parser if index.php was not included if (!MODX_API_MODE && !MODX_CLI) { $modx->executeParser(); }
Evgeniy
Т.е. в твоих скриптах не должно быть runSnippet?
Pathologic
должно и происходит
Evgeniy
А если сниппет юзает documentIdentifier?
Evgeniy
Ну, например, DocLister/Ditto/etc...
Pathologic
для этих сниппетов я в ajax php установлю documentIdentifier
Pathologic
ну и в OnWebPageInit я их не вызывал никогда
Evgeniy
Тем не менее DLTemplate их использует
Pathologic
в OnWebPageInit там типа язык задать или подгрузить что-нибудь
Evgeniy
а EvoBlade завязан на OnWebPageInit
Evgeniy
От сюда и проблема
Pathologic
DLTemplate их в renderDoc, где сам и задает
Pathologic
и case '@DOCUMENT': case '@DOC': здесь еще
Evgeniy
Нет
Evgeniy
DLTemplate->parseChunk('name', [], true);
Evgeniy
Это твызов приводит к запуску метода parseDocumentSource
Evgeniy
А уже от туда мы уходим в parseDocumentSource из ядра MODX. Где начинается работа дальше
Pathologic
честно говоря я уже забыл когда последний раз ставил этот flag в true
Evgeniy
Ну в Ajax скриптах норм заходило вроде бы
Pathologic
для чего?
Evgeniy
Я не помню точных кейсов
Evgeniy
Что-то там было связано с предпросмотром товара. Либо предзагрузкой чего-то