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


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

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

Комментарии (10)

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

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