И кстати написание своих сниппетов не поможет
Я писал для таких случаев плагин

1) Вся та логика, которую вы вынесли в плагин, вполне может быть учтена в сниппете.

2) Проблема очередности заполнения плейсхолдеров и выполнения сниппетов существовала всегда. Только решалась она, возможно, другим образом, точно не знаю. Более того, вы не можете со 100% уверенностью сказать, что первыми всегда надо заполнить плейсхолдеры или первыми всегда надо выполнить сниппеты. Все зависит от логики вложенности.

Этот эффект, кстати, был одной из главных причин ненависти населения к PHx. Тот резал все плейсхолдеры без разбора, свои они или чужие. В результате результат вызова сниппета в сниппете мог предсказать только астролог.

PS
япошка поменял логику
Я верно понимаю, у вас не возникает дискомфорта, когда вас именют «русяшкой»?
Вы в этом условии отработали также как в его примере с AND

Именно так. Дальше дело ТС — сделать выбор, что ему больше по душе.

Первая часть вашей лекции для меня непонятна.
Я тут знаю решение и вижу проблему.
Проблема и она из версии к версии с 1.0 тянется, или с какой, короче где япошка поменял логику, в общем если значение у Вас не инициализировано, то оно не считается пустым, оно так и будет называться [+tv3+], точнее значение это будет равно названию [+tv3+] например.
Понимаете?
А раньше видимо сначала переменные обрабатывались или сравнение шло по плейсхолдерам, а сейчас почему-то если плейсхолдер пустой, то сравнивается его имя со значением, а не пустая переменная со значением.
В Вашем примере
&is=`[+tv1+]:=:1:and:[+tv2+]:=:0:or:[+tv3+]:not_in:0,3`

скорее всего либо tv1 либо tv2 либо tv3 не заданы.
Я писал для таких случаев плагин, и ставил его перед обработкой доков и каждому плейсхолдеру, используемому мной присваивал пусто ""
тогда всё тип-топ и работает.

И кстати написание своих сниппетов не поможет, если значение изначально не определено и передано в сниппет, ведь IF это тот же сниппет, например в IF проверьте значение GET переменной VASYA не указывая его в запросе :) (НЕ В ВАШЕМ СНИППЕТЕ!!! НЕ В PHP!)
Человек попросил и указал где проблема. -> Он не программист и пользуется тем, что предоставлено. -> То что никто этим не пользуется, не его проблема.

Вы в этом условии отработали также как в его примере с AND. :)
С simple gallery вообще засада :(


Ну да, верстальщику проще изучить птичий язык построения условий с приоритетами, нежели 2 оператора в php.
Вот пример космической сложности:


<?php
/**
 * snippet YesNo
 *
 * Пример вызова:
 * [! YesNo? &tv1=`[+tv1+]` &tv2=`[+tv2+]` ... &yes=`{{yes.chunk}}` &no=`{{no.chunk}}` !]
 */
$params = $modx->event->params;

if ($params['tv1'] == 1 && $params['tv2'] == 0 && ($params['tv3'] != 0 && $params['tv3'] != 3) ) {
    return $yes;
} else {
    return $no;
}


Код тут не оптимален, но главное — суть.

Насчет кучи сниппетов: куча мусора в шаблонах вас не пугает, а куча сниппетов почему-то пугает. Это неправильно. Назовите свои сниппеты как-нибудь человеко-понятно и шаблоны будут приятнее. Например:


<!-- Вместо -->
[!if? &is=`unsdfvisnfoviuseoisbosiuvldiunsieunsiubnoirutnbsoiudfnbsoidunbsoidugnboifgubnodfiug` &then=`...` !]

<!-- Можно сделать так -->
[! YesNoPriceForRegistered? &tv1=`...` !]


Так у вас в шаблонах останутся только необходимые вещи, а логика уйдет туда, где ей самое место, в php код.
  • avatar Jassie
  • 0
потому что я верстальщик ((
тем более, на каждый if — свой сниппет, это же куча их получится
PHP не вариант.

Почему?
  • avatar Jassie
  • 0
А этот новый IF нельзя использовать внутри шаблонов DocLister и прочих вариантах с
[+ +]
?
Посмотрел, захотелось круассан и кофе… Потом вспомнил, что кофейня рядом с похожим начертанием лого :D
  • avatar VicK
  • 1
Проблема решена с помощью f1fanatic.
Спасибо за помощь.
спасибо за минус, было бы еще хорошо аргументировать его.
браузер firefox, специально проверил на сайте где нет плагинов дополняющих приветственную заставку
  • avatar VicK
  • 0
Постучался к Вам в скайп.
victor.kruglik
Напишите мне по адресу: f1fanatic@inbox.ru
Либо в скайпе: evgen28461
Помотрим, поправим…
  • avatar VicK
  • 0
вы создайте новый топик, этот уже не смотрят
Все зависит от Ваших знаний PHP.
  • avatar VicK
  • 0
я могу что то исправить самостоятельно?
сниппет getContent кривой
  • avatar VicK
  • 0
в /public_html/manager/includes/config.inc.php поставил type=mysql
вместо mysqli. Это мне тоже помогло, но при переходе в каталог с товарами — другая ошибка:


Подскажите, пожалуйста, как решить проблему.