Как управлять и структурировать страницы и ссылки в корневой папке сервера (PHP)

Я не использую никакой фреймворк, просто работаю в среде XAMPP.

Как и все, у меня также есть индексный файл index.php, и, что наиболее важно, я хочу добавить один и тот же заголовок на все мои страницы.

На моей странице index.php я добавляю свой заголовок, например

<?php include 'html/headers/header.html'; ?>

и на моей странице page.php, которая находится внутри информационной папки в корневой папке, например c:/xampp/htdocs/website/info

<?php include '../html/headers/header.html'; ?>

Все работает нормально, но возникает проблема, когда путь к изображениям внутри заголовка остается прежним, то есть путь к изображению работает хорошо для файла index.php, но не для файла page.php, причина, по которой вы уже знаете.

Я пробовал $_SERVER['DOCUMENT_ROOT']."/website/images/logo.png".. Это не сработало, и мне не нужна эта техника, так как в верхнем и нижнем колонтитулах может быть много изображений и т. д.

Я также не хочу использовать какую-либо структуру или хранилище cdn.

Можно ли это решить легко. Дайте мне знать, если я что-то пропустил. спасибо


person Zafta    schedule 29.09.2014    source источник
comment
@DanFromGermany Просто отредактируйте вопрос   -  person Luke    schedule 29.09.2014
comment
Включите заголовок в index.php. Там вы загружаете разные страницы, такие как информация, с параметром GET[] ?. Простой, быстрый и легкий.   -  person Webice    schedule 29.09.2014
comment
@Zafta Должен ли я опубликовать вам код, чтобы вы поняли, что я имею в виду?   -  person Webice    schedule 29.09.2014


Ответы (2)


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

// Use for file on the server, eg includes
$file_path = "../";

// For files relative to my page path, eg images, links
$link_path = "../../";

Я меняю каждый из них в зависимости от местоположения файла.

Затем я добавляю любые включения с $file_path, а элементы на странице (например, изображения, гиперссылки) с $link_path.

echo '<img src="' . $link_path . 'images/myimage.png" />';
include ($file_path . "html/headers/header.html");

Я во всяком случае так делаю...

Установите переменные в верхней части каждой новой страницы, которую вы создаете, а также их на своей странице и во всех включениях.

// New file
$file_path = "../";
$link_path = "../../";

include($file_path . "html/headers/header.html");

Затем в вашем header.html и на странице вы должны:

echo '<img src="' . $link_path . 'website/images/logo.png" />';

Если вам нужна ссылка, вы должны пойти:

echo '<a href="' . $link_path . 'website/page.html'>My Link</a>';
person Luke    schedule 29.09.2014
comment
Изображения в файле header.html не будут отображаться, потому что img src указан для index.php! - person Webice; 29.09.2014
comment
Вот почему вы должны использовать $link_path для изображений во включенных файлах. Убедитесь, что каждый файл имеет правильные пути. - person Luke; 29.09.2014
comment
Чем index.php не работает! Два разных пути ссылок и только 1 файл - person Webice; 29.09.2014
comment
@Coulton, эффективно ли использовать это всегда? - person Zafta; 29.09.2014
comment
@Zafta Хороший вопрос, возможно, нет, но это простое решение, позволяющее убедиться, что вы правильно указываете свои URL-адреса. - person Luke; 29.09.2014
comment
но изображения находятся внутри в header.html .. как узнать, какую переменную использовать ../../ или ../ ?? @Коултон - person Zafta; 29.09.2014
comment
Пожалуйста, посмотрите на редактирование, которое я только что сделал, надеюсь, это сделает его немного более понятным? Вам необходимо установить свои переменные на основе местоположения создаваемого файла ($file_path) и предполагаемого URL-адреса, из которого к нему будет осуществляться доступ ($link_path) - person Luke; 29.09.2014

Это ваша страница index.php

<?php
    if(isset($_GET['page'])) {
        $dir = 'page/' . $_GET['page']. '.php';
        if(file_exists($dir)) {
            include_once($dir);
        } else {
            include_once('page/404.php');
        }
    } else {
        include_once('page/home.php');
    }
?>

У вас есть такая структура папок

  • страницы
  • разделы
  • index.php

На страницах вы сохраняете home.php, info.php и т. д. А в разделах вы сохраняете header.php, footer.php и т. д.

Затем вы используете изображение src из вашего index.php, и у вас больше нет проблем.

person Webice    schedule 29.09.2014
comment
хороший первый разрез, но всегда ли эффективно отображать объекты на основе переменных GET ?? - person Zafta; 29.09.2014