-
- 268 Posts
Добрый день!
Мне потребовалось сделать доп менюшку для каждой странички.
Я сделал TV [*optionalmenu*], листбокс мультиселект.
@EVAL $result = $modx->db->select("id, pagetitle", "modx_site_content"); while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { $output .= $line[’pagetitle’]."==".$line[’id’]."||"; } return $output;
Я подключил сниппет [[optionalmenu]] в шаблон документа:
[[optionalmenu? &optionalmenu=[*optionalmenu*]]]
Я сделал чанк {{optionalmenu}}:
<li><a href="[~[+id+]~]">[+menutitle+]</a></li>
Теперь я делаю сам сниппет [[optionalmenu]]:
<?php
if (isset($optionalmenu)) {
$output .= "<ul>";
$output .= $optionalmenu; // тест
$output .= "</ul>";
}
return $output;
?>
Он у меня выводит, например:
<ul>10,12,14</ul>
Вопрос такой:
как мне заставить сниппет подгружать чанк для каждого ид, подставлять туда всё как надо и делать линку?
то есть я хочу получить такой результат:
<ul><li><a href="линка на док с ид=10">имя в меню для ид=10</a></li><li><a href="линка на док с ид=12">имя в меню для ид=12</a></li><li><a href="линка на док с ид=14">имя в меню для ид=14</a></li></ul>
Спасибо!
-
- 268 Posts
спасибо за совет про wayfinder, но я что-то с ним не особо разобрался...
мне нужно сделать очень и очень простую вещь, я подумал, что проще это сделать самому, а не через большой и навороченный скрипт.
моя цель, вообщем-то, думал, будет понятна: сделать менюшку а-ля "Смотрите также...".
То есть надо дать возможность для каждой страничке делать через админку ссылки на любые другие странички на этом сайте.
Первую часть задачи я сделал: в админке есть TV, он сохраняет ID страничек, на которые надо сделать ссылки.
Вторая часть задачи - вывести ссылки.
Я знаю, как это сделать через php без чанков с помощью makeUrl и getPageInfo, вопрос-то в другом: как сделать это через чанки.
То есть что такое чанк? Это шаблон. Вот как мне через сниппет подставить в этот шаблон нужные мне переменные и вернуть в сниппет результат?
сниппет должен работать так:
===
получаю список ID
для каждого ID делать
получить $имя
аутпут .= подставить $имя и $id в чанк и вернуть результат
===
я умею делать всё кроме последней строчки, я бы хотел отделить дизайн от кода, то есть html запихать в чанки.
я знаю решение моей задачи: через SELECT залезть в БД и получить переменную содержимое чанка, потом заменить там [+name+] на $имя и [+id+] на ID. Я думаю, что должна быть аналогичная функция. Есть такая?
Я бы хотел воспользоваться этой функцией, вставить_чанк(имя_чанка), которая бы вместо каждого [+smth+] в чанке имя_чанка подставляла бы значение переменной $smth и выводила результат. Если такой переменной нет, то вместо [+smth+] подставляла бы пусто.
Есть ли в ModX такая функция и можно ли как-то её написать? Чтобы её можно было использовать из любого сниппета.
Мне было бы это очень удобно, не хочу напрягать своего дизайнералазить по моим сниппетам в поисках html-хода.
-
- 1,620 Posts
посмотрите
getChunk()
parseChunk()
для того чтобы понять как работать с чанками программно посмотрите код того же wayfinder или ditto
"Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."
Не используйте Revo для "просто сайтов". Используйте Evo
Who can defeat
the Russian bear?