HEAD раздел в PHP включает

Я работаю с включениями 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

Решение

Вам нужно будет немного изменить структуру ваших файлов PHP, чтобы объединить все теги заголовка в один <head> раздел. Если вы включите webshop.php файл, прежде чем вы начнете генерировать вывод HTML, вы можете получить доступ к переменным PHP при написании раздела head. Что-то вроде этого:

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();
?>

Посетите страницу справки по PHP.net на Буферизация вывода для получения дополнительной информации о ob_start а также ob_get_clean,

1

Другие решения

Да, ты можешь. Однако это плохой стиль. И вы делаете свой 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-валидатора.

0

По вопросам рекламы [email protected]