We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25441
    • 60 Posts
    Привет всем,

    подскажите, пожалуйста, уже передумал различные идеи, не могу найти решение.
    Есть список продукции.

    Категория1(контейнер документов)
    -товар 1(документ
    -товар 2
    ...
    -товар N
    -архив(контейнер)
    --товар1(документ, дочерний по отношению к архиву)
    --товар2
    ...
    --товарN

    Я делаю страничку для "Категории1", которая выводит весь товар, за исключением архива (вывожу с помощью ditto).
    Но мне надо вывести и архивные, но вывести надо линком сверху страницы.
    Т.е. когда человек в Категории1, он может перейти на архив, ссылка на архив. Находясь в архиве, может перейти в "Категорию1".
    Всё бы ничего, сделал бы статический линк, но Категорий - несколько и я хочу сделать чанк с динамическим выводом ссылки.

    Я так думаю надо выводить с помощью Wayfinder, но как вывести только ссылки на Категорию и архив? Или лучше как-то реструкторизировать?

    Подскажите, заранее благодарен.
      • 31136
      • 72 Posts
      Если указанная иерархия одинакова для всех групп товаров, можно отталкиваться от такой логики (все очень примерно):

      1. Ищем дочерний контейнер для текущего документа
      2. Если нашли, значит мы в Категории, возвращаем ссылку на найденный дочерний контейнер (архив)
      3. Если дочернего контейнера нет, смотрим тип шаблона родительского документа, если он и есть шаблон Категорий, значит мы в архиве и возвращаем ссылку на родительский контейнер Категорий.

      Функции, которые Вам понадобятся в сниппете (даю упрощенное описание, подробности смотрите в API): $modx->documentObject[] (массив с параметрами текущего документа, например родительский id можете получить через $modx->documentObject[’parent’]), $modx->makeUrl(id) (здесь id - id документа на который необходимо получить ссылку). $modx->getDocument(id) - возвращает массив значений для документа с указанным значением id.

      Для того, чтобы помочь примерным кодом сниппета, мне необходимо хотя бы знать:
      1. В категории возможен единственный контейнер (архив), либо могу быть другие контейнеры (если могут, как определяете архив, по названию документа?)
      2. По Вашей логике в архиве, кроме товаров, возможно существование других контейнеров?
        • 1788
        • 1,103 Posts
        Добавить TV и в нем указывать по типу (да||нет). И можно сортировать по этому параметру.
          • 25441
          • 60 Posts
          Quote from: Yurik at Jul 08, 2009, 01:16 AM

          Если указанная иерархия одинакова для всех групп товаров, можно отталкиваться от такой логики (все очень примерно):

          1. Ищем дочерний контейнер для текущего документа
          2. Если нашли, значит мы в Категории, возвращаем ссылку на найденный дочерний контейнер (архив)
          3. Если дочернего контейнера нет, смотрим тип шаблона родительского документа, если он и есть шаблон Категорий, значит мы в архиве и возвращаем ссылку на родительский контейнер Категорий.

          Функции, которые Вам понадобятся в сниппете (даю упрощенное описание, подробности смотрите в API): $modx->documentObject[] (массив с параметрами текущего документа, например родительский id можете получить через $modx->documentObject[’parent’]), $modx->makeUrl(id) (здесь id - id документа на который необходимо получить ссылку). $modx->getDocument(id) - возвращает массив значений для документа с указанным значением id.

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

          Хм... Сильно, возможно надо идти этим путём.

          Я даже подумывал, может быть сделать структуру так:
          Категория1
          -Актуальные
          --товар
          ...
          -Архив
          --товар

          Как вы думаете, может так будет попроще? Тогда можно выводить wayfinder’ом. Но если, будем находится в "Категория", будет выводить не "Актуальные" и "Архив", а всё что выше.


            • 31136
            • 72 Posts
            Quote from: rolph at Jul 08, 2009, 03:30 AM

            Хм... Сильно, возможно надо идти этим путём.

            Я даже подумывал, может быть сделать структуру так:
            Категория1
            -Актуальные
            --товар
            ...
            -Архив
            --товар

            Как вы думаете, может так будет попроще? Тогда можно выводить wayfinder’ом. Но если, будем находится в "Категория", будет выводить не "Актуальные" и "Архив", а всё что выше.

            Я бы так делать не стал, если бы изначальная структура мне нравилась по каким-либо причинам больше.
            Мне трудно Вам дать хороший совет, тех сведений которые Вы указали недостаточно. Ответьте для начала на вопросы, которые я задал Вам постом ранее + укажите, Архив и Категория - это один и тот же шаблон, либо два разных?
              • 25441
              • 60 Posts
              Quote from: Yurik at Jul 08, 2009, 06:30 AM

              Quote from: rolph at Jul 08, 2009, 03:30 AM

              Хм... Сильно, возможно надо идти этим путём.

              Я даже подумывал, может быть сделать структуру так:
              Категория1
              -Актуальные
              --товар
              ...
              -Архив
              --товар

              Как вы думаете, может так будет попроще? Тогда можно выводить wayfinder’ом. Но если, будем находится в "Категория", будет выводить не "Актуальные" и "Архив", а всё что выше.

              Я бы так делать не стал, если бы изначальная структура мне нравилась по каким-либо причинам больше.
              Мне трудно Вам дать хороший совет, тех сведений которые Вы указали недостаточно. Ответьте для начала на вопросы, которые я задал Вам постом ранее + укажите, Архив и Категория - это один и тот же шаблон, либо два разных?

              _ttp://www.devilbiss.ru - это собственно сайт.
              (архив сейчас сделан статическими ссылками-"Актуальные" и "Снятые с производства[собс-но архив])

              1. В каждой категории - один архив для данной категории.
              2. Нет, в архиве только страничка товара.
                • 31136
                • 72 Posts
                Если Архив будет стоять в Категории всегда самым первым (до товаров), то можете использовать метод, который я описывал для Вас в ветке про ChildID, используя его совместно с плагином PHx.
                [+phx:if=`[*pagetitle*]`:is=`Архив`:then=`<a href="[~[*parent*]~]">Актуальные</a> Неактуальные`:else=`Актуальные <a href="[~[!child!]~]">Неактуальные</a>`+]
                

                Мне данный подход кажется далеким от оптимального, но работать должен.
                Здесь, в Архиве мы или в Категории определяется по Тайтлу текущего документа (если тайтл "Архив", значит мы в Архиве).
                  • 25441
                  • 60 Posts
                  Quote from: Yurik at Jul 08, 2009, 07:30 AM

                  Если Архив будет стоять в Категории всегда самым первым (до товаров), то можете использовать метод, который я описывал для Вас в ветке про ChildID, используя его совместно с плагином PHx.
                  [+phx:if=`[*pagetitle*]`:is=`Архив`:then=`<a href="[~[*parent*]~]">Актуальные</a> Неактуальные`:else=`Актуальные <a href="[~[!child!]~]">Неактуальные</a>`+]
                  

                  Мне данный подход кажется далеким от оптимального, но работать должен.
                  Здесь, в Архиве мы или в Категории определяется по Тайтлу текущего документа (если тайтл "Архив", значит мы в Архиве).
                  Т.е. создаю плагин, а где его я вызываю?
                    • 12736
                    • 259 Posts
                    @rolph а почему вы не хотите использовать TV, как советовал antey проще ведь гораздо?
                      • 25441
                      • 60 Posts
                      Quote from: ikarushka at Jul 10, 2009, 01:15 AM

                      @rolph а почему вы не хотите использовать TV, как советовал antey проще ведь гораздо?
                      Если чесно, не получилось wink

                      Сделал TV, сделал чекбокс, применил к шаблонам, сделал вызов ditto...