We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 981
    • 30 Posts
    Добрый день!

    Как из сниппета достучаться до description и title ?

    Вот такая штука не получается:
    $modx->documentObject['description'] = $_REQUEST;
    <br /><br />Там суть в том что ориентируясь на GET запрос, сниппет выводит контент.<br />И с этим контентом нужно менять описание страницы, тайтл, ключевые слова.
      • 785
      • 2,113 Posts
      Quote from: AlexeyB at Apr 06, 2011, 04:10 AM

      Как из сниппета достучаться до description и title ?
      Не совсем понятно, что надо, но если выводить на страницах сайта разные тексты в зависимости от запросов, но в шаблоне просто не надо указывать description, а вызывать сниппет, который будет выводить или description или то, что надо. А менять description, чтобы потом его использовать в шаблоне намного сложнее.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 981
        • 30 Posts
        Да суть-то простая... на странице запускается сниппет,
        анализирует GET запрос и на его основе полностью формирует страницу, либо отвечает 404,
        если в БД нет данных для такого запроса.

        Ладно, я понял так:
        - Делаю отдельный шаблон
        - в его самом начале запускается сниппет
        - в шаблоне указано все тело (включая HEAD)
        - в шаблоне проставлены плейсхолдеры: тайтл, дескрипшн, кейвордс, контент... и все это генерится в сниппете.
          • 785
          • 2,113 Posts
          Да, в шаблоне используются плейсходеры (типа <title>[+myTitle+]</title>), а в сниппете все эти плейсходеры задаются (типа $modx->setPlaceholder(’myTitle’, ’Заголовок’) ). Сниппет можно вызывать в любом месте шаблона.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 981
            • 30 Posts
            Просто решение не очень красивое тем,
            что один и тот же шаблон HTML будет определяться два раза,
            просто с разными плейсхолдерами.

            Идеальное решение:
            1. Один вызов сниппета на страницу (в нем и так уже все оптимизировано под один запрос к БД, все подсправочники клеются силами СУБД), с которого заполняются все плейсхолдеры документа
            2. Использование общего шаблона

            P.S. Ностальгирую по like-Django работе с шаблонами...
              • 9085
              • 630 Posts
              Quote from: AlexeyB at Apr 07, 2011, 06:47 AM

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

                Да суть-то простая... на странице запускается сниппет,
                анализирует GET запрос и на его основе полностью формирует страницу, либо отвечает 404,
                если в БД нет данных для такого запроса.
                да тут сама по себе мотивация такого сниппета странная. зачем вообще модх тогда smiley
                  "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                  Не используйте Revo для "просто сайтов". Используйте Evo

                  Who can defeat the Russian bear?
                  • 981
                  • 30 Posts
                  Quote from: esche at Apr 07, 2011, 08:17 AM

                  А зачем два раза? Вроде, ничего такого у AKots нет?

                  1. Определение шаблона с родными [*description*] и [*title*] от MODX
                  2. Определение шаблона с [+cdsDescription+] и [+cdsTitle+] чтобы они из сниппета заполнялись

                  Quote from: Aleksey at Apr 07, 2011, 08:34 AM

                  да тут сама по себе мотивация такого сниппета странная. зачем вообще модх тогда smiley

                  MODX нужен чтобы курировать выдачу из дерева страниц, чтобы кешировать.
                  А если например у меня справочник на 10000 технических терминов (расшифровка кодов),
                  я хочу чтобы на каждый термин была отдельная страница - мне что,
                  все их в дерево документов гнать?

                  А будут страницы вида:
                  www.site.ru/dictionary.php?code=ABCDD
                  www.site.ru/dictionary.php?code=ABCD1
                  www.site.ru/dictionary.php?code=ABCD2

                  Вот так...
                  А раз будут такие страницы - их нужно скормить яше и гоше.
                  А раз так - там должны автоматом генериться кейворды, дескрипшены и тайтлы.
                  Там еще разметка для Яндекс microdata (для словарей).

                  P.S. Вообще-то я уже все написал, и работает))).
                  Тут уже просто интересен факт - есть более красивое решение задачи или нет.
                    • 785
                    • 2,113 Posts
                    Quote from: AlexeyB at Apr 07, 2011, 06:47 AM

                    1. Один вызов сниппета на страницу … все плейсхолдеры документа
                    2. Использование общего шаблона
                    А хоть что-то в моем сообщении этому противоречит? Я так и писал, что надо вызвать сниппет (естественно, один раз) и в нем заполнить все плейсхолдеры. Можно и в одном шаблоне все сделать, ничего этому не мешает, но намного проще просто в сниппете прочитать нужный шаблон и самостоятельно подставить то, что надо вместо стандартных значений (а для страницы со сниппетом задать пустой шаблон). Или написать плагин, который в нужных случаях преобразует шаблон, например, меняя все [*pagetitle*] на [+myTitle+]. Есть и другие варианты, надо просто определить точно, то, что надо, и выбрать наилучший вариант реализации.
                      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                      Статьи о MODx, регулярно новые публикации
                      • 785
                      • 2,113 Posts
                      Quote from: AlexeyB at Apr 07, 2011, 08:55 AM

                      1. Определение шаблона с родными [*description*] и [*title*] от MODX
                      2. Определение шаблона с [+cdsDescription+] и [+cdsTitle+] чтобы они из сниппета заполнялись
                      А зачем нужны "родные"? И если нужны, то их легко можно выдавать в сниппете, не привязывая жестко в шаблоне, то есть в шаблоне всегда cdsDescription, а в сниппете иногда читается description и подставляется в cdsDescription. Если это единый шаблон для всех страниц, то проверка id и выдача description в сниппете ничуть не замедлит работу с учетом общих затрат времени на работу системы.
                        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                        Статьи о MODx, регулярно новые публикации