我试图通过仅包含标题来使用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为页面执行所有“包含”工作。所以我不需要在页面的特定位置放置包含。
答案 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)
可以通过许多不同的方式实现。这是一个非常可靠的方法(尽管这里没有考虑安全因素,你必须关心它)
假设您在网络服务器上有以下目录结构:
•/.
•/..
•/.htaccess
•/static-pages/index.html
•/static-pages/foo.html
•/static-pages/bar.html
•/templates/header.php
•/templates/footer.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');
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;
}
}
您现在应该可以使用:
这将在static-pages
中加载index.html将加载foo。
等
我的示例配置了https://github.com/devigner/docker-compose-php,其中包含一些特定于我的本地设置的微小更改,但您应该可以直接使用它来尝试。