Связывание как PHP / HTML - PullRequest
       7

Связывание как PHP / HTML

0 голосов
/ 26 апреля 2010

Хорошо, теперь я закончил делать страницы с фреймами и знаю, что разделил свой дизайн на top.php и bottom.php. В top.php он ссылается на style.css и ajax_framework.js и т. Д. Теперь это прекрасно работает, пока я не попытался включить top.php & bottom.php в videos / index.php (еще один каталог), я сделал это так:

include "../top.php";
<-- and the originally index.php -->
include "../bottom.php";

Теперь, когда я захожу на сайт, он не загружает style.css, вероятно потому, что считает, что style.css должен находиться в каталоге videos /, то же самое относится и к ajax_framework.js, поскольку оба файла находятся на родительском ../ каталог.

Что мне теперь делать? Какой-нибудь метод или техника, чтобы решить это хорошим способом? Поэтому мне не нужно копировать style.css и ajax_framework.js в каждый каталог, который у меня есть, потому что потом, если я захочу что-то изменить, мне нужно будет изменить все каталоги, что будет моим последним делом, которое я хочу сделать .. надеюсь Вы получили хорошие методы спасибо

Ответы [ 4 ]

2 голосов
/ 26 апреля 2010

У вас есть как минимум три варианта:

  1. Сделайте все ваши ресурсы URL-адреса абсолютными. Например, измените <script type="test/javascript" src="scripts/foo.js"> на <script type="text/javascript" src="/scripts/foo.js">. Если вы можете сделать это, это гораздо менее навязчивое решение.

  2. Установите константу BASEDIR, прежде чем включать top.php, и укажите каждый путь к ресурсу относительно нее:

    // in your file that includes top.php
    <?php define('BASEDIR', '..'); ?>
    // in top.php
    <?php if(!defined('BASEDIR')) define('BASEDIR', '.'); ?>
    <link rel="stylesheet" type="text/css" href="<?php echo BASEDIR; ?>/style.css"/>
    
  3. Добавьте <base> HTML-тег в ваш <head> (этот отстой, не делайте этого):

    <base href="/foo"></base>
    <!-- now all srcs, hrefs and whatnot are relative to /foo -->
    

    Это отстой, потому что даже якоря будут относительно него. Так что если у вас есть ссылка типа <a href="#foo"> на странице qaz.php, с <base href="/bar">, ссылка будет указывать на /bar#foo вместо qaz.php#foo.

1 голос
/ 26 апреля 2010

Вы не опубликовали свой HTML, но я предполагаю, что вы не используете абсолютный URI. Вы, вероятно, делаете что-то вроде:

<link rel="stylesheet" type="text/css" href="css/style.css" />

Когда вы должны делать что-то вроде:

<link rel="stylesheet" type="text/css" href="/css/style.css" />

0 голосов
/ 26 апреля 2010

Ответ прост:

В top.php, я думаю, у вас есть что-то вроде этого:

<link type="text/css" href="style.css" rel="stylesheet" />

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

<link type="text/css" href="/style.css" rel="stylesheet" />

Теперь браузер будет искать вашу таблицу стилей в корневом каталоге документа по абсолютному пути.

Кстати, люди, читающие ваш вопрос, не могут легко понять ситуацию, потому что вы, похоже, ссылаетесь на разные посты. Я считаю, что лучше описать всю проблему в одном посте, потому что я не нашел ваши предыдущие вопросы.

0 голосов
/ 26 апреля 2010

Добавьте тег <base href="..." /> в top.php. Базовый тег определяет URI, из которого разрешены все относительные URI.

Подробности и пример здесь: http://www.w3.org/TR/html401/struct/links.html#h-12.4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...