Неправильно выводится url созданного тикета

Здравствуйте.

Странный глюк. Если сразу после создания тикета с фронта сайта, посмотреть список тикетов, то почему-то вместо ссылки на новый тикет выводится ссылка на главную сайта (она же пока что и страница 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>
Где я мог тут накосячить?
Олег Трубин
14 октября 2013, 11:32
modx.pro
951
0

Комментарии: 3

Олег Трубин
14 октября 2013, 23:16
0
отвечаю сам себе), может кому-то пригодится.
Поскольку не отрабатывала конструкция [[~[[+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;
И всё работает.
    Василий Наумкин
    15 октября 2013, 06:39
    0
    Есть мнение, что ты сначала что-то где-то сломал, или просто не использовал процессор от Tickets, ибо в нем есть обновление карты сайта.

    Я даже заметку писал про это.
      Олег Трубин
      15 октября 2013, 10:55
      0
      Я тоже так думаю), ибо тикеты используются достаточно давно и такой косяк пофиксили бы уже.

      Но вчера долго и безуспешно искал что именно я мог сломать — твой код в тикетах не трогал. А время жмёт, в итоге вот такой костыль.

      Если в дальнейшем всплывёт, что я сделал не так обязательно напишу.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3