Вход • Регистрация

Как в динамическом поле вывести шаблонный тег

  • 20 января 2015 г. , редакция: 20 января 2015 г.
  • Есть 9 статических страниц. На каждой из этих страниц нужно вывести меню, и при том, в контекстной части. Для каждой страницы строго свое меню.

    Есть простой способ - наделать для каждой страницы шаблон, и туда впаять:
    <insert name="show_block" module="menu" id="такой_то">
    Но не хотелось бы плодить столько лишних шаблонов.

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

    Решил попробовать с помощью динамического блока.
    1. Если применить тип "строка" - код напрочь стирается
    2. Если применить тип "текст", тоже не работает.
    3. Если поле "визуальный редактор", то работает. Но владелец сайта снова может затереть.

    Как заставить поле типа "строка" работать с шаблонным тегом???
    • 20 января 2015 г.
    • Цитата
      3. Если поле "визуальный редактор", то работает. Но владелец сайта снова может затереть.

      Может просто не давать права на редактирование (а может даже и на просмотр) динамических блоков?
      • 20 января 2015 г.
      • Спасибо, хорошая идея. На каком-нить из проектов применю. С этим владельцем не получится.
        • 20 января 2015 г.
        • Из 2 зол:
          Цитата
          Как заставить поле типа "строка" работать с шаблонным тегом???

          Цитата
          Но не хотелось бы плодить столько лишних шаблонов.

          нужно выбрать второе.
          Это займет в разы меньше времени, а результат будет достигнут.
          • 20 января 2015 г. , редакция: 20 января 2015 г.
          • не знаю, видимо действительно придется создать 9 дополнительных шаблонов, т.к. визуальный редактор динамического блока упорно делает вот так:
            Код
            <p><insert name="show_block" module="menu" id="5" tag_start_1="[div class=`menu`]" tag_end_1="[/div]" tag_start_2="[div class=`submenu`]" tag_end_2="[/div]"></insert></p>

            Хотя, если тег абзаца нейтрализовать через css, то в общем-то работает. Закрывающий insert вроде не мешает.
            • 20 января 2015 г.
            • Если для пользователя отключить "Использовать визуальный редактор", то абзац не будет появляться.
              Потом можно включить, но уже не править этот блок.
              • 21 января 2015 г.
              • Владелец сайта будет изменять описание страниц (и не раз). Естественно он будет в режиме визуального редактирования, т.е. и инклюд в динамический блок отпарсится..

                Все же видимо сделаю отдельные шаблоны для каждой страницы.. Так мне проще и спокойнее.
    • 21 января 2015 г.
    • Можно прямо в основном шаблоне вставить php код, где через switch перебрать id искомых страниц с выводом нужных <insert...
      • 21 января 2015 г. , редакция: 21 января 2015 г.
      • Благодарю за подсказку. Еще бы уметь перебирать id... В общем, сделал для каждой страницы свой шаблон, типа site_menu_pitanie_kormlenie.php

        Все работает отлично. А в menu.view.show_menu.php прописал:
        Код
        //вывод изображения
        if (! empty($row["img"]))
        {
        echo '<div class="menu-photo-box" style="background-image:url('.$row["img"]["src"].')" ></div>';
        }

        Работает
        • 24 января 2015 г.
        • Код
          foreach ([массив] {ключ} =>$row) {
          $id = $row["id"]; // :) например
          ..... { много строк кода }
          }
          • 25 января 2015 г.
          • Спасибо! А что вписать вместо "массив", "ключ" и "много строчек кода"?
            Иначе мне ваша подсказка бесполезна
            • 26 января 2015 г.
            • Ну, дядя Валера. Это от конкретного места применения зависит.
              Допустим если массив передаётся через элемент массива $result["news"] то

              Код
              $str_news_id = '';
              foreach ($result["news"] as $row) {
              if (!empty($str_news_id)) $str_news_id .= ', ';
              $str_news_id .= $row["id"];
              }
              (это может быть не так ! Сгенерировано для этого сообщения)
              На выходе получим строку id'шников новостей. Например "13, 24, 22, 46, 54". Можно использовать например в SQL запросе.
              PS: {ключ} иногда необходим например для удаления элемента из массива, в данном случае упущен это индексы [0, 1, 2, 3] ... если массив специальным образом не создавался.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум