eventsCalendar2 + Fenom = глюки
Здравствуйте.
Использую на сайте, на котором все шаблоны выполнены через Fenom, — eventsCalendar2. Вывод некешированный. Пробовал и через $modx, и через $_modx. При переключении месяцев вываливает всю страницу на место календаря, вместо того, чтобы заменить блок календаря со старым месяцем на новый.
При вызове некешированного eventsCalendar2 через MODX тег сниппета — всё норм. Если кешированным вызываем — такая же беда, как и в случае с вызовом через Феном.
Не хочется использовать MODX тег сниппета на сайте, тем более некешированный. К тому-же календарь нужно вызывать в сайдбаре на каждой странице. Поможешь, Василий, побороть это?
Пост скорее всего только для Василия, но если кто-то сможет посоветовать решение, я буду рад этому.
Использую на сайте, на котором все шаблоны выполнены через Fenom, — eventsCalendar2. Вывод некешированный. Пробовал и через $modx, и через $_modx. При переключении месяцев вываливает всю страницу на место календаря, вместо того, чтобы заменить блок календаря со старым месяцем на новый.
При вызове некешированного eventsCalendar2 через MODX тег сниппета — всё норм. Если кешированным вызываем — такая же беда, как и в случае с вызовом через Феном.
Не хочется использовать MODX тег сниппета на сайте, тем более некешированный. К тому-же календарь нужно вызывать в сайдбаре на каждой странице. Поможешь, Василий, побороть это?
Пост скорее всего только для Василия, но если кто-то сможет посоветовать решение, я буду рад этому.
Поблагодарить автора
Отправить деньги
Комментарии: 6
eventsCalendar2 сам ловит и отвечает на ajax запросы, так что кэшированным его вызывать вообще нельзя.
А так, он очень старенький и его нужно переписывать — у меня пока ни времени, ни желания. Поэтому пока придётся вызывать его как тег MODX, не зря же такая возможность при использовании Fenom предусмотрена.
И вообще, я с понедельника в отпуске на 2 недели и уже вообще ничего делать не хочется!
А так, он очень старенький и его нужно переписывать — у меня пока ни времени, ни желания. Поэтому пока придётся вызывать его как тег MODX, не зря же такая возможность при использовании Fenom предусмотрена.
И вообще, я с понедельника в отпуске на 2 недели и уже вообще ничего делать не хочется!
Удачного отпуска! :)
В общем, этот конкретный недостаток — суть продолжение достоинств Fenom.
Все ajax запросы eventsCalendar2 отправляются на текущую страницу, где сниппет должен их словить, обработать, выдать ответ и прервать работу парсера. В общем, как написано в этой статье.
И всё отлично работает, за исключение того, что при компиляции шаблона Fenom он прописывает вывод всех данных не в переменную, которую покажет в конце, а выводит их сразу через echo.
Соотвественно, в ответ ajax запроса попадают все сниппеты, обработанные до eventsCalendar2 — и ты видишь их на странице. Это косяк старой архитектуры eventsCalendar2, ведь по уму нужно бы отправлять все запросы на отдельный коннектор или плагин, как в mFilter2 и miniShop2.
Но можно выйти из ситуации и сейчас:
1. Нужно вызывать eventsCalendar2 в шаблоне, перед всеми другими сниппетами, и сохранять его вывод в переменную.
2. А переменную уже выводить на странице. Но не в контенте, а тоже в шаблоне или в чанке, потому что ресурс обрабатывается перед шаблоном и переменная там еще будет пуста.
Тогда при обычной загрузке страницы сниппет отработает, данные сохранятся в переменную и выведутся в нужном месте страницы. А при ajax запросе сниппет отреагирует первым и выдаст чистый ответ, без других сниппетов.
Примерно так:
Кстати говоря, можно так сохранять и вывод других сниппетов, чтобы вызывать их в одном месте, а показывать в другом.
Все ajax запросы eventsCalendar2 отправляются на текущую страницу, где сниппет должен их словить, обработать, выдать ответ и прервать работу парсера. В общем, как написано в этой статье.
И всё отлично работает, за исключение того, что при компиляции шаблона Fenom он прописывает вывод всех данных не в переменную, которую покажет в конце, а выводит их сразу через echo.
Соотвественно, в ответ ajax запроса попадают все сниппеты, обработанные до eventsCalendar2 — и ты видишь их на странице. Это косяк старой архитектуры eventsCalendar2, ведь по уму нужно бы отправлять все запросы на отдельный коннектор или плагин, как в mFilter2 и miniShop2.
Но можно выйти из ситуации и сейчас:
1. Нужно вызывать eventsCalendar2 в шаблоне, перед всеми другими сниппетами, и сохранять его вывод в переменную.
2. А переменную уже выводить на странице. Но не в контенте, а тоже в шаблоне или в чанке, потому что ресурс обрабатывается перед шаблоном и переменная там еще будет пуста.
Тогда при обычной загрузке страницы сниппет отработает, данные сохранятся в переменную и выведутся в нужном месте страницы. А при ajax запросе сниппет отреагирует первым и выдаст чистый ответ, без других сниппетов.
Примерно так:
{set $calendar = $_modx->runSnippet('!eventsCalendar2', [
...
])}
{$calendar}
Кстати говоря, можно так сохранять и вывод других сниппетов, чтобы вызывать их в одном месте, а показывать в другом.
Василий, приветствую. До улучшений pdopage можно было так:
какие-то аналогичные способы есть для подобных штук в новых реалиях?
&ajax=`1`
$.get('?page=3', function(response) {
своя логика без переделывания стандартного скрипта
}
щас response естесственно всю страницу отдает при включенном fenomкакие-то аналогичные способы есть для подобных штук в новых реалиях?
Василий, извините что навязываюсь с вопросом.
Как вы думаете в чём может быть проблема если eventsCalendar2 на всех страницах кроме главной нормально работает. А на главной site.eu вечная загрузка.
Есть какие-нибудь идеи с чем это может быть связано?
Как вы думаете в чём может быть проблема если eventsCalendar2 на всех страницах кроме главной нормально работает. А на главной site.eu вечная загрузка.
Есть какие-нибудь идеи с чем это может быть связано?
Сорри за беспокойство!
В моём случае это был лишний слеш символах.
В моём случае это был лишний слеш символах.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.