За последние 24 часа нас посетили 62347 программистов и 1740 роботов. Сейчас ищут 946 программистов ...

Как грамотно разбивать страницу на блоки, если на сайте два и более шаблона страниц?

Тема в разделе "PHP для новичков", создана пользователем web_chainik, 18 май 2018.

  1. web_chainik

    web_chainik Активный пользователь

    С нами с:
    1 ноя 2016
    Сообщения:
    36
    Симпатии:
    1
    Приветствую! В общем пытаюсь написать свой велосипед... Хотелось бы узнать, как можно реализовать работу с HTML шаблонами?
    Я знаю два варианта:первый - это разбить страницу на блоки (например: хедер, контент, сайтбар, футер) и сохранить в формате php. Второй тоже самое, но только файлы в формате tpl.
    Теперь что мне нужно вообще?... Велосипед по принципу MVC, который будет легко заточить под любое приложение (Корпоративный сайт, лендинг, интернет магазин), с удобной админкой. Для этих целей выбрал модульную структуру (аналог плагинов wordpress). Установшик (может да, может нет) как в Wordpress (то есть установка в несколько кликов). У велосипеда есть фреймворк для некоторых часто используемых задач, работа с формами.
    Про HTML. Страницы в трёх шаблонах, одна с сайтбаром, вторая без него, третья в два сайтбара. (сайт в одну-три колонки). Просто хотелось чтобы можно было работать с разными типами HTLM шаблонов. И вот тут-то я понял, что что-то напортачил... В общем, если бы дело касалось одного шаблона, например в две колонки, тогда можно было бы разбить его на хедер, контент, сайтбар, футер, всё это перевести в php или tpl. А три шаблона как использовать? Приходит на ум вариант: создать три папки, в первой - одностраничник, во второй- 2 колонки, в третий -3. Но очень сильно мне сдаётся, что где-то я в корне не прав???? Помогите советом.
     
    #1 web_chainik, 18 май 2018
    Последнее редактирование: 18 май 2018
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    во первых, одного шаблона достаточно, чтобы в нём настраиваемо было количество колонок
    во вторых, блоки, выглядящие, как колонки, в html коде всё равно идут с верху вниз :)
    в третьих, по папкам делят не по такому принципу
    изучи какой-нить фреймворк и увидишь, как всё должно выглядеть.
    Например, скачай движок OpenCart (на всякий случай, это движок интернет магазина).
    У него полноценная (и в то же время простая и понятная) MVC архитектура.
    Правда, документации кот наплакал, но зато он сам полон примеров готовых реализаций.
    В данный момент актуальная стабильная версия - 2.3
    тройка пока сырая.
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    @web_chainik, можете хоть с каждой страницей отдельный шаблон связывать. В чем проблема?
     
  4. paschaopencart

    paschaopencart Активный пользователь

    С нами с:
    18 май 2018
    Сообщения:
    118
    Симпатии:
    16
    Адрес:
    Урал
    для каждого "блока" используйте условие if , то есть если блок содержит какую то информацию... то блок отображается, если нет, то он скрыт
    как уже сказал TeslaFeo за основу можно взять и Опенкарт, дабы подсмотреть, к примеру конструкция такого вида

    Код (Text):
    1. <?php if ($modules) { ?>
    2. <aside id="column-left" class="col-sm-3 hidden-xs">
    3.   <?php foreach ($modules as $module) { ?>
    4.   <?php echo $module; ?>
    5.   <?php } ?>
    6. </aside>
    7. <?php } ?>
    (это код самого сайдбара)

    Говорит о том, что если в левом сайдбаре есть что то... то он отображается

    вывод в tpl сайдбаров таким образом
    Код (Text):
    1. <?php echo $column_left; ?>
    Код (Text):
    1. <?php echo $column_right; ?>
    ну и естественно прописывается условие для собственно контента

    Код (Text):
    1. <?php if ($column_left && $column_right) { ?>
    2.     <?php $class = 'col-sm-6'; ?>
    3.     <?php } elseif ($column_left || $column_right) { ?>
    4.     <?php $class = 'col-sm-9'; ?>
    5.     <?php } else { ?>
    6.     <?php $class = 'col-sm-12'; ?>
    7.     <?php } ?>
    8. <div id="content" class="<?php echo $class; ?>">...
    тут указано 2 условия, то есть если есть правый или левый сайтбар (или оба сразу)(а они, как я уже сказал отобразятся только при условии наличия информации в них), то ширина контента меняется в сторону увеличения или уменьшения.
    Вот примерно так. (Естественно тут используется привязка к Bootstrap, если Вы не станете использовать этот фреймворк... то просто задайте свои классы, которым потом пропишите определенные стили (в случае фиксированной или резиновой верстки)

    Таким образом Вы сможете добиться различной "шаблонизации" определенных страниц, не плодя их разновидности
     
    #4 paschaopencart, 19 май 2018
    Последнее редактирование: 19 май 2018
    TeslaFeo нравится это.