| |
|
|
| | Уважаемые, не бейте сильно.
Поиск юзал, но всё несколько не в том аспекте...
Словом, ещё раз сорри и ткните носом, плз.
Задача такая:
Есть сайт, ссылки вида site/tema1.php, site/tema2.php, site/tema3.php... Есть файл шаблона, в который при переходе по вышеперечисленным ссылкам подгружается соответствующий контент.
Нужно организовать динамические Title, а в идеале и Descriptions, и Keywords, что бы с каждым файлом они подгружались в шаблон... Т.е. по ссылке tema1.php выводились title, скажем "Главная", по tema2.php - "О компании", tema3.php - "форум" и т.п.
Как организовать?
Спасибо. | |
| |
|
|
| |
|
|
| |
для: Soloway
(05.03.2007 в 17:45)
| | | А данные откуда берутся, к примеру сам контент страницы? | |
| |
|
|
| |
|
|
| |
для: zerocool
(05.03.2007 в 17:48)
| | | Есть шаблон: design.php, ссылки динамические, типа design.php?id=1, через РеврайтМод они преобразуются в статические, типа, как указал ранее - tema1.php... Ну а собственно контент страницы содержится в отдельных файлах 1.php, 2.php и т.д. и подгружается в design.php | |
| |
|
|
| |
|
|
| |
для: soloway
(05.03.2007 в 17:52)
| | | Тогда также и сделать как подгружается и контент страницы
прописываете также в этих файлах для каждой страницы свой title
С БД было проще | |
| |
|
|
| |
|
|
| |
для: zerocool
(05.03.2007 в 17:55)
| | | Я делал так. Создал страничку например title.php ввел в нее пару строк. По твой тематике.
<?php
title1= "Главная";
title2="О компании";
title3="Forum";
?>
|
Далее на каждой странице создаешь любую переменную например var1=1, var2=2, var3=3 и вставляешь в каждую страницу.
Например Страница Главная index.php
<?php
include("title.php"); ?>
<html>
<title><?php echo $title1?></title>
<body>
</body>
</html>
|
И так для каждого контента.
Или вставкой кода
<? if (isset($var1)) {
echo $title1; }
if (isset($var2)) {
echo $title2;
}
if (isset(var3)) {
echo $title3; } ?>
|
Но это не самый удобный прием, но он работает. А можно и через БД. | |
| |
|
|
| |
|
|
| |
для: tokmak
(05.03.2007 в 18:29)
| | | 2 tokmak
Спасибо. Сейчас, чуть позже попробую, но помоему именно так где-то...
Насколько я понимаю, конечно.
...а понимаю я не очень много.)))
Спасибо. | |
| |
|
|
| |
|
|
| |
для: zerocool
(05.03.2007 в 17:55)
| | | >>> Тогда также и сделать как подгружается и контент страницы прописываете также в этих файлах для каждой страницы свой title
В том-то и дело, что вписывал, в "подгружаемые" файлы и даже работало, да и в принципе, меня-то устраивает, но в итоге собственно код (после обработки, если смотреть из браузера) получался не очень красивый...
Типа
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="0" topmargin="0" marginheight="0" marginwidth="0">
<bla-bla-bla>
<bla-bla-bla>
<bla-bla-bla>
...
<и только потом>
<title>Компания «Компания» :: Раздел Такой-то</title>
<и далее>
|
Оно бы в принципе и не страшно, но опять вопрос (и вобщем-то главный на сегодня)...
С поисковиками могут проблемы быть? (ну из-за того, что title не сверху, а где-то ниже и значительно)??? | |
| |
|
|
| |
|
|
| |
для: soloway
(05.03.2007 в 21:03)
| | | >С поисковиками могут проблемы быть? (ну из-за того, что title не сверху, а где-то ниже и
>значительно)???
Да, они могут его игнорировать... | |
| |
|
|
| |
|
|
| |
для: soloway
(05.03.2007 в 21:03)
| | | 1) с поисковиками траблы будут ГАРАНТИРОВАНО.
2) можно сделать и так:
1.php
<?
$content["title"] = "Главная";
$content["keywords"] = "";
$content["..."] = "";
$content["html"] = 'Собственно сам контент. Вместо оператора вывода echo "контент" использовать конструкцию $content["html"] .= "контент"';
?>
2.php
<?
$content["title"] = "О компании";
$content["keywords"] = "";
$content["html"] = 'Собственно сам контент. Вместо оператора вывода echo "контент" использовать конструкцию $content["html"] .= "контент"';
?>
tpl.htm
<html>
<title><{$content["title"]}></title>
<meta ....>
<body>
{$content["html"]}
</body>
</html>
main.php
<?
$content = array("title"=>""; "keywords"=>""; "..."=>"");
include("нужный файл контента")
include("tpl.htm")
?>
|
Отдельно код скрипта, отдельно содержимое страниц, отдельно шаблон - править все достаточно удобно... | |
| |
|
|
| |
|
|
| |
для: ZuArt
(06.03.2007 в 09:37)
| | | Уважаемые, спасибо!
Вашими подсказками я обязательно воспользуюсь!
Но пока сделал вот так:
В файле шаблона, в котрый собственно всё грузится:
<title><? php include("title.php"); echo( "Название Компании"); ?></title>
|
В файле title.php
<?
if($_SERVER['REQUEST_URI']=="/page1.htm") {?>Раздел 1<?}
if($_SERVER['REQUEST_URI']=="/page2.htm") {?>Раздел 2<?}
<и т. д.>
else {?>Описание для всех остальных разделов<? }
?>
|
Что вы можете сказать на это? Имеет право на существование?
Вроде работает... Но может какие ошибки исправить что б код по-элегантней был? | |
| |
|
|
| |
|
|
| |
для: soloway
(06.03.2007 в 12:12)
| | | И ещё...
После обработки браузером код выглядит так:
<title>
Раздел1 Название Компании</title>
|
Т.е. не в одну строку а в две, после открывающегося тэга перенос на другую строку...
Возможны ли из за этого проблемы индексации и как исправить?
С Descriptions, Keywords хочу в принципе поступить примерно так же... | |
| |
|
|
| |
|
|
| |
для: soloway
(06.03.2007 в 12:15)
| | | проблемы могут быть легко, т.к. не все пауки корректно воспримут символ перевода строки, многие просто воспримут содержимое <title></title> как пустое значение... по поводу способа - ВСЕ имеет право на существование, но суть такова, что каждую страницу придется разбивать на разные файлы (что логически плохо, т.к. сложнее связь между ними отслеживать) - заголовок, ключевики, содержимое - и это все разное файло - нехорошо как-то =(((
тогда уж лучше писать так
main.php
<html>
<head>
<?include("topN")?>
<meta ....> общие метатеги
</head>
<body>
<?include("contentN")?>
</body>
topN.php
<title>Заголовок N-ой страницы</title>
<meta ...> соответствующие мета теги (в частности ключевики)
contentN.php
СОБСТВЕННО КОНТЕНТ
|
Тогда и переводов строк не будет и все-таки 2 файла легче совмещать логически, чем 3-4-5 и больше...
А заголовок напрямую логически связан с метатегами и идут эти теги в заголовке страницы, потому можно и схитрить маленько. | |
| |
|
|
| |
|
|
| |
для: ZuArt
(06.03.2007 в 13:22)
| | | ну или еще наглее вариант
1.php
<?
switch ($out)
{
case 0:?>
<title>Выводим заголовочную информацию</title>
<?break;
case 1:?>
<meta ... >Выводим метаинформацию
<?break;
case 2:?>
Выводим собственно наполнение страницы
<?break;
case 3:?>
Выводим подвал страницы (если он нужен, естессно)
<?break;
};
$out++;
?>
main.php
<html>
<head>
<?include("1.php")?>
<meta ...>
<?include("1.php")?>
</head>
<body>
<?include("1.php")?>
<hr>
<?include("1.php")?>
</body>
|
Преимущества в том, что все блоки, которые составляют страницу содержатся в одном файле и четко разделены. | |
| |
|
|
| |
|
|
| |
для: ZuArt
(06.03.2007 в 13:34)
| | | Блин, последний вариант действительно классный. Попробую его обкатать...
Но всё-таки, сорри, я ещё раз со своим вклинюсь. На данный момент, дабы избежать переноса строк, я сделал примерно так:
шаблон:
head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<?php include("title/title.php"); echo( "Название Компании"); ?></title>
|
title.php
<?
if($_SERVER['REQUEST_URI']=="/page1.htm") echo "<title>Стр 1. ";
elseif($_SERVER['REQUEST_URI']=="/page2.htm") echo "<title>Стр 2. ";
elseif($_SERVER['REQUEST_URI']=="/page3.htm") echo "<title>Стр 3. ";
elseif($_SERVER['REQUEST_URI']=="/page4.htm") echo "<title>Стр 4. ";
else echo "<title>Для остальных страниц. ";
?>
|
Т.е. открывающий тэг <title> отсутствует в шаблоне и инклюдится из title.php
По некой неудобности редактирования я согласен, потому и попробую твой метод, но сейчас надо срочно выложить, то что есть, а перекраивать все контенты пока времени нету. Словом пока так...
Ещё. По коду моей лабуды. Читал, что elseif нежелательны, но по-другому у меня не работает. Когда вместо elseif были if, то else грузилось для всех if, кроме самого ближнего, т.е. if($_SERVER['REQUEST_URI']=="/page4.htm") echo "<title>Стр 4. "; в данном случае...
Что-то мне подсказывает, что надо было что-то заключить в фигурные скобки. Пробовал, но в результате всех моих проб вылезали ошибки. Словом не подкорректируете, если так:
<?
if($_SERVER['REQUEST_URI']=="/page1.htm") echo "<title>Стр 1. ";
if($_SERVER['REQUEST_URI']=="/page2.htm") echo "<title>Стр 2. ";
if($_SERVER['REQUEST_URI']=="/page3.htm") echo "<title>Стр 3. ";
if($_SERVER['REQUEST_URI']=="/page4.htm") echo "<title>Стр 4. ";
else echo "<title>Для остальных страниц. ";
?>
|
Т.е. чтобы для всех условий, неопределённых в if, было else...
ЗЫ. Или бог с ними, оставить elseif? | |
| |
|
|
| |
|
|
| |
для: soloway
(06.03.2007 в 14:16)
| | | впервые слышу, что else if (кстать, раздельно пишется) вызывало какие-то баги...
если же его не юзать, то что-то типа этого получится (на мой взгляд бредятина полная)
<?
if($_SERVER['REQUEST_URI']=="/page1.htm") echo "<title>Стр 1. "
else{
if($_SERVER['REQUEST_URI']=="/page2.htm") echo "<title>Стр 2. "
else {
if($_SERVER['REQUEST_URI']=="/page3.htm") echo "<title>Стр 3. "
else {
if($_SERVER['REQUEST_URI']=="/page4.htm") echo "<title>Стр 4. "
else echo "<title>Для остальных страниц. ";
}
}
};
?>
|
PS. Относительно "последний вариант"-а - там можно использовать доп. возможности...
- если использовать в главном файле какой-то набор общих переменных, типа
$main_ttl = "Имя сайта"
, тогда в подключаемых файлах можно их выводить в нужном месте
echo "<title>Заголовок от шаблона - $main_ttl</title>";
Не придется тогда из шаблона инклюдить часть "<title>" , потом дописывать еще что-то и потом закрывать "</title>" - так и запутаться недолго ;)
- если убрать из подключаемого файла $out++, а ставить его в главном файле, то можно более гибко управлять выводами - например какой-то блок вызвать дважды... получим небольшое изменение
$out =0;
...
<?include("1.php");$out++;?> // выведет заголовок
...
<?include("1.php");$out++;?> // выведет мета теги
...
<?include("1.php");$out++;?> // выведет еще что-то там
...
<?$out=5; include("1.php")?;$out=2;> // выведет что-то дополнительное
...
<?include("1.php");$out++;?> // опять по основному алгоритму =)
|
преимущества - ЧЕТКО организовав зависимость индексов
0-заголовок
1-мета
2-блок контента
3-....
..... и т.д.
N - блок подменю (например)
можно четко в основном файле прописать где и что вставлять, а в самих файлах можно не определять ненужный (в данном наполнении) блок, тогда просто в это место ничего не выведется ;) | |
| |
|
|
| |
|
|
| |
для: ZuArt
(06.03.2007 в 14:55)
| | | ЗЫ. Очепятался - $out = 0; естессно заключить в <? $out = 0; ?> | |
| |
|
|
| |
|
|
| |
для: ZuArt
(06.03.2007 в 14:57)
| | | Спасибо, как уже сказал, буду обкатывать. :)
А насчёт нежелательности использования else if:
"Однако, вообще говоря, использование оператора elseif довольно сильно ухудшает читабельность кода" - http://www.softtime.ru/bookphp/gl2_1.php
Ну тут может и я не совсем верно трактовал "нежелательность"... Так что пока ладно.
Ещё раз тебе спасибо за помощь! | |
| |
|
|
| |
|
|
| |
для: soloway
(05.03.2007 в 21:03)
| | | А почему поисковики должны игнорировать? В принципе если поисковик ищет титл и мета теги по рег выражениям, то никаких проблем быть не может - ему вроде все равно где будет этот титл написан..... | |
| |
|
|
| |
|
|
| |
для: fis
(06.03.2007 в 15:51)
| | | [deleted]
Сорри, это было ошибочное сообщение. | |
| |
|
|
| |
|
|
| |
для: fis
(06.03.2007 в 15:51)
| | | ВОЗРАЖУ, причем ЖЕСТКО =)
1) Поисковик не "ищет" титл, а просматривает код полученной страницы и если НАХОДИТ, то принимает его
2) Все поисковики берут только ОГРАНИЧЕННЫЙ кусок страницы - килов так 100-200 - не больше точно... и если титл или служебные теги разместить дальше границы - то поисковик их НИКОГДА не увидит...
3) Браузеры также могут некорректно отбработать код страницы, если он некорректно написан... в частности как-то встретил пример, в котором был код такого типа: <html><body><title></title></body></html><body></body> - смешно, но в браузерах работал, правда в каком-то из них все стили поотлетали к едрене фене - но ведь "работало" =))))) | |
| |
|
|
| |
|
|
| |
для: ZuArt
(09.03.2007 в 10:03)
| | | Добавлю, что информация эта предположительная, как на самом деле работает робот той или иной поисковой системы доподлино, как правило, не известно. Один поисковый робот может брать любой заголовок, друго вообще его игнорировать. Третий назначать коэффициент в зависимости от того, считает он заголовок подлиным или нет. | |
| |
|
|
| |
|
|
| |
для: cheops
(09.03.2007 в 12:30)
| | | не совсем предположительна =) - частично, т.к. некоторые поисковики ОФИЦИАЛЬНО выкладывают информацию по работе своих пауков (естессно не всю ;) )... в частности Яндекс четко говорит, что берет не всю страницу, а только ее часть определенного объема =) | |
| |
|
|
| |
|
|
| |
для: ZuArt
(09.03.2007 в 12:52)
| | | Да, информация к счастью просачивается, но нельзя быть точно уверенным, что робот Rambler, Google, Aport или любой другой поисковой системы поступает точно также. | |
| |
|
|