Если создам страницу text-o-vajnom.php с кодом: PHP: require verx.php // шапка страницы require reklama.php //рекламный код банера require text.php // основное содержание (текстовая статья) require chetchik.php // код щётчика-статистики require niz.php // футер (низ страницы) Если reklama.php буду вставлять не в код этой страницы, а в файл шапки verx.php, то так и вставлять require verx.php? Нужно ли где то в этих вариантах применять require_once ?
ну ты ответь сам себе на вопрос, чем require отличается от require_once. Если нужно вставить рекламу вверх, вставь рекламу вверх. require буквально включает файл, как если бы ты копипасту сделал руками.
Читал в книге, что require_once, чтобы не вставился два раза require. Если реклама из файла reklama.php вставляется в два места страницы, то надо ли require_once?
хз, есть мнение, что для подключения на страницу всяких там шапок и подвалов можно использовать require и include (разница в том, что в случае невозможности подключения файла require сразу завершит работу сценария, include продолжит с выводом соответствующей ошибки.) в php при работе скриптов, создается внутренняя таблица, в которой содержатся имена всех включенных файлов и require_once существует для того, чтобы избежать ошибок, и при подключении одинаковых имен, просто игнорирует подключение. Вопрос к знатокам: в целом я так понял, что при подключении разных скриптов, в которых, и в том и в том встречается одна функция, ну с одним названием, инструкция с суффиксом _once отработает вполне корректно, не выдаст ошибки переопределения, так???
@dobrmir у вас в принципе не совсем верное представление о том, как нужно собирать страницы. Зачем тратить время на выполнение текста статьи? Сделайте хотя бы так: readfile('database/text-o-vajnom.txt') вместо require text.php. В общем же достаточно одного шаблона на все статьи. Даже если используются множественные точки входа, как у вас, подготовьте/определите все данные для шаблона и в конце подключите файл шаблона (внутри которого можно подключить шапку, подвал и т.п., если они совпадают с таковыми для шаблонов др. типов).
А если тексты статей будут в папке, то можно ли закрыть доступ на чтение из браузера, если читателю известен путь и имя файла? то есть чтобы читать можно было только текст, выводимый на запланированных страницах?
для этого существует бд. единая точка входа, роутер и ядро сайта --- Добавлено --- а так вы просто учите - как замутить свой велосипед, спотыкаясь и падая то на одном месте то на другом, а по пути еще спомнили, что забыли деньги дома для проезда --- Добавлено --- шапка футер херутель, все должно содержаться в одном шаблоне template.php и туда уже подставляются значения, текст --- Добавлено --- рекламный блок, календарь, мини херчат - все это называется виджетами, у них отдельный шаблон, которые так же подставляются в темплейт
@dobrmir, да можно. Обычно все лишнее, включая данные и шаблоны, размещают за пределами корня сайта. Можно и в пределах, используя для закрытия др. методы, но так надежнее. Если будете размещать в пределах, оставьте у файлов с данными расширение php (не txt) но не выполняйте их, как выше написал.
Ща я вам шаблоны рвать начну. Готовьтесь. При использовании flexbox-layout порядок блоков на странице в пределах одного контейнера не важен. Его можно менять динамически.
Заменил все require на readfile (2 штуки, выше и ниже текста статей). Точку входа и ядро сайта на этот раз планирую не делать, так как там статичный контент и времени настраивать и изучать дополнительно пока-что нету. К статьям думаю приделать сверху и снизу Код (Text): <?php readfile ($_SERVER["DOCUMENT_ROOT"]."/verx.php"); ?> и Код (Text): <?php readfile ($_SERVER["DOCUMENT_ROOT"]."/niz.php"); ?> Вот как начинаются страницы статей: Код (Text): <?php readfile ($_SERVER["DOCUMENT_ROOT"]."/verx.php"); ?> <H1>Заголовок одной из страниц в папке)</H1> В файле verx.php кроме всего прочего есть тег title, что туда вставить, чтобы считывалось из <H1>Заголовок одной из страниц в папке)</H1> (то есть на разных страницах из папок чтобы выводилось в title, что на этих страницах в заголовке H1).
Ну как обычно... И стоило спрашивать тут, чтобы сделать все наоборот? Шапка обычно выполняется, потому что там присутствует title и т.п., а контент нет. h1 обычно находится в шаблоне и видоизменяется динамически точно так же, как и title. Контент вы читаете из отдельного файла, а не размещаете его непосредственно в каждой точке входа, чтобы понапрасну не пытаться исполнять контент. Более-менее правильный порядок я вам описал в пред. посте – сначала определяете данные, потом подключаете шаблон: Код (Text): $title='My Page'; $content_filename='filename_or_slug'; // или сразу читаете контент в память: // $content=file_get_contents('filename'); require('template_filename'); На это не нужно много времени. Но коли и его нет, делайте тяп-ляп. Окружающим в принципе пофиг.