We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 19164
    • 1,215 Posts
    Угу, написать собственный сниппет с таким кодом, потом вставить вызов этого сниппета в шаблон. При это получится что часть дизайна (код для главной страницы и код для остальных страниц} перекачует в сниппет и в случае чего придется лезть в другое место и править именно сниппет, а не шаблон. А если таких мест несколько - править несколько сниппетов. Фигушки.

    Конечно, сам по себе PHx не идеален - слишком мало возможностей и слишком громоздкий синтаксис. Но не забываем, что его создали не разработчики движка, а  обычный человек как плагин-заплатку, расширяющую базовый функционал.

    Нормальный шаблонизатор, вот чего не хватает MODx.
      DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

      Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

      [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
    • Quote from: Metaller at Mar 04, 2009, 08:32 AM

      Угу, написать собственный сниппет с таким кодом, потом вставить вызов этого сниппета в шаблон. При это получится что часть дизайна (код для главной страницы и код для остальных страниц} перекачует в сниппет и в случае чего придется лезть в другое место и править именно сниппет, а не шаблон. А если таких мест несколько - править несколько сниппетов. Фигушки
      Хммм.. ну можно и в сниппете, конечно. Но правильнее было бы - сниппетом подхватывать нужный чанк с этим HTML кодом. Так думаю будет красивее и удобнее в дальнейшей работе.
      Т.е. как-то так:
      if ( condition ) {
      $output = "{{CHUNK_NUMBER_ODIN}}";
      }
      else {
      $output = "{{CHUNK_NUMBER_DVA}}";
      }
      return $output;
        Разработка сайтов и программных модулей на MODX.
        Опыт работы на MODx с 2005 года. Высокое качество.
        Компания Baltic Design Colors: http://www.bdcolors.ru.
        • 22532
        • 349 Posts
        врядли будет красивее маленький код ссылки держать мало того в отдельном месте так теперь и еще в 2-х разных местах
        к тому же второй чанк будет вообще тупо содержать кусок текста без ссылки
        в данном случае самое наглядное это phx
          • 19164
          • 1,215 Posts
          Опять повторюсь - это ведет к ненужному разделению кода. Сниппет завязывается с чанками определенных имен (CHUNK_NUMBER_ODIN, CHUNK_NUMBER_DVA) и определенным условием (condition). Все это нужно помнить, если не помнишь - лезть в сниппет и вспоминать. Если сниппетов несколько - помнить еще больше.

          Чтобы исправить код, нужно будет отдельно редактировать чанк.

          Лично мое мнение - в чанки нужно выносить действительно большие куски повторяющегося кода. Либо когда использование чанков продиктовано спецификой сниппета (дитто например).

          ЗЫ Чую, начинается холивар smiley
            DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

            Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

            [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
          • Quote from: Metaller at Mar 04, 2009, 08:32 AM

            Нормальный шаблонизатор, вот чего не хватает MODx.

            Metaller, шаблонизатор - это жуткое зло. PHP сам по себе шаблонизатор, куда ж еще больше..
            Наоборот, я счастлив, что в MODx нам не навязывают каких-то шаблонизаторов а-ля Smarty.
            С таким подходом мы бы имели армию друпаловидных трехколоночных сайтов smiley (без обид друпальцам, и на друпале легко можно сделать нестандартный вид, да только новичкам проще использовать то, что дают).
            А сейчас практически каждый сайт на MODx уникален (по крайней мере, внешне(.
              Разработка сайтов и программных модулей на MODX.
              Опыт работы на MODx с 2005 года. Высокое качество.
              Компания Baltic Design Colors: http://www.bdcolors.ru.
              • 19164
              • 1,215 Posts
              Может быть я чего-то непонимаю, кажется что термин "шаблонизатор" каждый из нас понимает по своему.

              Для меня шаблонизатор - это инструмент, который позволяет манипулировать динамическими данными внутри шаблонов. С его помощью мы можем разделить логику приложения и логику отображения. Все данные вычисляются внутри сниппета, но отображаться они должны только через чанки. Не должно быть никаких кусков html внутри сниппета - дизайн любого элемента должен быть настраиваемым через шаблоны.

              По сути в MODx есть подобие шаблонизатора, но некоторых функций в нем явно не хватает. Мы можем генерировать динамические данные внутри сниппетов, затем передавать их в шаблоны по средствам плейсхолдеров. Однако движок лишен (забудем про PHx) простейших базовых конструкций, присущих любому шаблонизатору (тому же native PHP):

              - if...then...else
              - for loop

              Представьте, как было бы здорово, если бы в сниппете мы могли извлечь массив данных из БД и передать его в шаблон. А в шаблоне просто через обычный for перебрать все элементы массива и вывести их с нужным форматированием.

              PS Совсем не понял, каким образом Smarty связан  с трехколоночными сайтами? В Smarty все та же гибкость, присущая MODx, никаких навязываемых стереотипов.

              А еще больше мне импонирует система шаблонов django - наследование шаблонов потрясающая вещь. Будь в MODx такое, не было бы больше никаких
              {{HEADER}}
              [*content*]
              {{FOOTER}}

              UPD Придумал аналогию - если лыжи прямые, это же не означает что мы можем ходить на них только по прямой - вперед и назад. Можно же при желании и поворачивать ) Это к вопросу о смарти и трехколоночности. Невзаимосвязаны эти понятия.
                DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
                • 1611
                • 591 Posts
                Игорь, при всем уважении, ваш подход слишком громоздок для такой простой цели, как проставление ссылки на «главную» или «карту сайта».
                По сути, то, что вы предлагаете в предельном варианте, после доработки, будет снипеттом топикстартера.

                Согласен, что если подобная задача стоит в сниппете, то нужно делать именно через if и modx->documentIdentifer (и, кстати, в PHP я разбираюсь чуть-чуть ;-) правда долгое время писал на Parser 3)

                А вот именно чего не хватает, это возможности использовать простую логику прямо в шаблоне, не городя лишних снипетов и чанков. И, соглашусь с Metaller, мне непонятно ваше отношение к smarty. Конечно, smarty гораздо запутаннее, чем Parser (похвалю свое болото), но для PHP лучшего не придумать. И если говорить о том шаблонизатор ли сам PHP, то вы не видели Parser.

                И для modx, PHx как я понял и является инструментом позволяющим расширить возможности шаблонов.
                • ОК, убедили, так будет проще в данном случае smiley На пару (ок, на 5) минут это ускорит разработку.. если это критично, не могу не согласиться.

                  Но в принципе я продолжаю считать, что программная логика не должна смешиваться с отображением (что, по сути, делают различные шаблонизаторы, как-бы облегчая процесс разработки). Дизайнер занимается дизайном, программист программирует, верстальщик нарезает дизайн в xHTML - не надо смешивать их работу.

                  И я вот чего еще не пойму - неужели интереснее и эффективнее тратить время на поиск, изучение, интеграцию неких шаблонизаторов, нежели постараться реализовать это уже имеющимися средствами? Причем я бы еще понял, если бы реально реализация заняла большое время.. так ведь это элементарные вещи, которые создаются очень быстро.

                  И по поводу Smarty - возможно, здесь я привел действительно не очень верную аналогию. Просто шаблонизатор мне напомнил друпаловский PHPTemplate, который по умолчанию так и тянет разработчика создать три колонки smiley В свое время я довольно много поработал с друпалом - можно, конечно, сделать все, что угодно, но вот определенная жесткость появляется, если вам навязывают подобные инструменты (шаблонизатор - шаблон - единый вид - одинаковость - серость - унылость... ряд можно продолжать).
                    Разработка сайтов и программных модулей на MODX.
                    Опыт работы на MODx с 2005 года. Высокое качество.
                    Компания Baltic Design Colors: http://www.bdcolors.ru.
                    • 19164
                    • 1,215 Posts
                    Шаблонизаторы как раз и помогают разделить работу дизайнера, программиста и верстальщика и логики программы и отображения.

                    Конкретно у Smarty с этим не все в порядке - он дает слишком большую свободу в шаблонах. Эта свобода ведет к неаккуратности, стремлению пользоваться всем этим барахлом внутри шаблона, что как раз и ведет к смешению логики - за это надо ногами по рукам бить. Но сейчас разговор не об этом.

                    Рассмотрим случай, с которого мы начали - страница не должна ссылаться сама на себя. Ссылка превращается в нессылку при определенных условиях. Разве это логика приложения? Я так не думаю - внешним видом ссылок должен заниматься верстальщик, а не программист и не надо уносить этот функционал в программный код.

                    Можно привести и другие примеры: например требуется отформатировать вывод определенных переременных. Наглядный пример - дату. Конечно приложение может отдавать уже отформатированную дату, но что если вид даты зависит от контекста? В кратких новостях 04.03.2009, в полной - Среда 4 Марта 2009. Гораздо проще сделать это прямо в шаблоне через модификатор переменных шаблона. А главное - наглядно, сразу видно в каком формате мы получаем дату.

                    Так что я останусь при своем. Шаблонизатор нужен, шаблонизатор - это добро, а время тратить нужно не на поиск и интеграцию, а на то, чтобы подобные функции появились в ядре MODx. Я переписывался на эту тему с разработчиками, но толком так и не понял, будет ли какой-то новый шаблонизатор у MODx или мы получим тот же PHx, но уже интегрированный в ядро.
                      DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                      Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                      [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
                    • Quote from: Metaller at Mar 04, 2009, 03:56 PM

                      Рассмотрим случай, с которого мы начали - страница не должна ссылаться сама на себя. Ссылка превращается в нессылку при определенных условиях. Разве это логика приложения?
                      Ну я то как раз думаю, что это логика приложения. Любые вычисления, сравнения условий и проч. - по-моему, это логические программные действия, даже несмотря на то, насколько они могут быть простыми.
                      Quote from: Metaller at Mar 04, 2009, 03:56 PM

                      Можно привести и другие примеры: например требуется отформатировать вывод определенных переременных. Наглядный пример - дату. Конечно приложение может отдавать уже отформатированную дату, но что если вид даты зависит от контекста? В кратких новостях 04.03.2009, в полной - Среда 4 Марта 2009. Гораздо проще сделать это прямо в шаблоне через модификатор переменных шаблона. А главное - наглядно, сразу видно в каком формате мы получаем дату.
                      Ну... может быть в некоторых специальных случаях это действительно получится быстрее. Хотя неужели программисту на PHP так уж сложнее отформатировать функцию date() как требуется? А по собственному опыту - я не могу припомнить проекты, где дата выводится то так, то эдак... Выбирается один какой-то вариант и используется по всему сайту. В сниппете, в конце концов, можно предусмотреть такие ситуации и передавать в них соответствующие переменные, если проект того требует.
                      Quote from: Metaller at Mar 04, 2009, 03:56 PM

                      Так что я останусь при своем. Шаблонизатор нужен, шаблонизатор - это добро, а время тратить нужно не на поиск и интеграцию, а на то, чтобы подобные функции появились в ядре MODx.
                      Да я даже и не пытался изменить твое мнение smiley Лишь делился своим. Я думаю, что опытные разработчики постепенно подбирают те варианты, которые для них по разным причинам становятся более удобными.
                      Quote from: Metaller at Mar 04, 2009, 03:56 PM

                      Я переписывался на эту тему с разработчиками, но толком так и не понял, будет ли какой-то новый шаблонизатор у MODx или мы получим тот же PHx, но уже интегрированный в ядро.
                      Таки и я останусь при своем smiley Очень надеюсь, что никакой шаблонизатор не будет встроен, в том числе и PHx. Ну и как маленькая (не такая уж важная по сравнению с чисто принципиальными подходами) деталь - дополнительные системы обработки данных требуют дополнительных серверных усилий. В маленьких проектах это не имеет значения, но в нагруженных проектах каждая деталь становится важной...
                        Разработка сайтов и программных модулей на MODX.
                        Опыт работы на MODx с 2005 года. Высокое качество.
                        Компания Baltic Design Colors: http://www.bdcolors.ru.