We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6348
    • 90 Posts
    Есть сниппет, который что-то делает [[convert_snippet]]

    Ваяю другой сниппет:

    <?php
    получаю данные, в том числе и те, которые надо обработать сниппетом [[convert_snippet]], а как? можно конечно [[convert_snippet]] оформить как ф-ю, но как ей восп. в другом сниппете???


    ?>
      • 785
      • 2,113 Posts
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 32725
        • 107 Posts
        Блин, конечно все это можно сделать, и есть куча всяких мануалов по этому поводу. А еще если поискать на форуме то можно найти кучу тем с объяснениями как вызвать сниппет в сниппете...

        Вот только одного не понимаю. Зачем?

        Уже столько всяких сайтов на MODx сделал и ни разу эта "фича" не была нужна. Может если она вам нужна, значит вы делаете что-то не так?
          My portfolio
          Самурай без меча подобен самураю с мечом, только без меча.
          • 785
          • 2,113 Posts
          Quote from: Wuron at Feb 08, 2010, 10:11 AM

          Уже столько всяких сайтов на MODx сделал и ни разу эта "фича" не была нужна. Может если она вам нужна, значит вы делаете что-то не так?
          Вряд ли стоит такие далеко идущие выводы делать. Неужели ни разу не возникала необходимость программной генерации исходных данных для сниппетов? Не вдаваясь в подробности, использование API является наиболее удачным способом.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 32725
            • 107 Posts
            Quote from: AKots at Feb 08, 2010, 04:40 PM

            Вряд ли стоит такие далеко идущие выводы делать. Неужели ни разу не возникала необходимость программной генерации исходных данных для сниппетов? Не вдаваясь в подробности, использование API является наиболее удачным способом.
            И так, snipp1 генерирует данные для snipp2.

            Первый вариант:
            Если snipp1 никакого контента не выводит, а просто генерит параметры для snipp2, то зачем нам 2 сниппета? Делаем из двух сниппетов один и готово.

            Второй вариант:
            snipp2 - это какой-то сниппет, который мы где-то скачали, мы не понимаем, как он работает да и с PHP не особо дружим. В этом случае мы не сможем сделать из двух сниппетов один. Тогда делаем [[snipp2? &param=`[[snipp1]]`]]

            Третий вариант:
            Оба сниппета писались ручками и мы понимаем, где что происходит. Но при этом snipp1 должен вывести какой-то контент в одной части шаблона и сгенерить данные для snipp2, который тоже выводит контент, но в другой части шаблона.
            В этом случае в snipp1 пишем $modx->setPlaceHolder(’param1’, ’value1’); а в snipp2 пишем $value1 = $modx->getPlaceholder(’param1’);

            И зачем вызывать сниппет в сниппете?
            З.Ы. getPlaceholder и setPlaceholder - это тоже использование API smiley
              My portfolio
              Самурай без меча подобен самураю с мечом, только без меча.
              • 785
              • 2,113 Posts
              Quote from: Wuron at Feb 10, 2010, 10:44 AM

              Тогда делаем [[snipp2? &param=`[[snipp1]]`]]
              Сразу видно, что человек никогда не пробовал вызывать так сниппеты.
              Вносить правку в готовые сниппеты – хуже, чем использовать дополнительный сниппет для вызова. А первый и третий вариант предполагает именно внесение правки.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 32725
                • 107 Posts
                Quote from: AKots at Feb 10, 2010, 01:57 PM

                Сразу видно, что человек никогда не пробовал вызывать так сниппеты.
                Ну все... начался флейм и выяснение, кто круче smiley

                Действительно не пробовал, так как ни разу в таком не нуждался. Только-что попробовал и убедился, что вариант не работает smiley.

                А по-поводу "А первый и третий вариант предполагает именно внесение правки." не согласен
                Первый и третий вариант предполагает, что сниппеты я пишу сам. Следовательно я сразу пишу их так, как мне нужно, а не пишу как-нибуть а потом вношу правки.

                Пы.Сы. Хватить флеймить, а то придет Fuzzy и удалит топик к чертям smiley
                  My portfolio
                  Самурай без меча подобен самураю с мечом, только без меча.
                  • 785
                  • 2,113 Posts
                  Quote from: Wuron at Feb 12, 2010, 08:46 AM

                  выяснение, кто круче
                  Дело не в том, кто круче, а в том, что давая советы, надо отвечать за них. А не разобравшись в сути писать «Может если она вам нужна, значит вы делаете что-то не так?», это, по крайней мере, слишком самонадеянно.
                  Я не буду далее развивать дискуссию, но вызов сниппета из другого – достаточно востребованная в ряде случаев операция.
                    Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                    Статьи о MODx, регулярно новые публикации
                    • 11255
                    • 193 Posts
                    Когда просматривал эту тему - подумал: "Та там все легко и ясно. Разберутся. runSnippet и все." Но вот сегодня сам столкнулся с такой (или не такой) задачей.
                    Итак:
                    Использую Дитто для вывода новостей (тут не принципиально по поводу работы Дитто. Просто взял "черный ящик", который выводит новости). Чтобы разбивать новости по страницам - необходимо вызывать Дитто некешируемым.
                    В Дитто задаю tpl=`news`. В чанке news вызываю Jot (необходимо узнать кол-во комментариев). Пока Дитто был кешируемый - все отлично выводилось. Сейчас выводить [!Jot? &action=`count-comments` &docid=`14`!] вместо количества комментов.
                    Подскажите, пожалуйста, как решить проблему? (Варианты "не используй Дитто" и т.п. не походят. Это ведь касается любого сниппета.)
                      • 785
                      • 2,113 Posts
                      Quote from: Great-Antique at Feb 17, 2010, 01:34 PM

                      Использую Дитто для вывода новостей (тут не принципиально по поводу работы Дитто. Просто взял "черный ящик", который выводит новости
                      То, что Ditto – это как раз принципиально. Если используется кэшируемый вызов сниппета (любого), то все, что он генерирует, в дальнейшем не будет обрабатываться парсером MODx, так что надо передать нужные данные непосредственно в сниппет, чтобы он выдал готовый результат. Способ передачи как раз зависит от конкретного сниппета (если нет подходящего параметра для передачи данных), например, для eForm можно дополнительный сниппет привязать к событию, а для Ditto следует написать экстендер.
                      То есть следует написать экстендер, который вызывает Jot и формирует нужный плейсхолдер. Если кто-то знает иной способ, интересно было бы о нем узнать (конечно, можно еще плагин написать, который будет «на лету» менять значения, но это совсем некрасивый вариант).

                      Я бы, если у меня стояла такая задача, точно отказался бы от Ditto – сформировать любой список на PHP не так сложно, в большинстве случаев усилий будет приложено меньше, чем при настройке Ditto.
                        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                        Статьи о MODx, регулярно новые публикации