Как я могу вызвать файл master.php из папки, не теряя всех путей?

Я делаю сайт только на php. Чтобы упростить обновление верхнего и нижнего колонтитулов, я создал файл master.php с таким содержимым:

<!doctype html>
<html lang = "en">
  <head>
    <meta charset = "utf-8">
    <meta name = "viewport" content = "width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1, user-scalable=no">
    <meta name = "description" content = "">
    <meta name = "author" content = "">
    <link rel = "icon" href = "../images/a-master-favicon.ico" alt = "a-master-favicon" >

    <title>Testing site</title>

    <link href = "assets/css/sticky-footer-navbar.css" rel = "stylesheet"/>
    <link rel = "stylesheet" href = "assets/css/head_footer.css" />
  </head>

  <body>

    <?php $signed_request = $_POST['signed_request']; ?>
    <?php if (empty($signed_request)): ?>
        <?php include('header.php'); ?>
    <?php else: ?>
        <div id = "eatSpace" style = "margin-bottom: -175px;"></div>
    <?php endif; ?>

    <?php include($content); ?>

    <?php if (empty($signed_request)): ?>
        <?php include('footer.php'); ?>
    <?php endif; ?>


    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src = "js/jquery.easing.1.3.js"></script>
    <script src = "js/jquery.animate-enhanced.min.js"></script>
  </body>
</html>

Во-первых, часть $signed_request предназначена для того, чтобы я мог показывать определенный контент, когда он загружается через Facebook, это не проблема.

Проблема в том, что моя структура папок выглядит следующим образом:

root
|
|--assets
|    |
|    |--css
|    |--js
|
|--faqs
|    |
|    |--faqs-content.php
|    |--index.php
|
|
|--footer.php
|--header.php
|--index-content.php
|--index.php
|--master.php

Итак, когда я звоню, скажем, index.php, это выглядит так:

<?php

$content = 'index-content.php';
    include('master.php');

Это, в свою очередь, вызывает master.php и загружает весь сайт.

Однако, если я попытаюсь сделать то же самое в другом каталоге (например, faqs/) и вызову там index.php, то код будет выглядеть немного иначе:

<?php

$content = 'faqs-content.php';
    include('../master.php');

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

Это первый раз, когда я делаю что-то подобное, поэтому я не уверен, что то, что я сделал, даже лучший способ сделать это.

Вы можете использовать абсолютные пути в своих ссылках, например. <link href = "/assets/css/sticky-footer-navbar.css" rel = "stylesheet"/>

Nick 28.10.2018 01:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
98
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если ваш сайт простой, вы можете обойтись сочетанием относительных и абсолютных ссылок. Ваши ресурсы должны использовать абсолютную ссылку, например <link href = "/assets/css/sticky-footer-navbar.css" rel = "stylesheet"/>, тогда как ссылки PHP могут быть относительными, как вы описали.

Однако он плохо масштабируется для более сложных приложений и может быстро стать трудным в управлении. Современные PHP-фреймворки используют Автозагрузка PHP.

Если вам не нравится изобретать колесо заново, изучите хороший фреймворк, например Laravel или Yii. Они позаботятся об автозагрузке и многом другом.

Я обязательно посмотрю на Laravel и Yii, спасибо!

user6673915 28.10.2018 02:54

Другие вопросы по теме