Боже, как он меня заебал этот MODx.
Более нелогичное говно даже сложно представить. Ни тебе нормальных связей, ни гибкой шаблонизации, нихуя вообще.
Вот смотрите - сейчас я делаю сайт по поиску игровых автоматов (далее “слотов”). Мне нужно было вывести количество слотов использующих определенный софт (софт слота записан у него в поле software). Сказать, что я заебался получать это поле из слотов - ничего не сказать.
Вот эта строчка:
$elements = $modx->getActiveChildren(73);
запишет в массив $elements все работающие слоты (они у меня в папке 73 если что).
Теперь в цикле обращаемся к элементу массива и получаем его поле software:
foreach($elements as $element) {
$element[‘software’]
}
и все - profit!
…
…
АГА! ХУЙ! ВОТ ХУЙ И ВСЕ!
Чтобы получить это гребанное поле надо прочитать заклинание апокалипсиса, выебать 13 гусей и вступить в партию “Справедливая Россия”.
Я потратил весь вечер и единственное рабочее решение, что я нашел, было таким:
$elements = $modx->getActiveChildren(73);
foreach($elements as $element) {
$slot = $modx->getTemplateVarOutput(array(‘software’), $element[‘id’], 1);
$slot[‘software’]
}
То есть, я получаю объект (хотя про объектно-ориентированность разрабы modx никогда и не слышали, ровно как и про связи многие-ко-многим и тд) и, чтобы достать из него поле, делаю еще один объект единственным полем которого будет software…. пиздец…
Даже если вам это показалось не столь сложным как я рассказываю, то постарайтесь представить, что до этой хрени вам надо было допереть самому.
Песня про верстальщиков… Душевно.