Jump to content
  • 0

Упростить код


Softlink
 Share

Question

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


<?php
switch ($page){
case "index":
echo "Первый title";
break;

case "about":
echo "Второй title";
break;

case "bla-bla-bla":
echo "Третий title";
break;
----------------------------
default:
echo "По умолчанию";
;}?>

И подключал таким образом:

<title>
<?php
include ("style/title.php");
?>
</title>

Сейчас надо повторить маневр. Однако, я все-таки не спец в php и у меня есть подозрения, что это говнокод(хоть и работал исправно). И ситуация такая, что страниц ну очень много.

Теперь вопрос(-ы):

1) это можно как-то упростить?

2) это нужно как-то упростить или вполне себе нормальное решение?

Буду благодарен за ответы.

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

многое зависит от того, на чем построена база (если она вообще конечно есть, подозреваю что нету :) )

Да какая там база)) Там набор страниц. На cms ставить почему-то не хотят. Вот такие дела.

Link to comment
Share on other sites

  • 0

А что если хранить тайтлы в текстовых файлах (типа index.txt, about.txt) с тайтлом внутри? Если нет такого текстовика - default.

Но это будет файловая база к сайту (по тайтлам).

Link to comment
Share on other sites

  • 0

1) это можно как-то упростить?


<?php
$title = "По умолчанию";

$pageTitles = array(
"index" => "Первый title",
"about" => "Второй title",
"bla-bla-bla" => "Третий title",
// и т. д.
);

if (array_key_exists($page, $pageTitles)) {
$title = $pageTitles[$page];
}

echo $title;
?>

Link to comment
Share on other sites

  • 0

Спасибо всем.

Вот буквально только что сказали, что страницы не должны лежать в одной папке(как это работало у меня) и подключаться, а должны быть в корне, чтобы адрес был типа www.site.ru/stranica.php. Теперь сижу соображаю как сделать :)

Логика подсказывает, что нам нужен url страницы, потом его сравниваем и выводим нужный титл.

Эххх, полез копать учебники и гугл, но если кто натолкнет на мысль, буду признателен.

Link to comment
Share on other sites

  • 0

В общем, пока задачу решил в лоб:


<title>
<?php echo $title ?>
</title>

А на странице указываем этой переменной значение:


<?php
$title="Первая страница";
?>

Там они все равно весь контент руками заполняют. Но я не теряю надежды собрать более простую конструкцию))

Link to comment
Share on other sites

  • 0

В общем, пока задачу решил в лоб:


<title>
<?php echo $title ?>
</title>

А на странице указываем этой переменной значение:


<?php
$title="Первая страница";
?>

Там они все равно весь контент руками заполняют. Но я не теряю надежды собрать более простую конструкцию))

Может быть так?


<?php
$scriptname = $_SERVER['PHP_SELF'];
$path_details=pathinfo($scriptname);
$page = $path_details['filename'];

$title = "По умолчанию";

$pageTitles = array(
"index" => "Первый title",
"about" => "Второй title",
"bla-bla-bla" => "Третий title",
// и т. д.
);

if (array_key_exists($page, $pageTitles)) {
$title = $pageTitles[$page];
}

echo $title;
?>

  • Like 1
Link to comment
Share on other sites

  • 0

pavuk, не работает. Но я не совсем понимаю, что есть что здесь.

1) получаем данные с сервера

2) потом вычленяем из них информацию о файле

3) зачем нам переменная $page?

4) понятно - массив с титлами

5) не понял совсем как это работает)

Link to comment
Share on other sites

  • 0

pavuk, не работает. Но я не совсем понимаю, что есть что здесь.

1) получаем данные с сервера

2) потом вычленяем из них информацию о файле

3) зачем нам переменная $page?

4) понятно - массив с титлами

5) не понял совсем как это работает)

Переменная $page содержит название страницы. Например для www.site.ru/index.php, $page = 'index', для www.site.ru/stranica.php, $page = 'stranica' и т.п..


if (array_key_exists($page, $pageTitles)) {
$title = $pageTitles[$page];
}

Проверяем установлен ли титул для $page, если да, то меняем $title по умолчанию на найденный.

Выводим $title;

Link to comment
Share on other sites

  • 0

Я делала так, хотя я я тоже далека от php (наверняка тоже говнокод )) )


<?php
$curPage = $_SERVER['PHP_SELF'];

$titles = array(
'about' => 'Золотые ночи твоего города',
'news' => 'Новости',
'gallery' => 'Фотогалерея',
'menu' => 'Меню',
'contacts' => 'Контактная информация'
);

foreach ($titles as $val => $key) {
if (strstr($curPage, $val)) {
$curTitle = $key;
break;
} else {
$curTitle = 'Золотые ночи твоего города';
}
}
?>
<title><?php echo $curTitle ?>— Gold Club</title>

about, news и т.п. соответствуют названиям страниц. Т.е. about.php, news.php

Т.е. по сути похоже на код выше :)

  • Like 1
Link to comment
Share on other sites

  • 0

А вот такой вопрос.. если сделать простенький шаблон? Получить все нужные данные и в конце его подцепить

ну что-то типа

файл обработки

$title = '...';
//.....
$content = '...';
//.....
$head = '...';
//.....
$footer = '...';
//.....
$menu = '...';
// и в конце подключаем шаблон
include ("template.php");

а сам файл шаблона template.php примерно такой

<!DOCTYPE html>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<div>
<div><?php echo $head ; ?></div>
<div>
<div><?php echo $menu ; ?></div>
<div><?php echo $content ; ?></div>
</div>
<div><?php echo $footer ; ?></div>
</div>
</body>
</html>

Link to comment
Share on other sites

  • 0

Gold Dragon, все примерно так и есть. Я уже собрал шаблон. И сделал подключение страниц и в принципе даже мой говнокод подходил бы, если бы не прямые урлы.

pavuk, Оксана, ваши варианты тоже рабочие. Я сразу затупил немного с вариантом pavuk))

Спасибо.

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