On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Здравствуйте!
    Мне нужно добавлять пунктам меню css-класс разным страницам динамически (в зависимости от даты). Условий много, поэтому я решил сделать для этого свой сниппет «dismenu», что бы там в php все это дело просчитывать. Создал tv (числовое поле) `day-num` для страниц и пытаюсь получить значение в сниппете для переменной $daynum:
    [[pdoMenu? &parents=`219`
    &level=`1`
    &includeTVs=`day-num`
    &rowClass=`[[dismenu? &daynum=`[[+day-num]]`]]`
    ]]
    Проблема в том, что в сниппете переменная $daynum выводится как текст (т.е. я не могу ее ни сравнить с другим числом, ни сделать арифметические действия). Все мои попытки преобразовать ее в число в сниппете с помощью функций php тоже не дают результата (превращается тупо в 0).
    Подскажите, что я делаю не так? [ed. note: igorsrt last edited this post 2 years, 5 months ago.]
    • Quote from: igorsrt at Nov 07, 2018, 05:48 PM
      Здравствуйте!
      Мне нужно добавлять пунктам меню css-класс разным страницам динамически (в зависимости от даты). Условий много, поэтому я решил сделать для этого свой сниппет «dismenu», что бы там в php все это дело просчитывать. Создал tv (числовое поле) `day-num` для страниц и пытаюсь получить значение в сниппете для переменной $daynum:
      [[pdoMenu? &parents=`219`
      &level=`1`
      &includeTVs=`day-num`
      &rowClass=`[[dismenu? &daynum=`[[+day-num]]`]]`
      ]]
      Проблема в том, что в сниппете переменная $daynum выводится как текст (т.е. я не могу ее ни сравнить с другим числом, ни сделать арифметические действия). Все мои попытки преобразовать ее в число в сниппете с помощью функций php тоже не дают результата (превращается тупо в 0).
      Подскажите, что я делаю не так?

      Сниппет в студию, это прежде всего!
        Anton Tarasov
        MODX Developer

        Email: contact@antontarasov.com
        Web: antontarasov.com
      • Сниппет в студию, это прежде всего!
        да сниппета-то, как такового пока и нет, только наметки..
        <?php
        $today = date("w");
        $day = $daynum;
        if ($today > $day)
        return "menu_disabled";

        Проблема в том, что значение переменной, переданной из pdomenu указанным мной способом ( [[dismenu? &daynum=`[[+day-num]]`]] ) PHP отказывается понимать как число (
        • Quote from: igorsrt at Nov 10, 2018, 11:11 AM
          Сниппет в студию, это прежде всего!
          да сниппета-то, как такового пока и нет, только наметки..
          <!--?php
          $today = date("w");
          $day = $daynum;
          if ($today --> $day)
          return "menu_disabled";

          Проблема в том, что значение переменной, переданной из pdomenu указанным мной способом ( [[dismenu? &daynum=`[[+day-num]]`]] ) PHP отказывается понимать как число (

          На всякий случай, в сниппете добавьте перед условием и скажите, что появится в логе:
          $modx->log(xPDO::LOG_LEVEL_ERROR, "Daynum value is = " . var_dump($daynum));

          И что, приведение типов не помогает?
          http://php.net/manual/ru/language.types.type-juggling.php
            Anton Tarasov
            MODX Developer

            Email: contact@antontarasov.com
            Web: antontarasov.com

          • На всякий случай, в сниппете добавьте перед условием и скажите, что появится в логе:
            $modx->log(xPDO::LOG_LEVEL_ERROR, "Daynum value is = " . var_dump($daynum));

            И что, приведение типов не помогает?
            появилось string(12) " "
            ...вские там (int), intval() не помогают... у меня есть смутное предположение что переменная передаётся в виде строки с модоксовскими кавычками `` (но это только предположение)
            • нет, я понял - в php попадает сама строка [[+daynum]]... но легче от этого не становится )
              • Quote from: igorsrt at Nov 11, 2018, 07:38 AM
                нет, я понял - в php попадает сама строка [[+daynum]]... но легче от этого не становится )
                Теперь я не понял. Сама строчка - исходная? или обрамленная чем-то?) А приведения -в итоге-то что-нибудь дают, вот вы пишете -не помогают - каков результат?
                  Anton Tarasov
                  MODX Developer

                  Email: contact@antontarasov.com
                  Web: antontarasov.com