Сниппет - проверка файла на существование

Создал сниппет FileExists
$pid = '[[*parent]]';                      //получаем id родителя (допустим 4)
$path = 'images/'.$pid.'.jpg';       //подставляем id родителя в путь (получается images/4.jpg)

if (file_exists($path)) {              
    echo $path. 'файл есть';
} else {
    echo $path. 'файла нет';
}
вызываю сниппет на странице [[!FileExists]]
выводит — images/4.jpg файла нет

если же я ручками прописываю $pid = '4';
то выводит — images/4.jpg файл есть

Что за волшебство такое? Непонятненько… Подскажите, в чем проблема?
start.exe
13 сентября 2014, 06:21
modx.pro
1
2 214
0

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

Василий Наумкин
13 сентября 2014, 10:24
+1
$pid = '[[*parent]]';
Здесь всегда будет пусто, потому что теги внутри сниппета не работают.

Нужно так:
if (empty($pid)) {
	$pid = $modx->resource->parent;
}
    start.exe
    13 сентября 2014, 10:32
    0
    Василий, большое спасибо за столь оперативный ответ! Теперь всё работает, как надо. Спасибо еще раз)
      Вячеслав Варов
      01 июля 2020, 13:25
      0
      Добрый день! А как быть если я вызываю снимет внутри другого, например pdoMenu, и мне нужно получить id пункта меню и его обработать в своем сниппете?

      например:
      [[pdoMenu?
      &tpl=`@INLINE [[mySnippet?&id=`[[+id]]`]] .... `
      а внутри mySnippet мне нужно получить id пункта
        Андрей
        01 июля 2020, 13:46
        0
        Нужно вынести в чанк, в inline не будет работать.
          Сергей Шлоков
          01 июля 2020, 17:39
          +3
          Я уже с устоявшейся периодичностью кидаю одну и ту же ссылку на документацию. Почему их никто не читает? Буквально два коммента назад писал.

          П.С. Заметил, что у нас появился злой бот по имени Slava, который всем тупо минусы ставит. Вот и Андрея он не взлюбил. У меня ни одного коммента не пропускает. Какие-то проблемы у парня. Даже не знаю, чем ему помочь. Может побольше комментов писать, чтобы он душу отводил ставя минусы?
            Василий Наумкин
            01 июля 2020, 18:32
            0
            Он уже некоторое время у меня на карандаше.

            Пока просто обнулил все отрицательные оценки, будет продолжать — отключу.
              Сергей Шлоков
              01 июля 2020, 20:01
              0
              Я бы на его месте занялся саморазвитием. Поднимать самооценку делая гадости другим деструктивно действует на личность. В этом плане религия усиливает нравственный фундамент человека, раз уж государство сняло с себя обязательство по воспитанию детей. Я сейчас не про церковь говорю.
              Иван Бочкарев
              02 июля 2020, 11:47
              0
              Меня он тоже не любит, минусит =)))
                Вячеслав Варов
                02 июля 2020, 23:44
                0
                Спасибо!
            start.exe
            13 сентября 2014, 11:50
            0
            на всякий случай выложу готовый сниппет здесь, вдруг кому пригодится:

            <?php
            $pid = $modx->resource->parent;
            $childname= $modx->resource->pagetitle;
            $path = 'i/pdf/'.$pid.'-'.$childname.'.pdf';
            
            if (file_exists($path)) {
                echo '<a href="'.$path.'" class="download" title="Скачать PDF '.$childname.'">Скачать PDF-каталог '.$childname.'</a>';
            }
            Пригодится он для того, чтобы можно было выводить ссылку на файл, прикрепленный к документу, если он(файл) существует.
            При этом не нужно создавать дополнительную ТV, и указывать её значение для каждого документа.
            Достаточно закинуть все нужные файлы в папку i/pdf/
            предварительно переименовав их, например, в 2-doc1.pdf, 2-doc2.pdf, 10-doc1.pdf, что легко делается через ТоталКоммандер.
              Николай Савин
              02 июля 2020, 08:09
              0
              Смешивать в одном месте php и html неправильно. Подумай как сделать разделить логику и отображение. Используй шаблонизатор.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              11