четверг, 12 мая 2016 г.

PHP вывод html кода только на главной странице

Если статический сайт на php файлах, с подключаемыми через include файлами, типа header.php и т.п., то как сделать, чтобы какой-то контент (хтмл код, текст) выводился только на главной или на другой определённой странице?


Для тех, кто не знает php и знать пока не хочет (как я), рабочий вариант, найденный в интернете, среди кучи подобных вопросов и не рабочих или полу-рабочих ответов:


<?php
//разбиение строки после имя сайта по слэшам
$earray = explode("/", $_SERVER['REQUEST_URI']);
$filename = $earray[count($earray)-1]; // Это имя файла
//Если эта страница index.php или / :
if ($filename == 'index.php' || $filename == '')
{?>
Текст или код виден только на главной странице
<? }?>


Если на главной и остальных страницах должен быть разный текст, например, разные стили блока, то после строки с if заменить на:

{?> 
Код для главной страницы 
<?} else {?>
 Код для всех остальных страниц 
<?}?> 


+ такого способа, что он будет работать не только в корневой директории сайта, но и, например, в отдельной папке на локалхосте.
- в том, что, наверное не пойдёт, если на сайте есть вложенные папки с такими же названиями файлов. В этом случае, более простой вариант:

<?
if ($_SERVER['REQUEST_URI'] == '/' || $_SERVER['REQUEST_URI'] == '/index.php' )

{?>
Текст виден только на главной странице
<?}?>



Если нужно, чтобы разное содержимое (html код) было на разных страницах сайта, например разные тайтлы, то  будет примерно так:

 <?php
$earray = explode("/", $_SERVER['REQUEST_URI']); 
$filename = $earray[count($earray)-1];
if ($filename == 'page1.php')  
{?>
<title>Первая страница</title>
<? }
elseif ($filename == 'page2.php')
{?>
<title>Вторая страница</title>
<?
elseif ($filename == 'page3.php')
{?>
<title>Третья страница</title>
<? }?> 
...

Комментариев нет: