Роман

Роман

С нами с 06 октября 2013; Место в рейтинге пользователей: #290
Павел Романов
04 апреля 2024, 12:02
2
0
Можно пойти другим путем:
@EVAL 
$gp = $modx->runSnippet('grandparent');
return $modx->runSnippet('pdoResources',array(
    'parents' => $gp,
    'templates' => 4,
    'limit' => 0,
    'tpl' => '@INLINE [[+pagetitle]] ([[+id]])==[[+id]]',
    'outputSeparator' => '||'
));
Тодор
21 марта 2023, 22:37
1
0
Лучше написать свой снипет (что то типо такого):
<?php
$tvId = "TV id";
$tvr = $modx->getCollection('modTemplateVarResource', array(
  'tmplvarid' => $tvId,
  'contentid:IN' => [1,2,3]//список ИД ресурсов
));
foreach($tvr as $tv){
    $value = json_decode($tv->get('value'), 1);
    foreach($value as $item){
        echo $item['title'];
    }
}
Артур Шевченко
07 февраля 2023, 22:11
1
+1
Ну продолжи логический ряд
$tmplObj = $modx->getObject('modTemplate', $template);
$templateName = $tmplObj->get('templatename');
Но если тебе нужно только имя шаблона, лучше сделать через newQuery, то текущий вариант прям сильно перегруженный по запросам в БД получается и два объекта получать ради одного имени это перебор по-моему.
Андрей
01 февраля 2023, 03:03
1
+2
Конструкция странновата, почему бы в сниппете не возвращать нужный чанк? Но в целом можно примерно так сделать:
{set $param = '!testSnippet' | snippet}
{set $chunkName = 'chunkName'~$param}
{$chunkName | chunk}
vectorserver
16 января 2023, 12:05
1
+1
Сорян нужное указывать
{var $count_pub+=1}
)))
{var $count_pub = 0}
{var $plus = [
    ["published" => 1,"name"=>"dsdsds"],
    ["published" => 1,"name"=>"xdsdsds"],
]}

{if $plus}
    {foreach $plus as $idx => $item}
       {if $item.published ==1}
            {var $count_pub+=1}
            {$item.name}
        {/if}
    {/foreach}
    RETURN COUNT: {$count_pub}
 {/if}
Артур Шевченко
09 января 2023, 13:14
1
+1
Я просто вариант предложил, а ты делай как больше нравится)))
Артур Шевченко
09 января 2023, 13:11
1
+1
Зачем делать код читабильнее? Ну чтобы удобнее было его читать самому и другим.
Что же до проблемы, то я бы на твоём месте проверил настройки источника файлов (baseUrl), так как у меня нет. Если же исходить из того, что слэш есть и он нужен то можно сделать так
{set $photo = ($el.id | resource: 'photo')}
{set $base_path = $_modx->config.base_path | ereplace: '/\/$/' : ''}
{set $path = $base_path ~ $photo}
{if $phote && file_exists($path)}
<img src="{$photo | pthumb : 'w=660&h=412&zc=1&q=90'}" alt="{$el.pagetitle}"/>
{/if}
Alexey
07 января 2023, 11:59
1
0
if ($input && file_exists($path)) {

Делай доп. проверку на пустоту tv -поля