$resource->uri вместо [[~[[*id]] ]];

Давным-давно, когда я еще тоже пользовался чанками и сниппетами, я, как и многие другие, тоже использовал конструкции типа [[[[+id]] ]] (часто используется в чанках, формирующих данные на списки документов) или [[[[*id]] ]]. При чем этот синтаксис пришел к нам еще со времен самых первых MODx. Если кто не знает, объясню, что здесь происходит: Это двойная конструкция. По плейсхолдеру [[+id]] или [[*id]] MODX-парсер получает id документа. Далее этот id уже замещает указанный плейсхолдер, и получается тег-ссылка, к примеру [[~1]]. И вот уже эту ссылку MODX-парсер окончательно парсит, определяя указанный id документа и получает ссылку, выполняя modx>makeUrl(idдокумента).Операцияэтодовольнотакизатратная,авызововнастраницеможетбытьдовольномного.Новедьужепрошлооченьмноговремени,иMODXсерьезноразвился,идавноужевседокументыимеютатрибутuri(адресстраницы).Таквот,еслиувасестьвозможность(есливполучаемыхданныхестьпараметрuri),используйтеего.Ядавноужеегоиспользую,ипокаещенебылослучая,чтобывозвращаемыйадресбылнеправильным.Кпримеру,вместо[[ [[id]]]]выможетеиспользовать[[uri]](тоестьссылканатекущийдокумент.Втекущемдокументеэтаконструкциявсегдабудетработать).А[[ [[+id]]]]заменитьна[[+uri]].Этоснизитнагрузкунапарсингэтихтеговболеечемвдвараза(вопервых,наодинтегменьше,авовторыхнеиспользуетсяmodx->makeUrl(id документа). Операция это довольно-таки затратная, а вызовов на странице может быть довольно много. Но ведь уже прошло очень много времени, и MODX серьезно развился, и давно уже все документы имеют атрибут uri (адрес страницы). Так вот, если у вас есть возможность (если в получаемых данных есть параметр uri), используйте его. Я давно уже его использую, и пока еще не было случая, чтобы возвращаемый адрес был не правильным. К примеру, вместо [[~[[*id]] ]] вы можете использовать [[*uri]] (то есть ссылка на текущий документ. В текущем документе эта конструкция всегда будет работать). А [[~[[+id]] ]] заменить на [[+uri]]. Это снизит нагрузку на парсинг этих тегов более чем в два раза (во-первых, на один тег меньше, а во-вторых не используется modx->makeUrl()). В Smarty я же вообще все данные в списках документов получаю через list-процессоры из shopModx-а. Так вот там я в цикле когда набиваю данные документов, я давно уже не использую конструкции {link id=object.id} (и уж тем более не использую [[~{object.object_id}]]). Я просто пишу {$object.uri} и все. И MODX-парсер отдыхает.