[+phx:if=`[!Some_snippet!]`:is=`1`:then=`yes!!!!!`:else=`no`+]
Some_snippet ---------
<?php
$i="1";
return $i;
?>
И ни в какую не работает. Смысл в том что я ловлю $_GET переменную, если она такая-то то выводим такой-то чанк. С [+phx:get=’name’+] тоже никак, он кеширует етот запрос и $_GET переменную, и в следствии на зазных значениях переменной $_GET даёт один и тодже результат. Лишь спустя минуту две кеш удаляется и если перегрузить получает новое значение.
Как можно решить эту проблему с PHx? почему он неработает как в примере выше. Помоги те. Прошу второй день, лбом об стенку и никак.
Quote from: bumkaka at Mar 01, 2011, 04:52 AM
Как можно решить эту проблему с PHx?
Зачем вообще в таких случаях использовать PHx? Или «нормальные герои всегда идут в обход»? Если есть сниппет, выдающий какую-то информацию, надо в него и дописывать все условия и действия, а не вызывать PHx, который отличается жуткой неэффективностью. Или, в крайнем случае, дописывать небольшой сниппет, где вставлять вызов исходного сниппета.
А по конкретной задаче – PHx раньше обработает шаблон, чем выполнится сниппет, то есть сравнивается с единицей не результат сниппета, а текст его вызова.
Согласен, ноя никак не могу реализовать развилку, от значения $_GET, выполнить определённый чанк. пробовал modx->parsechunk на выходе html и вместо результата внутренних сниплетов выводится лишь их вызов тоесть в браузере - (bla bla bla [!some_snipet!] bla bla bla). Мне бы хоть кусочек кода, чтоб соорентироваться.
Неужели нет ни одной идеи, как мне организовать развилку
Quote from: bumkaka at Mar 01, 2011, 05:59 AM
Неужели нет ни одной идеи, как мне организовать развилку
Идеи есть - надо написать нормальный сниппет. Если требуется вызов других сниппетов, вызывать их через API.
Quote from: bumkaka at Mar 01, 2011, 06:59 AM
Да не сниппет, а чанк.
Quote from: bumkaka at Mar 01, 2011, 06:59 AM
внутри у них куча … сниппетов
См выше.
Мда, хороший форум.
- Подскажите как можно стену из кирпича построить--- ответ: берёш и строишь, типа снизу вверх. (что итак ясно).
- А как лучше крышу накрыть --- Ответ: Как, как, вот что выберешь тем и кроешь, чё тут мудрённого (мда. подсказал)
и тд.. советчики.
Отвечаю на пост №1 мною заданный.
В ходе лбо разбивание об MODX PHx, выяснил: для организации развилки можно пойти двумя вариантами
1. Создаём TV с любым именем, к примеру "some_TV", в поле значение по умолчанию пишем "@EVAL return $_GET[’параметр’];" , далее мы можем использовать TV так: [*some_TV*]. [+phx:if=`[*some_TV*]`:is=`main`:then=`{{some_chank}}`:else=`{{else_chunk}}`+]. Далее по логике, к ссылке добавляете www.blabla.ru/note?параметр=main
2. Или делаете так, создаёте сниппет (к примеру [!my_snippet!]) где указываете return $_GET[’параметр’]. далее [+phx:if=`[!my_snippet!]`:is=`main`:then=`{{some_chank}}`:else=`{{else_chunk}}`+]
- обязательно снимите галочку в свойстве документа "Кешировать" иначе результата не будет.
- не знаю почему но в коде phx.parser.class.inc.php версии 2.1.4, в строке 98 есть закоментеная выборка, заменил нею нижнюю строку и [!my_snippet!] начал обрабатываться после [+phx:if=` до этого выполнялся только кешируемы снипет [[ ]] и никак не [! !]
И не надо никаких сниппетов писать, и тд. как советовали выше!!!!!
Quote from: bumkaka at Mar 01, 2011, 02:25 PM
И не надо никаких сниппетов писать, и тд. как советовали выше!!!!!
Ну да, полный отказ от кэширования страниц и использование жрущего ресурсы PHx – это конечно, огромное достижение, когда все можно было сделать намного проще. Но можете гордиться собой – все же добились, чтобы заработала нежизнеспособная конструкция.
Ну а все же, я то дал код..... Ну проще чем добавить ТВ, дать ему значение, и вставить в скромный phx, не знаю я. покажете проще - мой вам поклон, и уважение