我使用PHP包含,我需要将HEAD信息放在其中一个中。这是可能的,还是我只能将一个HEAD部分放在index.php的顶部?
我问这个是因为PHP包含了我需要的查询,以便将OG图像数据(用于社交媒体)放入头部。例如:我有一个文件WEBSHOP.PHP,在这个文件中有一个带有图像的产品。我希望该图像显示在FaceBook的时间轴上。
这是我的(缩短版)index.php的一个例子:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<? include webshop.php; ?>
</body>
这是我(缩短版)webshop.php的一个例子:
<!-- some mysql query to get variables as $pic and $row->meta_title -->
<head>
<meta property="og:image" content="http://forteuitgevers.nl/images/boeken/<? echo $pic; ?>" />
<meta property="og:title" content="<? echo $row->meta_title; ?>" />
<meta property="og:description" content="<? echo $row->meta_des; ?>" />
<meta property="og:url" content="http://<? echo $_SERVER['HTTP_HOST']; ?>/<? if (!empty($url_array[1])) { echo $url_array[1]; echo '/' ; } ?><? if (!empty($url_array[2])) { echo $url_array[2] ; } ?>" >
</head>
<!-- some code to view the webshop item -->
答案 0 :(得分:1)
为了将所有标头标记放入一个<head>
部分,您将不得不稍微更改PHP文件的结构。如果在开始生成HTML输出之前包含webshop.php
文件,则可以在编写head部分时访问PHP变量。像这样:
的index.php:
<?php include webshop.php; ?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<meta property="og:title" content="<?php echo $row->meta_title; ?>" />
<!-- other meta tags using variables from webshop.php -->
</head>
<body>
<!-- print out HTML code from webshop.php -->
<?php echo $doc_body; ?>
</body>
然后在webshop.php中,您将必须使用输出缓冲保存任何HTML输出,以便您可以在适当的位置将其添加到HTML代码中。像这样:
<?php
// sql queries to get data
ob_start();
?>
<!-- html code to show up in the body section to view webshop items -->
<?php
$doc_body = ob_get_clean();
?>
有关ob_start
和ob_get_clean
的更多信息,请查看Output buffering上的PHP.net手册页。
答案 1 :(得分:0)
是的,你可以。然而这是不好的风格。而你正在使你的HTML出错:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<? include webshop.php; ?>
</body>
这将导致
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<head>
<meta property="og:image" content="http://forteuitgevers.nl/images/boeken/<? echo $pic; ?>" />
<meta property="og:title" content="<? echo $row->meta_title; ?>" />
<meta property="og:description" content="<? echo $row->meta_des; ?>" />
<meta property="og:url" content="http://<? echo $_SERVER['HTTP_HOST']; ?>/<? if (!empty($url_array[1])) { echo $url_array[1]; echo '/' ; } ?><? if (!empty($url_array[2])) { echo $url_array[2] ; } ?>" >
</head>
</body>
然而,HTML并不认为head标签位于body标签内。但大多数浏览器仍然会正确显示它。 确保:使用HTML验证器检查结果。