Не обновляется кэш при обновлении рессурса
Здравствуйте.
Установлено дополнение Tickets.
Есть свой плагин, в котором по событию OnDocFormSave обновляется содержимое pagetitle и uri.
После обновления в таблице установлены новые значения, а при открытии раздела с тикетами, тикеты отображаются со старыми pagetitle и uri.
Вот код плагина:
Установлено дополнение Tickets.
Есть свой плагин, в котором по событию OnDocFormSave обновляется содержимое pagetitle и uri.
После обновления в таблице установлены новые значения, а при открытии раздела с тикетами, тикеты отображаются со старыми pagetitle и uri.
Вот код плагина:
switch($modx->event->name) {
case 'OnDocFormSave':
if ($mode == 'new' && $resource->class_key == "Ticket") {
$resource->set('pagetitle', $id);
$resource->set('alias', $id);
$resource->set('uri', 'q/'.$id.'/');
$resource->set('uri_override', 1);
$resource->set('published', 1);
$resource->save();
break;
}
Комментарии: 8
Надо чистить кэш родительской секции тикетов.
if ($parent = $resource->getOne('Parent')) {
if ($parent instanceof TicketsSection) {
$parent->clearCache();
}
}
Добавил твой код после $resource->save();
Теперь вновь созданный тикет — со старыми значениями pagetitle и uri (т.е. не изменяются), а все предыдущие становятся как нужно.
Теперь вновь созданный тикет — со старыми значениями pagetitle и uri (т.е. не изменяются), а все предыдущие становятся как нужно.
switch($modx->event->name) {
case 'OnDocFormSave':
if ($mode == 'new' && $resource->class_key == "Ticket") {
$resource->set('pagetitle', $id);
$resource->set('alias', $id);
$resource->set('uri', 'q/'.$id.'/');
$resource->set('uri_override', 1);
$resource->set('published', 1);
$resource->save();
if ($parent = $resource->getOne('Parent')) {
if ($parent instanceof TicketsSection) {
$parent->clearCache();
}
}
break;
}
Попробуй добавить перед сохранением.
Я сейчас не соображу, как правильно должно быть, поэтому просто поиграйся.
У тебя есть метод для очистки и родителя и самого тикета — это clearCache().
Я сейчас не соображу, как правильно должно быть, поэтому просто поиграйся.
У тебя есть метод для очистки и родителя и самого тикета — это clearCache().
Ничего не выходит — последний все-равно со старыми значениями.
Как ни игрался, и вперед вставлял и назад, и $resource->clearCache(); добавлял — все равно последний добавленный тикет отображается со старыми значениями.
Я не знаю, что ты там делаешь, но очистка родителя тикета происходит при его создании.
Не должно с этим быть проблем. У меня же на сайте работает, не так ли?
Не должно с этим быть проблем. У меня же на сайте работает, не так ли?
Тестирую на «головм» сайте с установленным Tickets в проекте modx-test.com.
Tickets поставил и настроил точно по инструкции к дополнению.
Единственное, что настроил ЧПУ (автоматическая генерация alias с помощью translit, влючена опция friendly_urls).
Происходит вышеописанное.
Добавляю с помощью формы на сайте тикет, сайт переадресовывает на тикет с правильным урлом (алиас прописан верно), затем перехожу в категорию с эти тикетом, и в списке тикетов он с неправильным урлом.
Вот сайт: s3816.modx-test.com/
Логин s3816
Пароль dpdcqi4xyGUX
Tickets поставил и настроил точно по инструкции к дополнению.
Единственное, что настроил ЧПУ (автоматическая генерация alias с помощью translit, влючена опция friendly_urls).
Происходит вышеописанное.
Добавляю с помощью формы на сайте тикет, сайт переадресовывает на тикет с правильным урлом (алиас прописан верно), затем перехожу в категорию с эти тикетом, и в списке тикетов он с неправильным урлом.
Вот сайт: s3816.modx-test.com/
Логин s3816
Пароль dpdcqi4xyGUX
Проблему решил.
А решение, как оказалось уже было засвечено на этом сайте.
bezumkin.ru/sections/tips_and_tricks/278/
А решение, как оказалось уже было засвечено на этом сайте.
bezumkin.ru/sections/tips_and_tricks/278/
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.