从单个标头生成带有php的页面

时间:2017-09-22 13:05:43

标签: php

我试图通过仅包含标题来使用make php生成页面,这是否可能?或者我必须在页面组件的页面中使用包含吗?

<?php
include($_SERVER['DOCUMENT_ROOT'].'/api/header.php');
$GLOBALS['pagetype'] = "main";
$GLOBALS['$pagetitle'] = "Test";

/* content goes here */
?>

理想情况下,我希望所有网页都遵循此模板。

我的一个布局是这样的:

Page headerbar
----
Content
----
Navigation Index

如何将页面内容放在正确的位置?

修改 我很难解释一些事情,抱歉。实际上,我想要的是使header.php为页面执行所有“包含”工作。所以我不需要在页面的特定位置放置包含。

3 个答案:

答案 0 :(得分:1)

像@ADyson所说,制作一个像这样的header.php页面:

<?php

 //use require_once('exampleclass.php'); if you want to use OOP- classes and
 //put all other php code here

?>

<html>
   <head>
       <link rel="stylesheet" href="styles.css"/>
   </head>
   <body>

   //put your html code here and use css to make it prettier

   </body
</html>

然后在您需要使用此页面的其他页面中,将其放入您的php文件中:

<?php

include('header.php');

?>

真的很简单,只需继续包含header.php页面,并为这些页面中的内容添加不同的html代码。

希望这能回答你的问题! Ramon的

答案 1 :(得分:1)

我认为你要求的是一种不必放置所有常见HTML内容的方法。有很多方法可以实现这一目标。最简单的实现和理解是其他人所描述的。包括页眉和页脚文件,并将内容夹在它们之间。

您的页面如下所示:

<?php
    // This has to be placed BEFORE including the other files
    $pageConfig = ['pageType' => 'main', 'title' => 'Test' ];
?>

<?php require_once 'header.php'; ?>
<!-- YOUR PAGE CONTENT GOES HERE -->
<div>This is a test</div>
<?php require_once 'footer.php'; ?>

的header.php

 <!-- begin header.php -->
<html>
    <head>
        <title><?= $pageConfig['title'] ?></title>
    </head>
    <body>
 <!-- end header.php -->

footer.php

 <!-- begin footer.php -->
    </body>
 </html>
 <!-- end footer.php -->

这是一种非常简单的模板方法,可能不适合构建广泛的应用程序。 有许多模板系统和MVC系统可以为您提供更多功能。如果你正在做任何严肃的事情,你应该留意那些。

答案 2 :(得分:1)

可以通过许多不同的方式实现。这是一个非常可靠的方法(尽管这里没有考虑安全因素,你必须关心它)

将PHP与某些nginx配置一起使用

假设您在网络服务器上有以下目录结构:

•/.
•/..
•/.htaccess
•/static-pages/index.html
•/static-pages/foo.html
•/static-pages/bar.html
•/templates/header.php
•/templates/footer.php
•/app.php

•/ app.php

$page = $_SERVER['REQUEST_URI']? $_SERVER['REQUEST_URI'] : "/index.html";
$inc = './static-pages' . $page;
require_once('./templates/header.php');
include_once($inc);
require_once('./templates/footer.php');

nginx config

access_log /var/log/nginx/access.log;
error_log   /var/log/nginx/error.log;

server {
    listen 0.0.0.0:80;
    server_name localhost;
    root /var/www/html/web/;

    rewrite ^/app\.php/?(.*)$ /$1 permanent;
    try_files $uri @rewriteapp;
    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }
    location ~ ^/(app)\.php(/|$) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param HTTPS off;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include       /etc/nginx/fastcgi_params;

        fastcgi_index index.php;
        send_timeout  1800;
        fastcgi_read_timeout 1800;
        fastcgi_pass  phpfpm:9000;
    }

    location  /php/fpm/status {
        fastcgi_pass   phpfpm:9000;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }

    location /php/fpm/ping {
        fastcgi_pass   phpfpm:9000;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }
}

您现在应该可以使用:

  

http://example.com/

这将在static-pages

中加载index.html
  

http://example.com/foo.html

将加载foo。

注释

我的示例配置了https://github.com/devigner/docker-compose-php,其中包含一些特定于我的本地设置的微小更改,但您应该可以直接使用它来尝试。