We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 18138
    • 30 Posts
    Скажите, как в Revo организовать вывод данных в чанк (см. ниже). Как решить эту задачу, если не использовать два отдельных чанка? Сначала сформировать список пунктов меню основываясь на "вложенный" шаблон, а затем вставить его в "основной".
    <ul id="subcat">
    <!--  -->
     <li><a href="[[+link]]">[[+title]]</a></li>
    <!--  -->
    </ul>
      Возможно все, но шансы астрономически малы
      • 16851
      • 3 Posts
      Если нужно иметь это именно в чанке и никак иначе - разместите в этом чанке вызов снипппета, а сниппетом можно сформировать что угодно.
        • 18138
        • 30 Posts
        Если следовать такой логике, то на кой черт нужны чанки, если все можно фигачить в сниппет?
        Идеальный вариант Чанка - это когда в нем есть только HTML код не зависимый от сниппета, чтобы человек отвечающий за шаблон мог изменить, что угодно (пример: стиль ссылки) не открывая PHP файлы и не ковыряясь среди пыхкода. Но в то же время Чанк вложенный в другой Чанк, тоже портит общую картину работы с html.
          Возможно все, но шансы астрономически малы
          • 785
          • 2,113 Posts
          Quote from: Mangust at Oct 15, 2010, 01:52 AM

          Если следовать такой логике, то на кой черт нужны чанки, если все можно фигачить в сниппет?
          А что, в HTML уже есть циклы? Если задачу нельзя решить средствами HTML, то и исключительно чанками ее не решить. В случае, когда решение задачи описывается каким-то алгоритмом, который можно реализовать языком программирования, необходимо использовать сниппеты.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 18138
            • 30 Posts
            Quote from: AKots at Oct 15, 2010, 03:13 AM

            А что, в HTML уже есть циклы? Если задачу нельзя решить средствами HTML, то и исключительно чанками ее не решить. В случае, когда решение задачи описывается каким-то алгоритмом, который можно реализовать языком программирования, необходимо использовать сниппеты.
            Разделение php кода от html необходимо для того, чтобы дизайнера/верстальщика не вникал в программирование, а программист в дело дизайнера/верстальщика.
            Задача сниппета обрабатывать какие-то данные и давать на выходе в чанк конкретные переменные. В моем примере это URL и TITLE. Зачем мне в сниппете формировать весь html код ссылки (<li><a href="[[+link]]">[[+title]]</a></li>)?
            Можно сделать так:
            Chunk1
            <ul id="subcat">
             [[$Chunk2]]
            </ul>

            Chunk2
            <li><a href="[[+link]]">[[+title]]</a></li>

            Но это же тоже "костыль". Как выкрутиться с помощью одного чанка, а не двух. huh
              Возможно все, но шансы астрономически малы
              • 785
              • 2,113 Posts
              Quote from: Mangust at Oct 15, 2010, 03:52 AM

              Но это же тоже "костыль". Как выкрутиться с помощью одного чанка, а не двух. huh
              Еще раз повторяю, что в HTML, как в языке разметки, а не программирования, нет циклов, так что решить задачу вывода каких-то значений средствами HTML нельзя. Если в чанке допускается только HTML, то и просто обойтись чанком нельзя. Два чанка позволяют легко описать внешний вид фрагментов, включающих цикличные части, при этом связываются они алгоритмически. Неважно, используется сниппет, плагин или встроенные средства системы, факт в том, что чистым HTML не обойтись. В принципе можно добавить логику в чанки (что-то вроде плагина PHx), но тогда само разделение логики и оформления будет нарушена, и вместо одного языка (PHP) придется просто учить другой язык (PHx или что-то другое).
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 9085
                • 630 Posts
                Сдается мне, XSL изобретается.. smiley Ну или собственный простенький(?) парсер шаблонов (готовый взять?) smiley
                Если слегка подправить код парсера чанков, наверное, можно реализовать то, что требуется Mangust-у... smiley
                А надо ли!?


                  Правильно заданный вопрос повышает вероятность получения нужного ответа.
                  Что-то не работает? Загляните в лог ошибок!
                  Есть проблема? "Локализуйте" её!
                  Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
                  • 18138
                  • 30 Posts
                  2AKots
                  Вы вообще не понимаете суть моего вопроса.

                  Quote from: esche at Oct 16, 2010, 02:24 AM

                  Ну или собственный простенький(?) парсер шаблонов (готовый взять?) smiley
                  Если слегка подправить код парсера чанков, наверное, можно реализовать то, что требуется Mangust-у... smiley
                  А надо ли!?
                  Мне это надо и мне это интересно.
                  Дайте подсказку, как это сделать? С чего начать? Какие функции копать и какой алгоритм можете предложить.
                    Возможно все, но шансы астрономически малы
                    • 9085
                    • 630 Posts
                    Quote from: Mangust at Oct 16, 2010, 11:17 AM

                    Мне это надо и мне это интересно.
                    Дайте подсказку, как это сделать? С чего начать? Какие функции копать и какой алгоритм можете предложить.
                    Конкретные примеры относятся к MODx EVO... Общее направление (возможно, от идеала далёкое, но к решению приведёт... вопрос цены smiley)

                    Общий алгоритм простой - условиться, какие конструкции как обрабатываются ({for i=1;10}<li></li>{/for}) и написать функцию(несколько? класс? несколько?), которая будет их обрабатывать. Как шаблонизаторы писать - статей куча.. Копать в инете по запросу "пишем php шаблонизатор". Откидывать или нет готовых монстров типа Smarty - не знаю.. вдруг это именно то, что нужно... Можно за основу какой-нибудь простенький взять... главное, чтоб "спецсимволы" не пересекались с системными...

                    В MODx (EVO) за парсинг документа отвечает класс DocumentParser - искать в /manager/includes/document.parser.class.inc.php
                    около 1000 строки:
                                // replace HTMLSnippets in document
                                $source= $this->mergeChunkContent($source);


                    Вот в функции mergeChunkContent, можно "пошаблонить". (Например, можно перед
                    return $content; 

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

                    В чанк вида
                    <ul>
                    {foreach data}
                    <li><a href="[[+link]]">[[+title]]</a></li>
                    {/foreach}
                    </ul>
                    

                    надо передать несколько LINK-ов и столько же TITLE-ов.. Как? В каком виде их получить, например, от Ditto?

                    ps. Даже если ощутимого результата (в виде шаблонизатора) не будет, MODx станет намного ближе smiley
                      Правильно заданный вопрос повышает вероятность получения нужного ответа.
                      Что-то не работает? Загляните в лог ошибок!
                      Есть проблема? "Локализуйте" её!
                      Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx
                      • 785
                      • 2,113 Posts
                      Quote from: Mangust at Oct 16, 2010, 11:17 AM

                      Вы вообще не понимаете суть моего вопроса.
                      Значит так «замечательно» его описываете. Вопрос читается примерно так: «я хочу исключительно средствами HTML и в одном блоке описать заранее неизвестное количество ссылок».
                        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                        Статьи о MODx, регулярно новые публикации