Вывод заполнителей списка modx TV

Я новичок в modx и имею ограниченные знания PHP. Я пишу фрагмент и борюсь с синтаксисом. Я хочу вывести заполнители списка переменных шаблона. Что я пытался сделать, так это получить идентификаторы списка ТВ и прокрутить каждый из них, возвращая html. Не очень повезло. Прости мою глупость.

            <?php
            $o='';
            $docid=$modx->resource->get('id');
            $show = $modx->resource->getTVValue('showHideContacts');
            $heading = $modx->resource->getTVValue('contactTitle');

            $staffVar=$modx->getObject('modTemplateVar',26); 
            $staff = $staffVar->getValue($docid);


            if($show =='value1')
            {

            //opening
            $o.='<div class="row">
            <div class="span9">
            <div class="footerContact">
            <h3><i class="icon-mail-circled"></i>'. $heading .'</h3>
            <div class="row">';


            if (!empty($staff)) {
               foreach($staff as $staff) {

                $name = $staff->resource->get('pagetitle');
                $title = $staff->resource->get('longtitle');
                $number = $staff->resource->get('description');
                $email = $staff->resource->get('introtext');

                  $o .= '<div class="span3">
                        <ul class="contactDetails">
                        <li><b>'. $name .'</b></li>
                        <li>'. $title .'</li>
                        <li>'. $number .'</li>
                        <li><a href="mailto:'. $email .'">'. $email .'</a></li>
                       </ul>
                      </div>';
               }
            } 

            //close 
            $o.='
            </div>
            </div>
            </div>
            </div>';


            }
            return $o;

person user2540055    schedule 28.08.2013    source источник
comment
Какой штатный тип тв?   -  person Vasis    schedule 28.08.2013
comment
staffVar — это просто имя переменной шаблона переменных, которые я получаю. Я уже заметил одну ошибку, которую я сделал, и это то, что $staff является массивом. Мне нужно будет взорвать его и получить заполнители для каждого идентификатора.   -  person user2540055    schedule 28.08.2013


Ответы (2)


Я получил желаемый результат. Прибегал к PHP и SQL вместо синтаксиса modx.

    $staffVar=$modx->getObject('modTemplateVar',26); 
    $staff = $staffVar->getValue($docid);


    if($show =='value1')
    {

    //opening
    $o.='<div class="row">
    <div class="span9">
    <div class="footerContact">
    <h3><i class="icon-mail-circled"></i>'. $heading .'</h3>
    <div class="row">';

    $totalContacts = explode("||", $staff);
    for($i = 0; $i < count($totalContacts); $i++){
         $id =$totalContacts[$i];

    $stmt = $modx->query("SELECT pagetitle, longtitle, description,introtext
    FROM $table
    WHERE id=$id
    AND published=1
    AND deleted=0
    ORDER BY menuindex ASC
    "
    );

    if ($stmt && $stmt instanceof PDOStatement) {

        while ($row= $stmt->fetch(PDO::FETCH_ASSOC)) {


            $o.='<div class="span3">
            <ul class="contactDetails">
            <li><b>' . $row['pagetitle'] . '</b></li>
            <li>' . $row['longtitle'] . '</li>
            <li>' . $row['description'] . '</li>
            <li><a href="mailto:' . $row['introtext'] . '" >'.$row['introtext'] .'</a></li>
      </ul>
    </div>';
    }
    }
    }
person user2540055    schedule 29.08.2013

Похоже, что вы хотите сделать, это использовать плагин getResources и сделать простой. Если я правильно понимаю ваш код из вопроса, вы смотрите на переменную шаблона для текущего ресурса и получаете ее значение, вы затем хотите зациклить контакты, когда есть что зацикливать. Это может быть проще сделать с помощью плагина getResources, используемого непосредственно в вашем шаблоне. Предположим, что TV с идентификатором 26 представляет собой список идентификаторов, разделенных запятыми. В противном случае вам пришлось бы преобразовать его в такой список, прежде чем передать его &resources=.

[[getResources? &resources=`[[*nameOfTVWithID26]]` &tpl=`yourChunk`]]

Где yourChunk выглядит примерно так

<div class="span3">
    <ul class="contactDetails">
        <li><b>[[+pagetitle]]</b></li>
        <li>[[+longtitle]]</li>
        <li>[[+description]]</li>
        <li><a href="mailto:[[+introtext]]">[[+introtext]]</a></li>
    </ul>
</div>

Это поможет вам извлечь HTML-код из сниппета и вообще не использовать его. Это также упрощает расширение функции, просто добавляя некоторые параметры к вашему getResources вместо того, чтобы изменять или полностью переписывать свой пользовательский фрагмент.

person Kristian Sandström    schedule 30.08.2013