Выходные заполнители списка модх ТВ
Я новичок в 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;
2 ответа
Похоже, что вы хотите сделать, это использовать плагин getResources и сделать простое. Если я правильно понял ваш код из вопроса, вы посмотрите на переменную шаблона для текущего ресурса и получите его значение, тогда вы захотите зациклить контакты, когда есть какие-то петли. Этого проще достичь с помощью плагина getResources, который используется непосредственно в вашем шаблоне. Предположим, что телевизор с идентификатором 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
вместо того, чтобы изменять или полностью переписывать свой пользовательский фрагмент.
Я получил результат, который хотел. Прибегает к 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>';
}
}
}