2014-12-10 4 views
0

Я работаю с PHP, и мне нужно разместить информацию HEAD в одном из них. Возможно ли это, или я могу разместить секцию HEAD поверх индекса index.php?Раздел HEAD на 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

Вы можете помещать HEADs куда угодно, прежде чем будет записано содержимое. –

+0

Покажите нам некоторый код. Что вы уже пробовали? – krzysiej

+0

Я добавил код в свой первоначальный пост. – user3147480

ответ

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 не нравится, что голова тег внутри тела тега. Но большинство браузеров все равно покажут это правильно. Чтобы уточнить: проверьте свой результат с помощью HTML Validator.

+0

Это именно то, что я имею в виду: HTML неправильный, как это, и Facebook этого не поймет. Поэтому я должен каким-то образом изменить это, чтобы заставить это работать в FaceBook. – user3147480

+1

Да, вы должны изменить свой звонок. В противном случае вы не можете присоединиться к нему с другими инструментами PHP. Измените свой SHOP PHP, чтобы он не выводил свой собственный заголовок. Или отделите свой PHP, один для заголовка и один для тега body. –

+0

Проблема в том, что запрос вызывается в webshop.php, поэтому я не могу поместить его в индексный файл. Предполагаете ли вы, что тогда в него входит отдельный HEADER? Например: ' ' – user3147480

1

Вам нужно немного изменить структуру своих файлов PHP, чтобы получить все теги заголовков в один раздел <head>. Если вы включите файл webshop.php, прежде чем приступать к генерации вывода HTML, вы можете получить доступ к переменным 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(); 
?> 

Проверьте страницу PHP.net вручную на Output buffering для получения дополнительной информации о ob_start и ob_get_clean.