Помогите! Meta

Статус
В этой теме нельзя размещать новые ответы.

Raccoon

Участник
Регистрация
31 Июл 2007
Сообщения
176
Реакции
9
Добрый день.
Ситуация следующая - есть сайт на php, где страница собирается последовательно:

include('header.php');
include('main.php');
include('footer.php');

и так далее.

Так вот, есть раздел статьи, где у каждой статьи я создал 2 поля: meta description и meta keys.

Т.е. есть 2 переменные $metadesc и $metakeys, которые надо запихать в в шапку сайта, между тэгами <head></head>, но проблема в том, что переменные присваиваются после того (в разделе main.php), как загрузилась шапка сайта в header.php.

Как лучше поступить в такой ситуации?
Спасибо.
 
а что мешает присаваевать им значения в header.php?
если проблема в каких то функциях, то их либо нужно обьявлять глобальными, либо выносит отдельно в клас.
 
а что мешает присаваевать им значения в header.php?
если проблема в каких то функциях, то их либо нужно обьявлять глобальными, либо выносит отдельно в клас.
Не, как я понял при вызове 'header.php' формируется шапка.
Как кривой вариант на простой- заменять в шапке, str_replace функцией заменять <head>, на <head>'.$metadesc.$metakeys
Как правильный вариант- по другому сделать формирование html страницы. Можно посмотреть и почитать как это сделанно в других cms.
 
а что мешает присаваевать им значения в header.php?
если проблема в каких то функциях, то их либо нужно обьявлять глобальными, либо выносит отдельно в клас.

1. Шапка <head></head> грузится первой.
2. Разделов много, динамические мета тэги грузятся только в разделе статей.
3. Статьи вызываются где-то уже далеко от верха, в середине кода, получается надо как-то вернуться в <head></head> и подставить туда значения <meta name="keywords" content="'.$article_metakeys.'">.
4. Получается надо как-то вернуться в прошлое и подставить переменные.
 
Буферизация вывода по средствам ob_start() и ob_get_contents()

ob_start();
include('main.php');
$content = ob_get_contents();
include('header.php');
print $content;
include('footer.php');

Ну как-то так. Хотя изначальный подход не очень...
 
Буферизация вывода по средствам ob_start() и ob_get_contents()
ob_start();
include('main.php');
$content = ob_get_contents();
include('header.php');
print $content;
include('footer.php');
Ну как-то так. Хотя изначальный подход не очень...
Если идти в лоб - то это самый нормальный вариант, но лучше переделать структуру:

1. Шапка <head></head> грузится первой.
2. Разделов много, динамические мета тэги грузятся только в разделе статей.
3. Статьи вызываются где-то уже далеко от верха, в середине кода, получается надо как-то вернуться в <head></head> и подставить туда значения <meta name="keywords" content="'.$article_metakeys.'">.
4. Получается надо как-то вернуться в прошлое и подставить переменные.
Если в header.php происходит только вывод, что мешает вывести его после присвоения переменных?
Т.е. получить данные из базы, предполагаю, что так происходит, присвоить переменные, потом подиклюдить header.php с выводом шапки, потом уже выводить саму статью.

Вообще, лучше пересмотреть структуру программы, чтобы сначала вся информация выбиралась из базы (записывалалсь в базу), а потом уже выводилась, так вышеозначенная проблема будет решена.
 
еще один вариант решения, немного изменить последовательность действий.

include('articleDB.php') <<<<<
include('header.php');
include('main.php');
include('footer.php');

при этом в файле articleDB.php ничего не отображать, а только обьявить переменные с данными статьи, и уже далее (ниже по коду) использовать эти данные там где это нужно, в том числе в main.php также уже будет доступен текст статьи, как и в header.php, её мета данные

одна мое мнение - такой хардкодинг - не предел мечтаний для "знающего php"
 
еще один вариант решения, немного изменить последовательность действий.
include('articleDB.php') <<<<<
include('header.php');
include('main.php');
include('footer.php');
при этом в файле articleDB.php ничего не отображать, а только обьявить переменные с данными статьи, и уже далее (ниже по коду) использовать эти данные там где это нужно, в том числе в main.php также уже будет доступен текст статьи, как и в header.php, её мета данные
одна мое мнение - такой хардкодинг - не предел мечтаний для "знающего php"

Пока сделал так, но должно же быть какое-то более профессиональное решение.. непонятно пока :(
 
но должно же быть какое-то более профессиональное решение.. непонятно пока
более професиальный подход это работа с шаблонизаторами, там ты четко отделяеш кодинг от выводимого шаблона. Попробуй покопать в эту сторону.
 
Это я так понимаю ООП имеется ввиду или нет??

Можно поподробнее как тема называется, хочу почитать :)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху