Всего 125 336 комментариев

Василий Наумкин
09 апреля 2013, 20:20
0
Не надо тратить время и пытаться запустить и гибко закэшировать вызов сниппета в чанке.

Потрать время и напиши уже свой сниппет, который будет сам проверять все значения и отдавать в чанк готовые данные.

Сейчас ты просто извращаешься. Если парсер MODX это позволяет — не значит, что так нужно делать.

Чанк — это html код, который оформляет результаты работы сниппета. Запускать из него сниппет — извращение.
Yaya Yayan
09 апреля 2013, 19:55
0
Ну насколько я понял, getPage кэширует не весь свой вывод, а только то что помечено как кэшируемое, тоесть если тэг [[! он его пропускает и отдает дальше по цепочке в парсер, тоесть сам кэш getPage выглядит так: (взято из оригинального кэша)

.... .... ....
  'output' => '<div class="thumbnail">
	<div class="prodCounter" id="prod_160">
		7
	</div>
	...
</div>

<div class="thumbnail">
	<div class="prodCounter" id="prod_130">
		[[!+id:nodeShop_getAddedItems]]
	</div>
	...
</div>

<div class="thumbnail">.... итд
Если присмотреться видно что кусок кэша сохранился уже отрендеренный, сфига — я непонимаю

Все ресурсы, кроме первого отдали в getPage нативный код, а первый почему то отдает рендер =( почему не понимаю
Василий Наумкин
09 апреля 2013, 19:46
0
Ты кэшируешь работу всего getPage и удивляешься тому, что он выводит кэшированные данные?

Пиши нормальный сниппет на pdoTools — будет без кэша и быстро. Быстрее я ничего не знаю — сам только им и пользуюсь.

На этом сайте, кстати, все комментарии и заметки выводятся без кэша через такой сниппет.
Yaya Yayan
09 апреля 2013, 19:36
0
Без cache=`1` то работает на отлично, но только вывод вместо 0.04000 => 3.0000- это же ад на локальном компе от 2 до 3х секунд рендер странички
Василий Наумкин
09 апреля 2013, 19:33
0
А зачем мне cache=`1`?

Никогда им не пользовался. Все написал как есть. Ща создам сайтик на modx-test.com — там проверим.
Yaya Yayan
09 апреля 2013, 19:30
0
cache=`1` точно не забыл? потому что я сделал такой же сниппет и тоже вызвал как кэшируемый [[+id:snippet]] он сразу закэшировал все рандомы
Василий Наумкин
09 апреля 2013, 19:26
0
Это у тебя что то уже наворочено.

Смотри вызов:
[[!getPage?
	&element=`getResources`
	&parents=`0`
	&tpl=`test`
]]

Чанк test:
[[+id:snippet]]

Сниппет snippet
return rand();

В итоге:
Yaya Yayan
09 апреля 2013, 19:25
0
причем заметил глюк, если вывести [[!+id]] не кэшированный, то у первого ресурса он определяется верно, а у остальных он заменяется на какой то произвольный и потом ваабще не меняется, выводится у всех один и тот же… бред какой то с этим гет пейдж
Yaya Yayan
09 апреля 2013, 19:09
0
Блин, у меня трабл, сделал так как посоветовали, теперь он кэширует все подряд, а при таком вызове [[!+id:snippet]] опять кэшируется первый элемент =(
Василий Наумкин
09 апреля 2013, 18:55
0
У меня донейты полезные — можно взамен кучу информации прочитать.

На здоровье!
Yaya Yayan
09 апреля 2013, 18:36
0
Первый в моей жизни Донэйт, спасибо еще раз.
Василий Наумкин
09 апреля 2013, 18:18
0
Оформи подписку, прочитай про pdoTools и перепиши всё по-человечески.
Yaya Yayan
09 апреля 2013, 18:16
0
Спасибо огромнейшее, я уже собирался переписывать по своему и чуть было не сошел с ума =), могу чем нибудь отблагодарить?
Yaya Yayan
09 апреля 2013, 18:08
0
Спасибо Василий, только я немного не понял как это запускать сниппет, как фильтр вывода, вот например мой чанк скажем

<div class="thumbnail">
	<div >
		[[!nodeShop_getAddedItems:gt=`0`:show? &id=`[[+id]]`]] //Вот эта часть у меня почему то кэшируется
	</div>
</div>
UPD, кажется я понял, я должен к какому нибудь параметру дописать как бы кастомный модификатор, который будет моим несчастным сниппетом, верно?
Yaya Yayan
09 апреля 2013, 18:04
0
по умолчанию они

cache_key default: value of cache_resource_key setting
cache_handler default:value of cache_resource_handler setting, or xPDOFileCache

в принципе я пытался задавать, но толку мало, один отвечает всего лишь за директорию кэша, а второй точно не в тему =)
Василий Наумкин
09 апреля 2013, 17:49
0
Проверил — всё верно, сниппет в чанке полюбому кэшируется.

Более того, мне на это жаловались, когда я выпускал Tickets, и там же быстро нашли решение:
[[+id:snippet]]

То есть, запускать сниппет, как фильтр вывода — тогда он не кэшируется. Но вообще, это изврат, ибо выходит вот такой запуск: сниппет <= чанк <= getresources <= getpage

Я бы переписал на pdoTools, с получением всей нужной инфы в сниппете, чтобы в чанках только подставлялись пелейсхолдеры. Так быстрее и правильнее.
Мартехин Николай
09 апреля 2013, 17:19
0
Спасибо всем за советы, буду пробовать…
Мордынский Николай
09 апреля 2013, 17:10
0
что бы норм кодировка работала ее еще и в конфиге сервера надо прописать по умолчанию utf-8 в апаче так точно. Вообще когда с revo начинал разбираться тоже первый сайт настроил 1251 потом начинаются проблемы с логином подключениями в базу и тому подобное плюнул и использую UTF -8 тем более что Yandex и meil еще примерно полтора года назад все проиндексированные документы и нета у себя конвертнули в utf и прекрасно его понимают. 1251 уже анахронизм.
Мордынский Николай
09 апреля 2013, 16:50
0
если вы вызываете getPage с флагом cache 1 то там как минимум еще 2 параметра которые влияют на результат которые желательно указать(тем более если у вас кэширование в память идет а не в файлы) Посмотрите вкладку параметры в снипете гет пейдж. Там для кэша есть параметры key и hendler поумолчанию они false
Может в этом дело