Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 147 комментариев

Олег Трубин
Олег Трубин
отвечаю сам себе), может кому-то пригодится.
Поскольку не отрабатывала конструкция [[~[[+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;
И всё работает.
Василий Наумкин
Василий Наумкин
Да, там переделан весь javascript.

Видимо, нужно оптимизировать. Можно, в принципе,
вернуть пока старый. Если не будет работать — то посмотри чанки, возможно тоже нужно что-то вернуть.

Сейчас пока нет времени разбираться.
Bond Nataly
Bond Nataly
А и правда! А я и не заметила сразу, видимо тыкала туда-сюда, а оно не успевало меняться) Но на моем хостинге так же, как и на вашем, (я потому и создала тестовый, проверить, не сломала ли я чего).Может дело не в сервере? В старой версии minishop2 (2.0.1) срабатывало мгновенно.
Serge Kosykh
Serge Kosykh
Наверное, я немного не так сформулировал. Я не имел ввиду, что «обновлять кэш всего сайта — это хорошо», вовсе нет. Перефразирую; вопрос звучит так: «Насколько правильно то, что в движке не предусмотрена единая реакция на одно и то же действие, конкретно — изменение документа, откуда бы оно ни было произведено?» По идее, если документ кэшируемый, то откуда бы ни производилось его изменение, кэш должен быть обновлен. Причем именно и только для одного изменяемого документа. Ведь ты, например, в Tickets, такую индивидуальную очистку реализовал. А вот в core движка этого, судя по всему, нету. Что удивительно.

К чему я все это? К тому, что в core, судя по всему, недоработка. И ее нужно иметь ввиду.
Василий Наумкин
Василий Наумкин
Абсолютно корректно.
Если у тебя юзеры будут чистить кэш сайта когда им вздумается, сайт может очень тормозить.

Этот вопрос (и многие другие) решен в Tickets индивидуальным обновление кэша редактируемой страницы, а не всего сайта.