Давным-давно, когда я еще тоже пользовался чанками и сниппетами, я, как и многие другие, тоже использовал конструкции типа [[[[+id]] ]] (часто используется в чанках, формирующих данные на списки документов) или [[[[*id]] ]]. При чем этот синтаксис пришел к нам еще со времен самых первых MODx. Если кто не знает, объясню, что здесь происходит: Это двойная конструкция. По плейсхолдеру [[+id]] или [[*id]] MODX-парсер получает id документа. Далее этот id уже замещает указанный плейсхолдер, и получается тег-ссылка, к примеру [[~1]]. И вот уже эту ссылку MODX-парсер окончательно парсит, определяя указанный id документа и получает ссылку, выполняя 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-парсер отдыхает.