Неправильно выводится url созданного тикета
Здравствуйте.
Странный глюк. Если сразу после создания тикета с фронта сайта, посмотреть список тикетов, то почему-то вместо ссылки на новый тикет выводится ссылка на главную сайта (она же пока что и страница 404).
Если очистить кеш, то ссылка начинает выводится правильно.
Список вывожу так:
Странный глюк. Если сразу после создания тикета с фронта сайта, посмотреть список тикетов, то почему-то вместо ссылки на новый тикет выводится ссылка на главную сайта (она же пока что и страница 404).
Если очистить кеш, то ссылка начинает выводится правильно.
Список вывожу так:
[[!getTickets? &tpl=`ticket-list-row-tpl` &limit=`0` &depth=`1` &includeContent=`1`]]
Чанк ticket-list-row-tpl:<article class="post format-news news4 clearfix">
<div class="meta-container span3">
<ul>
<li class="meta-date">[[+date_ago]]</li>
<li class="meta-author">[[+fullname]]</li>
<li class="meta-comments"><a href="[[~[[+id]]]]#comments">Комментариев - [[+comments]]</a></li>
</ul>
</div>
<div class="post-content span9">
<a href="[[~[[+id]]]]">
<h2>[[+pagetitle]]</h2>
</a>
<p>[[+content:strip_tags:limit=`200`]] <a href="[[~[[+id]]]]"> <b>далее...</b></a></p>
</div>
</article>
Где я мог тут накосячить? Комментарии: 3
отвечаю сам себе), может кому-то пригодится.
Поскольку не отрабатывала конструкция [[~[[+id]]]], а после очистки кеша всё работало, предположил, что проблема в том, что не обновляется карта ресурсов кеша. Посмотрел, действительно — тикет добавляю, а его в карте нет.
Решил обновлять её принудительно. Для этого в плагин Василия Tickets добавил на событие OnDocFormSave следующие строки:
Поскольку не отрабатывала конструкция [[~[[+id]]]], а после очистки кеша всё работало, предположил, что проблема в том, что не обновляется карта ресурсов кеша. Посмотрел, действительно — тикет добавляю, а его в карте нет.
Решил обновлять её принудительно. Для этого в плагин Василия Tickets добавил на событие OnDocFormSave следующие строки:
$modx->cacheManager->refresh(array('context_settings/web' => array()));
в общем теперь код на это событие выглядит так:/* @var Ticket $resource */
if ($mode == 'new' && $resource->class_key == "Ticket") {
$modx->cacheManager->delete('tickets/latest.tickets');
$modx->cacheManager->refresh(array('context_settings/web' => array()));
}
}
/* @var TicketsSection $resource */
if ($mode == 'upd' && $resource->class_key == 'TicketsSection') {
if (method_exists($resource, 'clearCache')) {
$resource->clearCache();
}
}
break;
И всё работает.
Есть мнение, что ты сначала что-то где-то сломал, или просто не использовал процессор от Tickets, ибо в нем есть обновление карты сайта.
Я даже заметку писал про это.
Я даже заметку писал про это.
Я тоже так думаю), ибо тикеты используются достаточно давно и такой косяк пофиксили бы уже.
Но вчера долго и безуспешно искал что именно я мог сломать — твой код в тикетах не трогал. А время жмёт, в итоге вот такой костыль.
Если в дальнейшем всплывёт, что я сделал не так обязательно напишу.
Но вчера долго и безуспешно искал что именно я мог сломать — твой код в тикетах не трогал. А время жмёт, в итоге вот такой костыль.
Если в дальнейшем всплывёт, что я сделал не так обязательно напишу.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.