Количество комментариев. Какой плейсхолдер?

Всем привет. Простите за нубский вопрос, но перерыл всю документацию и так не понял, если я хочу вывести количество оставленных комментариев на главной у новости, какой плейсхолдер использовать в вызове TicketMeta? Пробую [[+total]] не работает.
SEQUEL.ONE
05 сентября 2015, 14:07
modx.pro
1 083
0

Комментарии: 17

Василий Наумкин
05 сентября 2015, 18:19
0
Попробуй посмотреть в стандартные чанки. Если мне не изменяет память, должно быть [[+comments]].
    SEQUEL.ONE
    05 сентября 2015, 18:44
    0
    Всё верно, спасибо. А почему если указывать этот сниппет в чанке, который выводит данные из pdoPage на главной всё по нулям и у всех категория одна и таже «Главная». Я что-то не так делаю?
      Роман Садоян
      05 сентября 2015, 21:12
      0
      Код чанка напишите и код вызова pdoPage.
        SEQUEL.ONE
        05 сентября 2015, 22:22
        0
        Код чанка:
        <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>
          Роман Садоян
          06 сентября 2015, 01:17
          0
          <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
            SEQUEL.ONE
            06 сентября 2015, 04:39
            1
            0
            У меня уже чанк подключён tpl.RAPCORPNET.meta со всеми моими настройками, он от главной страницы данные берёт для всех ресурсов. По поводу pdoResources, если ставлю его, то у меня перестают работать TV-параметры.
              Роман Садоян
              06 сентября 2015, 13:22
              0
              Они не перестанут, вы делайте &includeTVs
                SEQUEL.ONE
                06 сентября 2015, 15:22
                0
                Надо это значение на ноль поставить?
                  Роман Садоян
                  06 сентября 2015, 16:20
                  0
                  впиши туда име TV, которые нужно получить, например &includeTVs=`image`, вызов твшки будет таким tv.image
    Сергей
    06 сентября 2015, 18:52
    0
    [[!getTicketCommentCount? &id=`[[+id]]`]]
    :
    $id;
    $resource = $modx->getObject('modResource', $id);
    $fields = $resource->toArray();
    echo $fields[comments];
      SEQUEL.ONE
      06 сентября 2015, 20:17
      0
      Не работает.
        SEQUEL.ONE
        06 сентября 2015, 20:30
        0
        Массива с названием comments там не нашёл.
          Роман Садоян
          06 сентября 2015, 20:54
          0
          Добавьте этот код в конце сниппета:
          $modx->toPlaceholders(array(
            'comments' => , array('count' => $fields[comments])
          ));
          Данные запишутся в ТВшку comments.count
            SEQUEL.ONE
            06 сентября 2015, 22:11
            0
            А если я не хочу записывать в тв? А хочу через апи вывести для документа количество просмотров и комментариев? Как быть? Что делать? Сейчас набросал вот такой код:

            <?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>';
            Остались просмотры и комменатрии.
        SEQUEL.ONE
        07 сентября 2015, 04:14
        0


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

        Вызов снипета в чанке: [[!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>';
        Решение на коленке, вроде всё работает, но использовать на свой страх и риск.
          Роман Садоян
          07 сентября 2015, 07:12
          0
          Мое мнение — лучше бы данные записал в ТВ, а оформление отдал чанкам
            SEQUEL.ONE
            08 сентября 2015, 16:36
            0
            Это больше для пользователей, а не для разработчиков) Мне и так сойдёт, работает же всё и считает) Кстати, работает через чанк и pdoPage)
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          17