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

Как делать include в файлах темы

  • 16 августа 2011 г.
  • Например, у меня есть пять страниц, которые имеют одинаковую шапку (в которой создается меню с помощью <insert name="show_block" module="menu"> ).

    Как мне в файлы вставить шапку отдельным инклудом, чтобы при изменении чего-либо в шапке, не надо было править 5 файлов.

    Пробовал делать свою функцию наподобии <insert ....> в functions.php, но тогда тэг <insert.....> не работает.
    • 16 августа 2011 г.
    • Цитата
      Пробовал делать свою функцию наподобии <insert ....> в functions.php, но тогда тэг <insert.....> не работает.

      Как пробовали?
      • 16 августа 2011 г. , редакция: 16 августа 2011 г.
      • Код
        /**
        * Меню и т.д сайта
        *
        * @return boolean true
        */

        public function show_site_header_block()

        {
        include(ABSOLUTE_PATH."themes/header.inc.php");
        return TRUE;

        }


        если так делать, то тэги <insert ....> в этом файле header.inc.php игнорируются
        • 16 августа 2011 г.
        • По моему проще вставить этот header.inc.php блоком, предварительно выключив виз. редактор. : ) И все инсерты в нем "схватятся"
          • 16 августа 2011 г.
          • я попробую, если не будет решения с инклудами. спасибо
    • 16 августа 2011 г.
    • А "блок" вставить не пробовали? Или я недопонимаю задачу?

      Создали страницу-блок, вставили (инсертом) в нее меню, потом заинсертили ее (эту страницу-блок) в шаблоны.

      После этого достаточно исправить только страницу-блок, и изменения отразятся на всех страницах сайта, внутри которых вставлен этот блок.
      • 16 августа 2011 г.
      • В дополнение. Я во всех работах делаю всю текстовую информацию именно блоками, которые расставляю по своим местам в шаблонах. После этого человеку, который будет заниматься наполнением и ведением сайта, не нужно "звать меня" или кого-то еще чтобы например "поправить телефон в шапке, потому что изменился", или "изменить адрес в подвале", и т.д. Для этого ему достаточно будет изменить прямо в админке соответствующие блоки (контакты в шапке, контакты в меню, и т.д.)
  • 16 августа 2011 г.
  • да, это понятно. Дело касается тэгов самого диафана -- в этом блоке header.inc.php есть, например, <insert name="show_block" module="menu" и куча параметров.

    Когда я делаю в странице вызов своей функции <insert name="show_site_header_block">, то обычный html выводится правильно, а тэги <insert name="show_block" module="menu"... выводятся как <insert name="show_block" module="menu"..., а не в виде меню. Они не проходят обработку диафаном.
    • 16 августа 2011 г.
    • Так никто не запрещает всю эту кучу параметров прописать и в блоке : )
  • 16 августа 2011 г.
  • да, я проверил, все работает! огромное спасибо! :)

    Это вообще идеологически верно хранить блоки кода в базе диафана, а не в файлах и каталоге темы? Мне кажется так можно потерять логику темы, файлы которой должны быть в одном каталоге.

    Что думают разработчики на эту тему? :)
    • 16 августа 2011 г.
    • Ну а почему неверно? : ) Если сделана такая, удобная кстати, возможность, почему ей не пользоваться? : ) Я же, как писал уже выше, вообще разбиваю весь макет на блочки, и повторяющиеся все делаю разными, редактируемыми в админке, блоками. Потом очень удобно править обычной "секретарше".
      • 09 октября 2011 г.
      • Ну номера телефонов, действительно, удобно редактировать из админки. Но код зачем?
        У меня около 6 шаблонов на сайте, сайт постоянно допиливается верстальщиком, ему очень неудобно все правки добавлять во все шаблоны.
        Куда удобнее было бы инклудить файлы футера, хедера, сайтбара, т.к. они везде одинаковы.
  • 09 октября 2011 г.
  • Решения с инклудами нет?
    • 10 октября 2011 г.
    • пишите в файле fuctions.php фугкции с выводом нужного ва html(например шапки), назваете show_header, а потом в шаблоне <insert name="show_header">
      • 10 октября 2011 г.
      • Это понятно, но нужно, чтобы обрабатывались конструкции вида <insert name="">
        Если создать функцию в fuctions.php, с выводом html+такие конструкции (вывод тайтла, к примеру), то они обрабатываются, как обычные html.
        • 13 октября 2011 г. , редакция: 13 октября 2011 г.
        • Вызывайте функцию напрямую.

          Код
          public function show_my_header()
          {
          echo '
          <head>
          <title>';

          $this->show_title();

          echo </title>
          </head>
          }
  • 04 сентября 2019 г.
  • Здравствуйте!

    С 2011 года не поменялось ничего?

    Тоже хотел head, header, footer и т.д. вынести в отдельные файлы, чтобы не править все файлы темы (site.php, site_start.php, site_catalog.php). Но писать код в блоках меня смущает..
    • 04 сентября 2019 г.
    • Однотипные блоки можно вынести в отдельные файлы, поместить их в папку themes/blocks
      В файлах site.php, site_start.php, site_catalog.php вставьте
      <insert name="show_include" file="header">
  • 04 сентября 2019 г.
  • А, ну разобрался.

    1. Создаём в папке /custom/my/themes/blocks файл head.php, куда выносим содержимое:

    Код

    <?php
    ?>
    <!-- шаблонный тег show_head выводит часть HTML-шапки сайта. Описан в файле themes/functions/show_head.php. -->
    <insert name="show_head">
    <!-- мета-данные для браузера - можно смотреть с мобильных -->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- загружаем иконку сайта -->
    <link rel="shortcut icon" href="<insert name="path">favicon.ico" type="image/x-icon">
    <!-- шаблонный тег show_css подключает CSS-файлы. Описан в файле themes/functions/show_css.php. -->
    <insert name="show_css" files="default.css, style.css">


    2. В файле site_start (и т.д.) вызываем этот файл так:

    Код

    <head>

    <insert name="show_include" file="head"></insert>

    </head>


    3. При этом в админке ничего нет, всё на уровне кода.

    Верно?
    • 04 сентября 2019 г.
    • Можете на уровне кода вынести шапку в админку в блоки на сайте

Новости

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

Форум