Изменение title сайта на PHP
В общем я новичок в PHP и ещё пока только учусь и многое могу не знать. Так вот. Я написал простенький блог с админкой своему брату на PHP.
Вроде всё работает отлично, но есть одна большая проблема: на любой странице блога title всегда одинаковый. Это очень не хорошо для поисковиков и вообще в целом не удобно.
Пробовал решить эту проблему следующими способами:
У меня есть файл index.php
Его код выглядит следующим образом:
require_once 'inc/header.php' ?> include $view. '.php' ?> require_once 'inc/sidebar.php' ?> require_once 'inc/footer.php' ?>
На любой странице блога есть шапка, сайдбар и футер. Всегда меняется только контент и поэтому я там подключил переменную $view.
Короче сначала я подключаю шапку(верхнюю часть сайта в которой находится title, подключение стилей, скриптов, потом там находится сама шапка и меню). Потом в div теге подключаю переменную $view в которой в зависимости от того, куда перешёл пользователь меняется контент. Дальше я подключаю сайдбар. И в конце подключаю футер.
В файле header.php, как я сказал выше в теге head прописан title сайта, который на каждой странице одинаковый, как и вся верхняя часть сайта.
А мне нужно что-бы к примеру, когда пользователь переходит на статью с названием «Hallo world!» у него в названии(title) сайта выводилось название этой статьи.
Или когда пользователь переходит в рубрику, что-бы у него в title сайта выводилось название рубрики и так далее. Короче нужно что бы title менялся в зависимости от места нахождения.
Я пробовал решить эту проблему с помощью переменной $title:
То есть я в начале файла index.php прописал следующий код:
Такой вариант работает, но только если у меня один вид, но у меня ещё есть вид cat.php(вид категории), page.php(Вид страницы из меню), search.php(Вид поиска для которого тоже нужно отдельный title) ну и главная страница на которой должно быть просто написано «Блог Олега Сунцева»
А в переменной $title можно добавить только одно значение.
Я конечно могу добавить там ещё значения типа » и «, но это будет не так, как мне надо да и к тому же, как я добавлю там название сайта. В общем так не выйдет.
Был бы хороший вариант, если бы код «» можно было бы добавить в каждый из видов отдельно, но так как вид подключается после header.php я не могу так сделать.
Пожалуйста, помогите мне разобраться, как решить эту проблему.
Только решение по средствам JQuery мне не подойдёт.
Нужно, что бы браузеры определяли страницы, как разные с разными заголовками.
Изменение «title» после индексации сайта
Здравствуйте! Хочу поменять содержимое тега "title" у сайта который уже проиндексирован. Какие.
изменение TITLE на многих страницах сайта сразу
Есть сайт, не мной сделанный, надо его по НЧ прокачать. В TITLE страниц есть лишнее, которое надо.
Как в новом WordPress с его php wp_head(); убрать из title название сайта в рубриках?
Ребята, а кто подскажет как в новом WordPress с его <?php wp_head(); ?> убрать из title название.
Изменение title и description
Я изменил на своем сайте title и description, скажите когда поисковики обновлят данные по сайту?
Проблема исходит из кривой архитектуры. Почитайте про MVC и роутинг в PHP.
Сообщение от CyberEeOne
Сообщение от CyberEeOne
Если можете с $articles[‘name’], значит можете и с остальными. В шаблоне оставляете , а в остальных файлах (cat.php, page.php и т.п.) в начале файла прописываете:
$title = 'здесь уникальный текст для этой страницы';
Затем подключаете хеадер. Должно работать.
Сообщение от CyberEeOne
Про MVC читал. Объясните мне, пожалуйста в чём заключается кривость моей архитектуры? Может быть я чего-то недопонял.
Сообщение от Jodah
$title = 'Уникальный текст для этого вида';
а в header.php между тегами title напишу , то ничего работать не будет, так как браузер логически по очерёдности сначала загружает header.php, а потом уже вид(Тот вид на котором был пользователь)
Я не могу сделать, что-бы сначала загружался вид, а потом header.php, потому что нельзя, что бы head был внутри body и вообще вся структура кода сломается.
?=$title?>
По сути в переменной $title можно добавить все значения, но мне такой вариант не подходит, так как нужно что-бы для каждого вида был только его личный заголовок. Мне не нужно, что-бы на каждом виде были все заголовки для всех видов сразу сразу(Например: Блог Олега СунцеваОбо мнеНовая статьяНовостиПоиск). В моём случае надо, что бы в переменной $title было только то значение, которое относится к данному виду. То есть, если человек находится на странице статьи(article.php), то код должен выглядеть так: $title = $articles[‘name’];, а если человек находится на странице категории, то соответственно код должен выглядеть так: $title = $category_name[0][‘category_name’];
Это конечно можно реализовать, как вы сказали. То есть добавить
$title = 'Уникальный текст для этого вида';
На каждый из видов(страниц), но опять же как я уже говорил выше, тогда нужно подключать header.php после подключения вида, но так не получится, потому что структура кода ломается.
Возможно в этом и вправду нету логики. Может я что то не понимаю. Объясните, пожалуйста, почему Вы не поняли логику?
Сообщение от Jodah
По сути кавычки там были не нужны, но например, если я хочу динамически вывести название статьи на которой нахожусь и к примеру дальше какой нибудь статический текст типа «- Блог Олега Сунцева», то кавычки будут нужны.
Если я что-то не правильно понимаю, то пожалуйста объясните по подробней, что я не так делаю и как сделать правильно.
Сообщение от CyberEeOne
Сообщение от CyberEeOne
Сами ответили на свой вопрос. Кстати, интересно, что вы имеете ввиду под видом.
По MVC. Сначала идёт запуск контроллера, затем внутри него происходит получение данных от моделей (например из БД) и передача этих данных шаблонам.
Но даже если отойти от MVC, в любом случае нужно сначала получить данные, а затем уже подставлять их в шаблон. А у вас наоборот, сначала вывод шаблона, затем получение данных для него.
Сообщение от Jodah
На сайте меняется только область контента.
Видами я называю эту область контента.
Если пользователь находится на странице категории, то тма отображдается список статей этой категории, а если на странице статьи, то там в этом же месте отображается статья.
Всего у меня 5 видов:
home.php — Домашняя страница. На ней отображаются все статьи;
cat.php — Страница отдельной категории. На ней отображаются статьи отдельной категории на которую перешли;
search.php — Страница с результатами поиска;
page.php — Страница с контентом из меню. К примеру «Обо мне»;
article.php — Страница отдельной статьи.
Сообщение от Jodah
По MVC. Сначала идёт запуск контроллера, затем внутри него происходит получение данных от моделей (например из БД) и передача этих данных шаблонам.
Вот код основного файла index.php, который находится в корне сайта:
1 2 3 4 5 6 7 8 9 10 11 12
//Запрет прямого обращения define ('OLEG_SUNTSEV_BLOG', TRUE); //Подключение файла конфигурации require_once 'config.php'; //Подключение контроллера require_once CONTROLLER; ?>
Вот код файла конфигурации — config.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
defined('OLEG_SUNTSEV_BLOG') or die('Access denied'); //Домен define ('PATH', 'https://suntsev.ru/'); //Модель define ('MODEL', 'model/model.php'); //Контроллер define ('CONTROLLER', 'controller/controller.php'); //Вид define ('VIEW', 'views/'); //Стандартный шаблон define ('TEMPLATE', VIEW.'blog-temple/'); //папка с картиками сайта define ('SITEIMG', PATH.'userfiles/site_img/'); //папка с основными картинками статьи define ('ARTICLEIMG', PATH.'userfiles/article_img/baseimg/'); //папка с иконками для рубрик и социальных сетей define ('USERICO', PATH.'userfiles/user_icons/baseico/'); // максимально допустимый вес загружаемых файлов - 1 Мб define ('SIZE', 1048576); // Сервер БД define ('HOST', 'localhost'); //Пользователь define ('USER', 'user'); //Пароль define ('PASS', '***'); // БД define ('DB', 'BD_name'); //Название блога - title define ('TITLE', $site[1][0]); //Количество статей на страницу define('PERPAGE', 5); // папка шаблонов административной части define('ADMIN_TEMPLATE', 'templates/'); // Подключение к базе данных mysql_connect(HOST, USER, PASS) or die('No connect to Server'); mysql_select_db(DB) or die('No connect to DB'); mysql_query("SET NAMES 'UTF8'") or die('Cant set charset');
Тот index.php где подключается header.php и всё остальное находится в папке views/blog-temple
В файле controller.php я подключаю файл model.php
в model.php я получаю данные из БД и передаю эти данные шаблонам уже через controller.php
Вроде я сначала получаю данные, а потом вывожу шаблон. Может быть я снова что-то упустил?
Добавлено через 1 минуту
Сообщение от Jodah
Как сделать на php уникальные заголовки
Урок, как сделать на php уникальные заголовки, описания и ключевики для каждой страницы сайта.
Из трех простейших и даже наивных примеров создания сайта на пхп стоит выделить особым уроком тему оптимизации, а именно написания уникальных заголовков, описаний и ключевых запросов для каждой страницы на php.
Хочу подчеркнуть, что все эти и последующие уроки необходимы людям, совершенно не имеющим представления о пхп. И не являются руководством к действию, а скорее служат для ознакомления. Те, кто приподнял завесу таинства программирования, следует обращаться к официальным источникам как www.php.net и русскоязычный сайт www.php.spb.ru. Очень полезные ресурсы для практического изучения пхп у меня перечислены и на странице ссылки.
Вспомним, что мы научились делать в 1уроке.
Мы можем собрать страничку с помощью функции include();
include(«header.php»); //подключили шапку, заголовок страницы
?>
Это шаблон нашего сайта. Тут у нас идет основная информация
include(«footer.php»); // подключили подвал
?>
Можно еще раз прочитать 2 урок, где мы ознакомились с использованием переменных пхп для вставки мета тегов. Все мета теги:
Заголовки — ,
описания —
и ключевики —
пишутся в файле header.php.
Но нам нужно, чтобы для каждой страницы были уникальные названия, описания. Делаем это так:
$title = «Тег TITLE Вашего страницы сайта»; //задаем переменной $title значение заголовка страницы
$description = «Описание страницы сайта»; //задаем переменной $description значение описания страницы
$keywords = «Ключевые слова страницы сайта»; //задаем переменной $description значение ключевиков страницы
include(«header.php»); //подключили шапку, заголовок страницы и передаем значения мета тегов.
?>
// Изменяемое название в основном блоке, не обязательно.
Это шаблон нашего сайта. Тут у нас идет основная информация
include(«footer.php»); // подключили подвал
?>
Не забываем в блоке header.php менять теги title, description, keywords на
Таким образом, достаточно задать для каждой страницы уникальное значение переменным $title, $description, $keywords и блок header.php будет принимать их изменяемые значения.
Начальное представление о создании пхп сайтов мы получили. Уровень этих уроков самый начальный и для того, чтобы сделать серьезный ресурс этого, конечно, очень и очень мало. И если Вы не собираетесь выучиться на программиста, а Ваша цель делать сайты для собственного удовольствия и получения дохода, а также делать сайты на заказ, то стоит обратить внимание на изучение готовых движков. Этой теме я посвящу еще много часов на своих страничках.
Примечание. Поправки к урокам от гуру пхп принимаются в комментариях только в вежливой форме. Главное, чтобы они были полезны для посетителей сего сайта. А для глубокого изучения php есть качественные с профессиональной точки зрения курсы. Видео курс от Евгения Попова является одним из лучших.
Как выглядит на практике создание сайтов на пхп посмотрите урок Создание меню для сайта на php и скачайте архив шаблона сайта для изучения в денвере.