SEQUEL.ONE

SEQUEL.ONE

Был в сети 30 июня 2026, 13:59
Заказы принимаю


Вот что в итоге накорябал:

Вызов снипета в чанке: [[!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>';
Решение на коленке, вроде всё работает, но использовать на свой страх и риск.
А если я не хочу записывать в тв? А хочу через апи вывести для документа количество просмотров и комментариев? Как быть? Что делать? Сейчас набросал вот такой код:

<?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>';
Остались просмотры и комменатрии.
Код чанка:
<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>
Спасибо, всё заработало. Домены добавляются) А не в курсе как в pdoPage можно сделать выборку по полям? Рисуется таблица с параметрами и при нажатии скажем на тИЦ показывал сначало сайты с большим тИЦ и так по всем полям? Есть ли какое-то простое решение?