Добрый день. Столкнулся с проблемой в modx. Нашел много документации на Evo, а вот на Revo как-то не получилось. Либо совсем ничего не сказано, либо упомянуто вскользь и важные детали упущены. В связи с этим назрел такой вопрос:
Создал ресурс под названием статьи, применил стандартный шаблон и в контенте применил такой код для отображения самого контента (простите за тавтологию). В месте, где должны отображаться сами статейки прикрепил чанк [[$news]].
В результате ссылка a[href="[[~[[*id]]]]"] ссылается на саму страницу статей, т.е. на основной ресурс "Статьи". (В принципе то и логично). Ну и соответственно [[*pagetitle]] и [[*introtext]] тоже берут контекст из основного ресурса "Статьи".
То, что должно отображаться в самих статьях - это созданные вложенные документы в ресурс статьи:
Изначально я пытался сделать ч/з сниппет articles:
Но беда в том, что modx функция getDocumentChildren() на Revo не работает, нашел аналог, как писали в интернете, getChildIds(). Но она ничего не возвращает. (Точнее я пытался вызвать результат работы ф-ии ч-з echo и цикл foreach(), но он мне вывел просто 3 числа: 14, 15, 16; вместо, как мне казалось, *id, *pagetitle, *introtext).
В итоге, добрые люди, помогите сделать страницу со статьями. Как лучше и правильнее реализовать сей действие? (хотелось бы с кодом)
Ресурс-статьи:
<div class="container-fluid articles_page">
<div class="container"><center>
<h1>НОВОСТИ САЙТА</h1>
<div class="divider"> </div>
</center>
<div class="news-block masonry" data-columns="">
[[$news]]
</div>
</div>
</div>
Чанк:
<div>
<a href="[[~[[*id]]]]">
<div class="thumbnail">
<img src="http://placehold.it/1280x720" class = "img-responsive" alt=\"\">
<div class=\"caption\">
<h3>[[*pagetitle]]</h3>
<span class="date">[[*publishedon:date='%d/%b/%y']]</span>
<p>[[*introtext]]</p>
</div>
</div>
</a>
</div>
Сниппет articles:
<?php
$results = $modx->getChildIds(
$id = 13,
$active = 1,
$deleted = 0,
'id, pagetitle, published, introtext, content, menuindex, createdby, createdon, deleted, menutitle',
$where = '',
$sort='createdon',
$dir='DESC',
$limit = ''
);
foreach($results as $key => $value) {
if ($value["menutitle"] != "") {
$title = $value["menutitle"];
}
else{
$title = $value["pagetitle"];
}
$items .= "
<div>
<a href=".$value["createdon"].">
<div class=\"thumbnail\">
<img src=\"http://placehold.it/1280x720\" class = \"img-responsive\" alt=\"\">
<div class=\"caption\">
<h3>".$title."</h3>
".$value["introtext"] ."
</div>
</div>
</a>
</div>
";
}
$output = "
<div id=\"pagination\">
<a href=\"#\">< Назад</a>
<a href=\"#\">Вперед ></a>
</div>
";
return $items.$output;
P.s. Как выводить картинку - миниатюру на станице статей?
[[!getResources?
&parents=`[[*id]]`
&tvPrefix=``
&includeTVs=`1`
&tpl=`catalogItemTpl`
&depth=`1`
&showHidden=`0`
&sortbyTVType=`integer`
&sortbyTV=`price-for-m2`
&sortdirTV=`ASC`
&limit=`16`
&where=`{"isfolder:!=":1}`
]]
Это пример запроса, не конкретно в вашем случае...А вообще можете погуглить, в сети очень много примеров. Так же я вам дал документацию. И чтобы в чанке поля выводились конкретного ресурса а не родителя надо вызывать вместо [[*pagetitle]] - [[+pagetitle]] итд
<div class="container-fluid articles_page">
<div class="container"><center>
<h1>НОВОСТИ САЙТА</h1>
<div class="divider"> </div>
</center>
<div class="news-block masonry" data-columns="">
[[!getResources?
&showHidden=`1`
&tpl=`news`
&limit=`10`
&includeContent=`1`
&includeTVs=`1`
&processTVs=`1`]]
</div>
</div>
</div>
Выставляете нужный шаблон и т.д.
Галочкой указываете шаблоны, которые смогут их применять. TV нужны (в данном случае), чтобы вставлять изображение в превью на сайте. Также в параметрах ввода выставляете тип "Изображение" 1. И в заключительном пункте создаете Чанк с образцом:
<div>
<a href="[[~[[+id]]]]">
<div class="thumbnail">
<img src="[[+tv.news_img:phpthumbof='w=300&h=350&zc=1']]" class = "img-responsive" alt="">
<div class="caption">
<h3>[[+pagetitle]]</h3>
<span class="date">[[publishedon:date='%d/%b/%y]]</span>
<p>[[+introtext]]</p>
</div>
</div>
</a>
</div>
и в принципе, все. А не получалось это сделать, потому что везде инфа либо неполная, либо непонятно написано, либо написано, но не так(т.е. по тем образцам ничего не работало)
Спасибо за внимание.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей