We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 24804
    • 34 Posts
    Нужен сниппет для вывода аннотации статьи на главную.
    Необходимо на главную выводить начальную часть текста раздела. Ditto для этого не очень подходит, он выводит содержимое дочерних файлов, а мне необходимо выводить основной.
    Пока использую Ditto+FirstChildRedirect, но это меня не слишком устраивает - пришлось создать лишний документ и url немного портится.

    Прошу прощения, если окажется, что решение очевидно, я только начала разбираться с MODx, первый сайт на ней делаю.
      • 30354
      • 227 Posts
      Прочитал раза три. Не понял - или пиво еще меня не покинуло, или правдо тут путаница в изложении.
      Необходимо на главную выводить начальную часть текста раздела. Ditto для этого не очень подходит, он выводит содержимое дочерних файлов, а мне необходимо выводить основной.
      Что Вы тут написали?
      Что значит "текст раздела", "выводить основной" и т.д.? Какого раздела? И какой-такой "основной" Вы подразумеваете?
      Ditto может вывдить аннотации ЛЮБЫХ документов, вплоть до конкретных перечисленных ай-дишников. Подробно опишите Вашу задачу, желательно, с иллюстрацией в виде дерева документов.
        http://www.avizion.ru/ — строим стартап!
        http://tonatos.ru/ — Заходите в гости...
        • 24804
        • 34 Posts
        Есть раздел, есть дочерние документы в нем.
        Насколько я разобралась при указании startID Ditto будет выводить в месте вызова начало текста или аннотацию именно дочерних документов. В моем случае дочерние документы отсутствуют, мне нужно просто вывести на главную страницу аннотацию или начало текста определенного документа.
        Дерево документов в понимании не поможет, но пожалуйста пример:

        «Главная» (на главной странице необходимо вывести часть текста «О компании», который берется из документа «О компании»)
        «О компании» (содержит в себе текст, часть которого необходимо вывести на главной.)

        Судя по вашей реплике, я поняла, что это возможно с помощью Ditto — расскажите, пожалуйста, как именно.
          • 30354
          • 227 Posts
          Ну вот smiley Совсем другой разговор.
          Как я понял Вашу проблему, так проще вообще свой сниппет написать.
          Готовых у меня таких нет, так что может быть на форуме что-нибудь выложит.

          Второй вариант - руками написать нужный текст на главной.

          Третий - все же Дитто. Тяжеловесно только больно для такой задачи smiley
          Вот тут лежит ссылка на архив с документацией.
          http://modxcms.com/forums/index.php/topic,13533.0.html

          Вот. Там есть параметр "&documents", который позволяет подставлять специфические документы в вывод.
          Просто в документ указываете ID вашей страницы "О компании" и все.
          Вызов должен выглядеть примерно так:
          [!Ditto? &documents=`ID страницы "О компании"`!]

          Естественно, подставите в параметры нужные tpl, пораметры trunk и т.д.
            http://www.avizion.ru/ — строим стартап!
            http://tonatos.ru/ — Заходите в гости...
            • 24804
            • 34 Posts
            Спасибо! &documents то что надо.

            Для написания сниппета я пока не созрела — я еще скорее дизайнер, чем разработчик. А прописывать руками — лишние сложности для будущего менеджера сайта.
              • 22301
              • 1,084 Posts
              Quote from: rellocat at Jul 14, 2007, 08:24 AM

              Судя по вашей реплике, я поняла, что это возможно с помощью Ditto — расскажите, пожалуйста, как именно.

              rellocat, скорее всего, Дитто для того, что тебе требуется, -- это перебор!

              Ммм, на своём примере могу пояснить...

              http://s-g-k.ru/fujikura.html

              на странице воткнут сниппет [!Catalog?&pid=1&chunk=`catalog`!]

              pid=1 -- это id’шник каталога.

              Вот сам сниппет:

              $children = $modx->getActiveChildren($pid, 'menuindex', 'ASC', 'id, pagetitle, description, alias, longtitle, menutitle, introtext');
              $c = count($children);
              
              foreach ($children as $ch) {
              
                 $id = $ch['id'];
                 $pagetitle = $ch['pagetitle'];
                 $longtitle = $ch['longtitle'];
                 $introtext = $ch['introtext'];
                 $description = $ch['description'];
                 $alias = $ch['alias'];
                 $a = $modx->getChunk($chunk);
                 $modx->setPlaceholder('id', $id);
                 $modx->setPlaceholder('title', $pagetitle);
                 $modx->setPlaceholder('longtitle', $longtitle);
                 $modx->setPlaceholder('description', $description);
                 $modx->setPlaceholder('introtext', $introtext);
                 $modx->setPlaceholder('alias', $alias);
                 $fields = array ('[+id+]', '[+alias+]', '[+title+]', '[+longtitle+]', '[+introtext+]', '[+description+]');
                 $values = array ($id, $alias, $pagetitle, $longtitle, $introtext, $description);
                 $output .= str_replace ($fields, $values, $a); 
              }
              return $output;
              


              А вот и чанк:

              <dl class=cat>
              <dd><h2><a href="[~[+id+]~]" title="[+description+]">[+longtitle+]</a></h2>
              <dt>
              <a href="[~[+id+]~]" title="[+title+]"><img src="/fujikura_pic/[+alias+]_i.gif" alt="[+longtitle+]" border=0 align=left></a>
              <div class=cat_desc>
              [+introtext+]
              </div>
              </dt>
              <strong class=more><a href="[~[+id+]~]" title="[+title+]">[+title+]</a> →</strong>
              </dl><br clear=all>
              


              Понятно, что сниппет надо обозвать Catalog, а чанк -- catalog.

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

              В спешке, но надеюсь, что хоть чем -то помог...

              Сообшники, что php курят, поправляйте, если у меня в сниппете ошибка.

              Да, для аннотаций надо использовать соответствующие поля в админке: introtext и description... не знаю, как по-русски, у меня не русифицировано.

              UPD, сниппет подправил, там был косяк
                [img]http://jurist-info.ru/pic/rrr.jpg[/img]

                Безжалостный пияр!
                Artima -- неуч!
                Осторожно: преступная локализация -- modx-cms.ru
                Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

                Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
                • 22301
                • 1,084 Posts
                ...продолжение.

                сниппет можешь даже не трогать, надо только по себя выправить чанк.
                  [img]http://jurist-info.ru/pic/rrr.jpg[/img]

                  Безжалостный пияр!
                  Artima -- неуч!
                  Осторожно: преступная локализация -- modx-cms.ru
                  Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

                  Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
                  • 24804
                  • 34 Posts
                  openagate, спасибо. но, насколько я разобралась в Вашем сниппете, он выводит как раз аннотации дочерних документов, что мне не нужно.
                    • 22301
                    • 1,084 Posts
                    только сейчас понял, то он немного не подходит, но по причине того, что он подразумевает упорядоченный вывод нескольких дочерних элементов.

                    Насчёт дочерних/не_дочерних элементов понял, необходим вообще простой сниппет.

                    Если я правильно понял, то необходим сниппет, который по определённому id’ишнику выводит ссылку на документ и аннотацию!

                    Господа php-кодеры, призываю, упростите мой сниппет в разы, чтобы реализовать сие, у меня времени вообще нет, убегаю.

                    rellocat, помощь придёт %) делов-то реально на парсек для знающих:)






                      [img]http://jurist-info.ru/pic/rrr.jpg[/img]

                      Безжалостный пияр!
                      Artima -- неуч!
                      Осторожно: преступная локализация -- modx-cms.ru
                      Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

                      Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun
                      • 22301
                      • 1,084 Posts
                      :))))))))))))))))))))))))))

                      Надо потестить, но по-моему, достаточно в моём сниппете заменить

                      modx->getActiveChildren

                      на

                      modx->getDocument или что-то в этом роде... убрать счётчик детей...
                        [img]http://jurist-info.ru/pic/rrr.jpg[/img]

                        Безжалостный пияр!
                        Artima -- неуч!
                        Осторожно: преступная локализация -- modx-cms.ru
                        Баштанник Андрей -- мегапрограммер из Белоруссии и поедатель говна, очень критично настроенный молодой человек!

                        Дисклеймер для общительных: даю сам себе право транслировать в открытый эфир содержание лички, just for fun