К содержанию

Снипет для выбора чанков

Добрый день, вопрос из разряда песочницы.
Есть 2 чанка, первый должен выводить поля документа [[*link_attributes]] и [[*longtitle]] в которых у меня произвольных данные. Второй на тот случай если мне не подходит первый.

Собственно вопроса 2.
1. Допустимо ли использовать поля документа [[*link_attributes]] и [[*longtitle]] со своими произвольными данными, чтоб не плодить TV? Ну раз они есть чё им пустовать.
2. Не догоню как набросать снипет чтоб при отсутствии данных в любом из полей [[*link_attributes]] и [[*longtitle]], первый снипет не выводился, а выводился второй, который выпоняет роль заглушки как раз на такой случай.
Владимир
Владимир
28 августа 2016, 11:20
modx.pro
1 947
Реклама

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

Павел Романов
Павел Романов Проверенный
28 августа 2016, 17:12
Проверка:
if(empty($field1) || empty($field2)) {
    $modx->runSnippet('Snippet1');
} else {
    $modx->runSnippet('Snippet2');
}
Но вообще, лучше и сниппеты не городить, а прямо в условии все прописать.

Вызов:
[[Snippet? &field1=`[[*link_attributes]` &field2=`[[*longtitle]]`]]
    Владимир
    Владимир Старожил
    28 августа 2016, 17:26
    Блин моя ошибка
    первый снипет не выводился, а выводился второй,
    Конечно же чанк, а не снипет. Снипет я думаю должен быть один, А чанки в зависимости от условия разными. Сорри.
      Павел Романов
      Павел Романов Проверенный
      28 августа 2016, 18:15
      Тогда так:
      if(empty($field1) || empty($field2)) {
          $modx->getChunk('chunk1');
      } else {
          $modx->getChunk('chunk2');
      }
        TITAN-UZ
        TITAN-UZ Проверенный
        28 августа 2016, 18:26
        Как это делать с tv chekbox (chek, unchek)!?
        Мой код:
        {if $_modx->resource.media !== 'yes'}
        video
        {else}
        photo
        {/if}
        Фронте работает норм но все равно вторая часть выполняется в бакенд ошибкой
          Павел Романов
          Павел Романов Проверенный
          28 августа 2016, 18:50
          А какая ошибка выдается?
            TITAN-UZ
            TITAN-UZ Проверенный
            29 августа 2016, 16:11
            PHP warning: Invalid argument supplied for foreach()
            Фото отправляет запрос на vk
              Павел Романов
              Павел Романов Проверенный
              29 августа 2016, 16:22
              Ошибка не в условии. Проверяйте, что там у Вас в этом photo.
                TITAN-UZ
                TITAN-UZ Проверенный
                29 августа 2016, 16:52
                Вот этот част выдает ошибку!
                foreach ($response as $res) {
                	$res['class'] = $class;
                	$output .= $pdo->getChunk($tpl, $res);
                }
                Как сделать чтоб 1 или 2 част не работал при выводе (chek, unchek) вывод мой код через сниппет не работает
                  Павел Романов
                  Павел Романов Проверенный
                  29 августа 2016, 17:09
                  Из ошибки следует, что у Вас проблема с переменной $response. То ли она не является массивом, то ли не существует, то ли ничего не содержит.
                  Смотрите, что там до этих строк, как формируется эта $response и, соответственно, проверяйте.
          Владимир
          Владимир Старожил
          30 августа 2016, 21:09
          Большое спасибо за помощь.
          В итоге у меня получился такой чанк
          [[!Snipet? &field1=`[[*link_attributes]]` &field2=`[[*longtitle]]` ]]
          И такой снипет
          <?php
          if(!empty($field1) && !empty($field2)) {
              $res=$modx->getChunk('chunk1');
          } else {
              $res=$modx->getChunk('chunk2');
          }
          return $res;
          Работает именно так как и задумано, если указанные поля не пустые отрабатывает первый чанк, если хоть одно из двух полей пустое, отрабатывает второй чанк. Работает не значит правильно. Нет ли здесь косяков?
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        10