We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31022
    • 328 Posts
    Здравствуйте!

    Осваиваю phx, возникла пара вопросов. Сначала задача. Делаем каталог на Ditto. Необходимо отмечать избранные документы как новые в выводе, причем вручную. Создаю tv newMark: RadioOptions и "Отметить==On||Не отмечать==Off". Вызываю в чанке Дитто
    <h2>[+phx:if=`[+newMark+]`:is=`On`:then=`{{markAsNew}}`:else=``+][+factory+]: [+pagetitle+]</h2>
    <p><img src="[+photo+]" width="100" />[+desc+]</p>


    Не работает. Не работает она так: выводится везде значение при else (у меня там раньше был знак "_") Почему? Это вопрос первый. Ведь вызов phx здесь -- копия вызова из документации. Причем Дитто в дебаг-отчете вообще не упоминает про tv newMark нигде, в том числе во вкладке Retrieved. Дитто не "схватывает" переменную?

    А вот если просто поставить [+newMark+] рядом -- выводится сначала она сама (то есть On или Off), а потом она участвует (схватывается!) в выводе остального. Предыдущее наблюдение привело меня к замене [+phx... на [+newMark..., то есть:

    <h2>[+newMark:if=`[+newMark+]`:is=`On`:then=`{{markAsNew}}`:else=``+][+factory+]: [+pagetitle+]</h2>
    <p><img src="[+photo+]" width="100" />[+desc+]</p>


    И это работает. Как-то ненормально, мне кажется, или нет? Это был первый вопрос. (:

    Второй вопрос. Можно ли оставить else=`` пустым, если мне нечего там выводить? Это не будет ошибкой/ возможным багом/ еще чем?

    Спасибо!
      • 31213
      • 153 Posts
      http://ditto.modxcms.com/tutorials/phx-and-nested-tags.html - может быть в этом дело?

      Насчет else - все нормально
        • 31022
        • 328 Posts
        Спасибо (:

        Включил hiddenFields -- переменная появляется в Retrieved и все работает даже с [+phx:...] Ведь читал это, но вовремя не вспомнил. Оставлю новый вариант, не знаю, какой правильней, но про этот хоть в доках написано.
          • 31022
          • 328 Posts
          Снова у меня квест по phx. Вот такой табутаск: нужно на основной странице с новостями (Дитто) НЕ выводить ссылку на себя, а на страницах архива выводить ссылку на основную страницу новостей. К чему привязаться в phx, если id не меняется? (По этой же причине MakeLink не поможет.)

          При использовании Reflect для архива меняется только get-запрос. Пробовал phx:get, но он при смене страницы почему-то перестает меняться сразу после первого перехода. То есть раз сменилась переменная, и все, такой и остается.

          Какое условие можно в phx мониторить, чтобы вовремя включать такую ссылку?
            • 1788
            • 1,103 Posts
            Quote from: umanuma at Jun 05, 2008, 04:43 AM


            <h2>[+newMark:if=`[+newMark+]`:is=`On`:then=`{{markAsNew}}`:else=``+][+factory+]: [+pagetitle+]</h2>
            <p><img src="[+photo+]" width="100" />[+desc+]</p>


            И это работает. Как-то ненормально, мне кажется, или нет? Это был первый вопрос. (:

            Второй вопрос. Можно ли оставить else=`` пустым, если мне нечего там выводить? Это не будет ошибкой/ возможным багом/ еще чем?
            http://wiki.modxcms.com/index.php/PHx/CustomModifiers#phx:ifnotempty
            [+string:ifnotempty=`String to return if not empty`+]
              • 31022
              • 328 Posts
              Не-не-не, Девид Блейн, нет! (: С этим уже решена проблема. Я решил не ставить еще один сниппет и оставить как есть. Что делать с архивом?
                • 1788
                • 1,103 Posts
                Quote from: umanuma at Jul 08, 2008, 05:48 AM

                Снова у меня квест по phx. Вот такой табутаск: нужно на основной странице с новостями (Дитто) НЕ выводить ссылку на себя, а на страницах архива выводить ссылку на основную страницу новостей. К чему привязаться в phx, если id не меняется? (По этой же причине MakeLink не поможет.)
                Вам нужно со страницы А сделать ссылку на страницу Н ?
                Если так, то какая проблема?
                  • 31022
                  • 328 Posts
                  Страница с новостями имеет адрес вид news.html. Страница с архивом -- news.html?news_month=4&news_year=2008&news_day=false&news_start=0. С точки зрения id -- это одна страница. Нужно, если адрес второй -- выводить ссылку, если первый -- не выводить.
                    • 31213
                    • 153 Posts
                    Вам нужно написать сниппет, потому как нужен доступ к GET параметрам, чего phx не умеет, примерный вид сниппета:

                    <?php
                    if(isset($_GET)) {
                        echo "[~[*id*]~]";
                    }
                    ?>
                    
                      • 31022
                      • 328 Posts
                      Хм, решение красивое, но не работает. Просто выводит ссылку и все, на любой из страниц.

                      <?php
                      if(isset($_GET)) {
                          echo '<a href="[~[*id*]~]">Все новости</a>';
                      }
                      ?>


                      Я пробовал сниппет phx:get вида
                      <?php
                      return $_GET[$options];
                      ?>


                      Но он почему-то тоже не меняется. То есть пишешь вызов [+phx:get=`news_month`+], он выводит номер месяца, на который нажали первый раз. И потом его не меняет, на какой бы не нажимали месяц.