Количество комментариев. Какой плейсхолдер?
Всем привет. Простите за нубский вопрос, но перерыл всю документацию и так не понял, если я хочу вывести количество оставленных комментариев на главной у новости, какой плейсхолдер использовать в вызове TicketMeta? Пробую [[+total]] не работает.
Комментарии: 17
Попробуй посмотреть в стандартные чанки. Если мне не изменяет память, должно быть [[+comments]].
Всё верно, спасибо. А почему если указывать этот сниппет в чанке, который выводит данные из pdoPage на главной всё по нулям и у всех категория одна и таже «Главная». Я что-то не так делаю?
Код чанка напишите и код вызова pdoPage.
Код чанка:
<div class="news-feed">
[[!If?
&subject=`[[+tv.image]]`
&operator=`notempty`
&then=`<img src="[[+tv.image:phpthumbof=`w=100&h=100&zc=1`]]" alt="[[+pagetitle]]" />`
&else=`<img src="assets/templates/rapcorp/img/news/1.jpg" alt="[[+pagetitle]]" />`
]]
<a href="[[~[[+id]]]]">[[+pagetitle]]</a>
[[!TicketMeta? &tpl=`tpl.RAPCORPNET.meta`]]
<p>[[+introtext]]</p>
</div>
Код вызова pdoPage:<div id="pdopage">
[[!pdoPage?
&parents=`813`
&tpl=`tpl.RAPCORPNET.newsTpl`
&ajaxMode=`default`
&limit=`5`
&element=`getResources`
&sortby=`{"publishedon":"DESC","createdon":"ASC"}`
&includeContent=`1`
&includeTVs=`1`
&processTVs=`1`
]]
</div>
<div class="pager">
[[!+page.nav]]
</div>
<div class="news-feed">
[[!If?
&subject=`[[+tv.image]]`
&operator=`notempty`
&then=`<img src="[[+tv.image:phpthumbof=`w=100&h=100&zc=1`]]" alt="[[+pagetitle]]" />`
&else=`<img src="assets/templates/rapcorp/img/news/1.jpg" alt="[[+pagetitle]]" />`
]]
<a href="[[~[[+id]]]]">[[+pagetitle]]</a>
[[!TicketMeta? &tpl=`tpl.RAPCORPNET.meta`]]
<p>[[+introtext]]</p>
<p>[[+total]] = [[+comments]</p>
</div>
Вот так должно работать, если это чанк tpl.RAPCORPNET.newsTplА то что element=getResources так вообще можно?
Укажите там pdoResources
У меня уже чанк подключён tpl.RAPCORPNET.meta со всеми моими настройками, он от главной страницы данные берёт для всех ресурсов. По поводу pdoResources, если ставлю его, то у меня перестают работать TV-параметры.
Они не перестанут, вы делайте &includeTVs
Надо это значение на ноль поставить?
впиши туда име TV, которые нужно получить, например &includeTVs=`image`, вызов твшки будет таким tv.image
[[!getTicketCommentCount? &id=`[[+id]]`]]
:$id;
$resource = $modx->getObject('modResource', $id);
$fields = $resource->toArray();
echo $fields[comments];
Не работает.
Массива с названием comments там не нашёл.
Добавьте этот код в конце сниппета:
$modx->toPlaceholders(array(
'comments' => , array('count' => $fields[comments])
));
Данные запишутся в ТВшку comments.count
А если я не хочу записывать в тв? А хочу через апи вывести для документа количество просмотров и комментариев? Как быть? Что делать? Сейчас набросал вот такой код:
<?php
$id = (isset($id)) ? $id : '';
$resource = $modx->getObject('modResource', $id);
$fields = $resource->toArray();
$createdby = $fields['createdby'];
$publishedon = $fields['publishedon'];
$parent = $fields['parent'];
// Date
$month_array = array("1"=>"Января","2"=>"Февраля","3"=>"Марта","4"=>"Апреля","5"=>"Мая", "6"=>"Июня", "7"=>"Июля","8"=>"Августа","9"=>"Сентября","10"=>"Октября","11"=>"Ноября","12"=>"Декабря");
$day = date('d', strtotime($publishedon));
$month = $month_array[date('n', strtotime($publishedon))];
$year = date('Y', strtotime($publishedon));
$hour = date('H', strtotime($publishedon));
$minute = date('i', strtotime($publishedon));
$date = $day.' '.$month.' '.$year.', '.$hour.':'.$minute;
// Parent
$parent = $modx->getObject('modResource', $parent);
$a = $parent->toArray();
$pagetitle = $a['pagetitle'];
$id = $a['id'];
$parent = '<a href="[[~'.$id.']]">'.$pagetitle.'</a>';
echo '<ul data-id="'.$id.'">
<li><i class="glyphicon glyphicon-calendar"></i> '.$date.'</li>
<li><i class="glyphicon glyphicon-user"></i> <a href="[[~2147]]'.$createdby.'/">[[+modx.user.id:userinfo=`fullname`]]</a></li>
<li><i class="glyphicon glyphicon-eye-open"></i> [[+views]]</li>
<li><i class="glyphicon glyphicon-comment"></i> [[+comments]]</li>
<li><i class="glyphicon glyphicon-folder-open"></i> '.$parent.'</li>
</ul>';
Остались просмотры и комменатрии. Вот что в итоге накорябал:
Вызов снипета в чанке: [[!getTicketCommentCount? &id=`[[+id]]`]]
Код сниппета getTicketCommentCount
<?php
$id = (isset($id)) ? $id : '';
$resource = $modx->getObject('modResource', $id);
$fields = $resource->toArray();
$document_id = $fields['id'];
$createdby = $fields['createdby'];
$publishedon = $fields['publishedon'];
$parent = $fields['parent'];
// Date
$month_array = array("1"=>"Января","2"=>"Февраля","3"=>"Марта","4"=>"Апреля","5"=>"Мая", "6"=>"Июня", "7"=>"Июля","8"=>"Августа","9"=>"Сентября","10"=>"Октября","11"=>"Ноября","12"=>"Декабря");
$day = date('d', strtotime($publishedon));
$month = $month_array[date('n', strtotime($publishedon))];
$year = date('Y', strtotime($publishedon));
$hour = date('H', strtotime($publishedon));
$minute = date('i', strtotime($publishedon));
$date = $day.' '.$month.' '.$year.', '.$hour.':'.$minute;
// Parent
$parent = $modx->getObject('modResource', $parent);
$a = $parent->toArray();
$pagetitle = $a['pagetitle'];
$parent_id = $a['id'];
$parent = '<a href="[[~'.$parent_id.']]">'.$pagetitle.'</a>';
// Comments
$resources = $modx->getCollection('TicketThread');
$output = '<p>Всего ресурсов: '.count($resources).'</p>';
foreach ($resources as $k => $res) {
$resource = $res->get('resource');
$ticket_id = $res->get('id');
$name = $res->get('name');
$name = preg_replace('/[^0-9,]/', '', $name);
$comments = $res->get('comments');
if($name == $id) {
$count = '<a href="[[~'.$document_id.']]#comment-1">'.$comments.'</a>';
}
}
// Views
$resources = $modx->getCollection('TicketView');
$i = 1;
foreach ($resources as $k => $res) {
$views_parent = $res->get('parent');
if($views_parent == $id) {
$views = count($views_parent);
$views = $i++;
}
}
echo '<ul data-id="'.$id.'">
<li><i class="glyphicon glyphicon-calendar"></i> '.$date.'</li>
<li><i class="glyphicon glyphicon-user"></i> <a href="[[~2147]]'.$createdby.'/">[[+modx.user.id:userinfo=`fullname`]]</a></li>
<li><i class="glyphicon glyphicon-eye-open"></i> '.$views.'</li>
<li><i class="glyphicon glyphicon-comment"></i> '.$count.'</li>
<li><i class="glyphicon glyphicon-folder-open"></i> '.$parent.'</li>
</ul>';
Решение на коленке, вроде всё работает, но использовать на свой страх и риск.
Мое мнение — лучше бы данные записал в ТВ, а оформление отдал чанкам
Это больше для пользователей, а не для разработчиков) Мне и так сойдёт, работает же всё и считает) Кстати, работает через чанк и pdoPage)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.