Jump to content
  • 0

inclide и несколько head


dmifed
 Share

Question

Здравствуйте, подскажите как правильно пользоваться функцией include для вставки одинаковых блоков (шапка, футер и тд) на страницы сайта.

На данный момент код страницы выглядит примерно так:

<head>    мета-теги (title, keywords)</head><body>    <?php include "шапкасайта.php"; ?>    остальной код страницы</body>

Файл "шапкасайта.php", в свою очередь также имеет мета-теги в head и код в body, т.е. выглядит так:

<head>    мета-теги (title, keywords)</head><body>    код страницы шапкасайта</body>

И в итоговом виде код страницы получается следующий (если смотреть в браузере исходный код страницы):

<head>    мета-теги (title, keywords)</head><body>    <head>        мета-теги (title, keywords)    </head>    <body>        код страницы шапкасайта    </body>    остальной код страницы</body>

Т.е. получается несколько head и body контейнеров на странице, а также несколько тэгов title, причем разных, например, "шапка сайта" и "компания рога и копыта".

 

Вопросы:

1. Правильно ли так вставлять одинаковые блоки на страницу или это делается по-другому?

2. Не получится ли "Переспам ключевыми словами" из-за нескольких тайтлов?

Спасибо!

Edited by dmifed
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

вы все делаете правильно, но!

что бы не было одинаковых title и прочего, нужно использовать какую-нибудь субд, для хранения и последующего вывода контента, и уже тогда, когда контент будет формироваться димнамически исходя из запроса в урл, вместе с разным контентом - будут выводиться разные мета-теги.

  • Like 1
Link to comment
Share on other sites

  • 0

Спасибо! 

Для того чтобы сделать сайт с использованием, например mySQL, его нужно будет основательно переделать (он практически уже готов)

Я же правильно понимаю, что структура сайта с использованием субд будет выглядеть примерно так:
Сам код страницы, которая показывается в браузере, будет состоять из php-запросов к базе данных. А сама база данных будет состоять из таблиц, в которых в отдельных полях содержится контент сайта, размеченный html тэгами. Так как с php и с запросами к mySQL я знаком слабо, то боюсь создание сайта затянется надолго.

Вопрос. Можно ли файл "шапкасайта.php" сделать вообще без контейнера head, все равно же он не является самостоятельной единицей сайта, или сделать просто с пустым тайтлом?

Link to comment
Share on other sites

  • 0

Вообще <head> и <body> должны быть на странице в единственном экземпляре. Нельзя их вкладывать друг в друга.

UPD: Мета-теги отработают только самые первые, остальные должны будут игнорироваться, т.к. мета-информация отсылается по HTTP только 1 раз.

  • Like 1
Link to comment
Share on other sites

  • 0

Спасибо! 

Для того чтобы сделать сайт с использованием, например mySQL, его нужно будет основательно переделать (он практически уже готов)

Я же правильно понимаю, что структура сайта с использованием субд будет выглядеть примерно так:

Сам код страницы, которая показывается в браузере, будет состоять из php-запросов к базе данных. А сама база данных будет состоять из таблиц, в которых в отдельных полях содержится контент сайта, размеченный html тэгами. Так как с php и с запросами к mySQL я знаком слабо, то боюсь создание сайта затянется надолго.

Вопрос. Можно ли файл "шапкасайта.php" сделать вообще без контейнера head, все равно же он не является самостоятельной единицей сайта, или сделать просто с пустым тайтлом?

да, вы все правильно поняли, но так как уже ответили выше, не стоит отдельно подключать мета-теги, и в случае если вы хотите все же использовать разные мета-теги на разных страницах, то придется все же использовать доп. параметры, что бы по ним как-то определять страницу, типа: index.php?page=home.

но всегда можно что-то придумать... и тут на помощь приходит смекалка (правда это получится говно-код, но в формате нескольких страниц сойдет):

<?$meta_t = array('Главная', 'О компании', 'Цены');$meta_k = array('ключевое слово1', 'ключевое слово2', 'ключевое слово3');$meta_d = array('описание дескрипшн1', 'описание дескрипшн2', 'описание дескрипшн3');$page = $_GET['page'];switch($page) {  case 'home':foreach($meta_t as $val) {echo ' <title>'.$val.'</title>';}foreach($meta_k as $val) {echo '<meta name="keywords" content="'.$val.'" />';}foreach($meta_d as $val) {echo '<meta name="description" content="'.$val.'" />';}    break;  case 'about':foreach($meta_t as $val) {echo ' <title>'.$val.'</title>';}foreach($meta_k as $val) {echo '<meta name="keywords" content="'.$val.'" />';}foreach($meta_d as $val) {echo '<meta name="description" content="'.$val.'" />';}    break;  case 'price':foreach($meta_t as $val) {echo ' <title>'.$val.'</title>';}foreach($meta_k as $val) {echo '<meta name="keywords" content="'.$val.'" />';}foreach($meta_d as $val) {echo '<meta name="description" content="'.$val.'" />';}    break;  default:foreach($meta_t as $val) {echo ' <title>'.$val.'</title>';}foreach($meta_k as $val) {echo '<meta name="keywords" content="'.$val.'" />';}foreach($meta_d as $val) {echo '<meta name="description" content="'.$val.'" />';}    break;}?>

блин... щас глянул на весь этот кошмар написанный мною... аж глаза на лоб полезли :rofl:

вобщем я и не особо старался, просто это то, что первое пришло в голову и я уверен что есть намного лучше и гибче вариант.

  • Like 1
Link to comment
Share on other sites

  • 0

могу предложить такой вариант

в корне сайта создаем .htaccess и пишем в нем

DirectoryIndex /index.php

в /index.php

<?php$path = split("?", $_SERVER['REQUEST_URI']);$path = $path[0];?><!DOCTYPE HTML><html><head><meta charset="utf-8"><?php include $path ."head.php";?></head><body><?php include $path ."body.php";?></body></html>

каждый head.php у нас будет иметь уникальные заголовки для каждой страницы, например такие

<title>Главная</title><meta name="keywords" content="сайт, главная"><link rel="stylesheet" href="style.css"><script src="script.js" type="text/javascript"></script>

ну и все что вам здесь понадобится

 

body.php можно разбить на еще несколько файликов

<?php include "/header.php";?><?php include $path ."content.php";?><?php include "/footer.php";?>

header и footer как правило на всех страницах одинаковые, их можно оставить в единственном экземпляре например в корне и подгружать всеми страничками от туда, контент будет уникальным и по адресу http://site.ru/page/content.php можно подгружать через ajax.

 

данную схему можно модернизировать и улучшать - я привел самый простой пример без использования БД

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy