Aleksandr Huz

Aleksandr Huz

Был в сети 04 ноября 2025, 21:25
Заказы принимаю
Еще одна таблица нужна — modTemplateVarResource
<?php
$art = 23; // id tv
$query = $modx->newQuery('msProduct');
$query->leftJoin('msProductData', 'Data');
$query->leftJoin('modTemplateVarResource', 'art', 'msProduct.id = art.contentid AND art.tmplvarid = ' . $art);
$query->groupby('msProduct.id');
$query->where(array(
    'msProduct.parent:IN' => [10, 20],
    'Data.price' => '60',
    'art.value' => '10'
));
$products= $modx->getCollection('msProduct', $query);
 
foreach ($products as $k => $product) { 
    $title = $product->get('pagetitle');
}
Ну конечно можно))))
{'pdoResources' | snippet: [
    'parents' => 7,
    'includeTVs' => 'migx_tv',
    'tpl' => '@INLINE {set $output = $_modx->getPlaceholder("output")?:[]}{set $output[$id] = $_pls["tv.migx_tv"]}{$_modx->setPlaceholder("output", $output)}'
]}
И получаем плейсхолдер с готовым массивом
{$_modx->getPlaceholder('output')}

Обратите внимание, что ключи полученного массива — это id ресурса. Но можно и не указывать ключ))
set $output[$id] = ...
Артем, привет.
Есть несколько вопросов.

1. Зачем 2 раза регистрировать скрипт?
$modx->regClientScript($js);
if (preg_match('/\.js$/i', $js)) {
	$js .= '?v=' . substr(md5($version), 0, 10);
}
$modx->regClientScript($js);

2. Если jquery загружать асинхронно(defer), то код не сработает.
Если поменять функцию ready то все будет работать.
$(document).ready(function ($) {
     modAlertify.initialize();
});
на
document.addEventListener('DOMContentLoaded', function(){
     modAlertify.initialize();
});

Как вывести MIGX через Fenom с другой страницы
{var $gallery = 7 | resource: 'gallery' | fromJSON}
7 = id нужно страницы.

а вот хотелось бы на главной вывести 6 результатов, как это сделать?
{set $limit = 6}
{foreach $gallery as $idx => $item}
    {if $idx < $limit}
     ...
    {/if}
{/foreach}
Можно через модификатор:
$fenom->addModifier('tvname', function ($tvname) {
    // Получаем объект TV по имени
    $tv = $modx->getObject('modTemplateVar',array('name' => $tvname));
    // id текущего ресурса
    $id = $modx->resource->id;
    // значение tv
    $value = $tv->renderOutput($id);
    
    // Ищем необходимое значение и возвращаем навазние
    $tvlist = explode('||', $tv->get('elements'));
    foreach ($tvlist as $item) {
        $arr = explode('==',$item);
        if($arr[1] == $value) {
            return $arr[0];
        }
    }
    return $tvname;
});

В чанке:
{'name TV' | tvname}