草庐IT

php - 动态引用不同目录和子目录中所有 PHP 页面的页眉和页脚

coder 2024-04-25 原文

更新 1: 要清楚地了解正在发生的事情,您可以 download a snippet of the script from here.

我正在一个新网站上工作,该网站具有相同的 header , footer在所有 PHP 页面中。

在 header 中,我引用了网站中的其他常见文件,例如 .css , .js , functions , classes , db connection , 等等

例如,default.css/common/stylesheets/

我的 header.php 和 footer.php 在 /common/html/ 中文件夹

所以我的 header.php 文件是这样的

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>The Header</title>
  <link rel="stylesheet" href="common/stylesheets/default.css">
</head>
<body>

在我的网站index.php我包括标题 <?php include('common/html/header.php'); ?>这工作正常......但是当我在其他目录或子目录中的其他 php 页面中包含标题时出现问题,例如/pages/admin/dashboard.php ,一切都搞砸了,该页面不再链接到 default.css文件。

因此,我正在寻找的是一种方法或逻辑,无论其位置如何,我都可以在每个 PHP 页面中引用这些常用文件和文件夹;例如站点根目录、站点根目录或子目录...等...

这是我网站根目录的图片

非常感谢您的帮助...

附言我尝试使用一些超全局变量,例如 $_SERVER['']config.inc.php文件来定义路径,然后我将该文件包含在 header.php 中.但是无论 PHP 页面在哪里,我都无法弄清楚哪一个会动态地继续引用那些公共(public)文件夹和文件。


更新 1: 要清楚地了解正在发生的事情,您可以 download a snippet of the script from here.

最佳答案

使用完全限定或绝对 URL 来引用您的 Assets 通常是个好主意:

<link rel="stylesheet" href="http://www.sitenamecom/some/path/to/common/stylesheets/default.css">

由于在许多地方您需要正确的 URL 基础来访问不同的文件,您可以定义一个具有 Web 根目录的常量:

define('WEB_ROOT', 'http://www.sitename.com');

然后你可以定义其他常量来访问系统的不同部分:

define('WEB_ASSETS', WEB_ROOT . '/common');

因此对于 header.php 中的样式表链接,它将是:

<link rel="stylesheet" href="<?php echo WEB_ASSETS; ?>/stylesheets/default.css">

include 文件的原理是相同的,只是在这种情况下您不使用 URL,而是使用文件系统的路径。没有真正动态 的方法来解决这个问题,这一切都归结为绝对路径。

这里的问题是您本地开发环境中的树结构可能(而且肯定不会)与您的服务器相匹配。因此,在位于应用程序根目录的配置文件中,您可以定义:

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

然后让我们以admin/index.php文件为例:

include '../../../config.inc.php'; 
include APP_ROOT . '/sitename/common/html/header.php';

这里棘手的部分是包括配置。因为,除非您这样做,否则 APP_ROOT 将不可用,因此需要相对路径才能到达它,并且不可能逃脱这一路径;除非你可以完全相信首选的绝对形式:

include '/some/path/to/config.inc.php'; 

如前所述,如果应用程序在不同的环境中进行测试,那么使用前导斜杠将是一个问题,因为 some/path/to 很少会始终相同。

关于php - 动态引用不同目录和子目录中所有 PHP 页面的页眉和页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152376/

有关php - 动态引用不同目录和子目录中所有 PHP 页面的页眉和页脚的更多相关文章

  1. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

  2. ruby - 一个 YAML 对象可以引用另一个吗? - 2

    我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的ruby​​yaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir

  3. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

  4. java - 为什么 ruby​​ modulo 与 java/other lang 不同? - 2

    我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.

  5. ruby-on-rails - 没有这样的文件或目录 - 用 Mini Magick 识别 - 2

    在我让另一个人重做我的前端UI之前,我的Rails应用程序运行平稳。我已经尝试解决此错误3天了。这是错误:Nosuchfileordirectory-identifyExtractedsource(aroundline#59):575859606162@post=Post.find(params[:id])authorize@postif@post.update_attributes(post_params)flash[:notice]="Postwasupdated."redirect_to[@topic,@post]else{"utf8"=>"✓","_method"=>"patc

  6. ruby-on-rails - 在 RSpec 中,如何以任意顺序期望具有不同参数的多条消息? - 2

    RSpec似乎按顺序匹配方法接收的消息。我不确定如何使以下代码工作:allow(a).toreceive(:f)expect(a).toreceive(:f).with(2)a.f(1)a.f(2)a.f(3)我问的原因是a.f的一些调用是由我的代码的上层控制的,所以我不能对这些方法调用添加期望。 最佳答案 RSpecspy是测试这种情况的一种方式。要监视一个方法,用allowstub,除了方法名称之外没有任何约束,调用该方法,然后expect确切的方法调用。例如:allow(a).toreceive(:f)a.f(2)a.f(1)

  7. ruby - 在 Ruby 中动态创建数组 - 2

    有没有办法在Ruby中动态创建数组?例如,假设我想遍历用户输入的书籍数组:books=gets.chomp用户输入:"TheGreatGatsby,CrimeandPunishment,Dracula,Fahrenheit451,PrideandPrejudice,SenseandSensibility,Slaughterhouse-Five,TheAdventuresofHuckleberryFinn"我把它变成一个数组:books_array=books.split(",")现在,对于用户输入的每一本书,我想用Ruby创建一个数组。伪代码来做到这一点:x=0books_array.

  8. ruby - 是否可以将 IRB 提示配置为动态更改? - 2

    我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO

  9. ruby - Sinatra 找不到 View 目录 - 2

    我正在尝试以一种更类似于普通RubyGem结构的方式构建我的Sinatra应用程序。我有以下文件树:.├──app.rb├──config.ru├──Gemfile├──Gemfile.lock├──helpers│  ├──dbconfig.rb│  ├──functions.rb│  └──init.rb├──hidden│  └──Rakefile├──lib│  ├──admin.rb│  ├──api.rb│  ├──indexer.rb│  ├──init.rb│  └──magnet.rb├──models│  ├──init.rb│  ├──invite.rb│  ├─

  10. ruby-on-rails - 如何用不同的用户运行nginx主进程 - 2

    A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(

随机推荐