在每个php page inc子文件夹中包含css

时间:2015-07-01 10:12:48

标签: php html css twitter-bootstrap

我正在创建我的第一个(基本的)php应用程序,并希望开始,因为我的意思是继续关于文件路径和全局 - 这对我来说是一个新的。我现在有什么工作但是我想建议是否有更有效的方法(为了面向未来/扩展)

我有一个简单的文件结构如下;

- css
 -- bootstrap.css
- lib
 -- display.php
- template
 -- header.php
 -- footer.php
- admin
 -- login.php
- globals.php
- index.php

我想在每个页面上包含我的css(bootstrap.css)。我在global.php中声明了一个全局,如下所示;

<?php define('URL', 'http://localhost/myLocalSite'); ?>

我的display.php中包含了css;

<link href="<?php echo URL ?>css/styles.css" rel="stylesheet">
<link href="<?php echo URL ?>css/bootstrap.min.css" rel="stylesheet">

我使用以下内容将这些内容包含在index.php中;

<?php include('globals.php') ?>
<?php include('template/header.php') ?>
<?php include('lib/display.php') ?>

我使用以下内容(不是子文件夹位置)将这些内容包含在login.php中;

<?php include('../globals.php') ?>
<?php include('../template/header.php') ?>
<?php include('../lib/display.php') ?>

每当在子目录中的文件中工作时(如上所述login.php),我是否总是需要包含../才能包含文件或者有更好的方法吗?

就像我说的那样有效,我是新手,所以我很感激你的建议。

2 个答案:

答案 0 :(得分:4)

您可以将index.php设为您的路由器,然后重写请求 然后你可以在索引文件中声明一个常量并从中加载其他文件。

define('ROOT', dirname(__FILE__));

然后你可以像这样包含文件

require(ROOT.'/globals.php');
require(ROOT.'/template/header.php');
require(ROOT.'/lib/display.php');

仅适用于示例路由器: .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

然后你可以在index.php中做任何事情,例如:

   <?php
    $uri = $_SERVER["REQUEST_URI"];
    require "templates/header.php";
    switch ($uri) {
        case "/":
            include "views/index.php";
            break;
        case "/login":
            include "admin/login.php";
            break;
        case "/something":
            include "views/something.php";
            break;
        default:
            include "views/404.php";
            header("HTTP/1.0 404 Not Found");
            break;
    }
    require "template/footer.php";

未来的改进:

  • 您可以通过某种方式自动化它,不为每个创建下一个案例 文件

  • Some tutorial on php routing,但请注意安全原因 - 不要包含SECRET文件

答案 1 :(得分:1)

相反,如果你想删除PHP处理逻辑,我建议你在HTML <base>部分使用HTML <head>标记,你可以看到示例用法here

<base href="http://www.yoursite.com/" target="_blank">

然后你必须改变以下行

<link href="<?php echo URL ?>css/styles.css" rel="stylesheet">
<link href="<?php echo URL ?>css/bootstrap.min.css" rel="stylesheet">

<link href="css/styles.css" rel="stylesheet">
<link href="css/bootstrap.min.css" rel="stylesheet">

这将消除PHP处理部分