Autor Zpráva
Vitality77
Profil *
Dobrý den,
Mám vytvořenou stránku v php jeho struktura je taková, že vkládám obsah stránky do div-obsahu který je uprostřed index.php. Ale chtěl bych přijít na systém jak pro každou stránku pomoci třeba proměnných nebo čehokoli vložím meta tagy a to description a title tag. Uměl bych to vyřešit sám ale raději bych o tom někde přečetl nebo od někoho si nechal poradit. Tak mi prosím poradte kde najdu nějaký článek nebo stránku, která to rozumně objasní. Nebo třeba je lepší mít zapsaný index úplně jinak? Někde jsem viděl index.php ve funkcích jako třeba header() pak obsah() a footer(). Nebo uveďte prosím příklad jak to děláte vy, jestli vám to vyhovuje a já už se v tom zorientují :)
index.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
<?php
if (!isset($_GET['page']))
      {
        $page="uvod";
      }
      else
      {
        $page = $_GET['page'];         
      }      
if (!isset($_GET['sekce']))
      {
        $sekce="";
      }
      else
      {
        $sekce = " > ".ucfirst($_GET['sekce']);         
      }
       
$titulek = ucfirst(str_replace('_', ' ', $page)).$sekce;
?>  
  <meta http-equiv="Content-language" content="cs">  
  <meta http-equiv="content-type" content="text/html; charset=utf-8">   
  <title><?php echo "VP | ".$titulek; ?></title>
  <meta name="description" content="popis webů.">
  <meta name="robots" content="all,follow">
  
  <link rel="stylesheet" href="/moje_stranka/style.css" type="text/css" media="screen" /> 
  </head>
  <body>

<div id='container'>
<?php include ("pages/menu.php");  

echo "<div class='clr'></div><div class='obsah'>";
     
        $file = "pages/".$page.".php";
        if (file_exists($file))
          {
            include ($file);
          }
            else { include ("pages/uvod.php"); }         
              
echo "</div>";

               ?>

</div>
  </body>
  
</html>
Helmy
Profil
Takže pokud dobře chápu tak děláte celý web v index.php?
Tak to bych řešil asi následovně
echo '
  <title>'.$titulek.'</title>
  <meta name="description" content="'.$popis.'">
  <meta name="robots" content="all,follow">';
  if (!isset($url) { 
  $title="neco";
  $popis="neco";
  }
  if($url=="uvod") {
  $title="uvod";
  $popis="neco";
  }
jenikkozak
Profil
Helmy:
Tohle ti přece nemůže nijak normálně fungovat.
Helmy
Profil
no myslel jsem to takhle, řekneme když neni v indexu zadaná url
if(isset($_GET['url']) AND $_GET['url']!='')
{
$url = mysql_real_escape_string($_GET['url']);
}
$array = array("hotely", "motely")
if (!isset($url)) {

///vybereme z databaze novinky
$query0 = mysql_query(...)
$title="novinky";
}
///pokud je zadaná url
if((isset($url)) AND (in_array($url ,$array)))
///a ted napřiklad vybereme z databaze vsechny hotely
$query = mysql_query(...)
$title=$url



a pak pod každou podmínku zvlášť vypíšeme článek...No takhle bych to řešíl já, ale némam tolik zkušeností a určitě tady někdo poradí líp než já.
Vitality77
Profil *
pro Helmy:
Z prvního příkladu chápu že nadefinují titulek pro každou stránku sám. Když url je uvod tak titulek taky, když např o mně tak titulek taky. Zrovna to tak mám.. Jde mi spíš o ten description.
Z druhého příkladu moc ne. Databázi momentálně na stránce nevyužívám. Stránky jsou uložený v souborech a jmenují se stejně jako proměnna kterou dostanu v $_GET['page'].
Jde mi prostě o to, že obsah stránky volám uprostřed stránky. Description chci mít prvních třeba 150 charakterů z přislušné stránky. Když stránka začíná třeba <p> blabla blabla blabla blabla </p> tak description bude obsahovat tenhle odstavec, když ho změním tak description taky. Prostě funkci která vybere začátek stránky a vrazí to do description nebo něco podobného..
Helmy
Profil
Tak proč si v souboru který vkládate do prostřed stránky, neoznačite první odstavec do proměnné, a do description dáte tu proměnnou.
Xperia
Profil
Stručně a jednoduše, snad Ti to pomůže.
INDEX.PHP

<?php
$file = $_GET['page'].".php";
$description = getFile($file);
/* Pouzij neco na odstraneni HTML tagu */
$description = substr($description,0,150);

function getFile($file) 
{ 
ob_start(); 
include ("pages/".$file); 
$content = ob_get_contents(); 
ob_end_clean(); 
return $content; 
}
?>

HTML KOD

... <?php echo $description; ?>
juriad
Profil
Vitality77:
a nebylo by lepší do toho souboru něco.php vlóžit obecně kus hlavičky?
Například:
<!--head>
<meta name="description" content="Popis stránky">
<title>Titulek stránky</title>
</head-->
<p>
Obsah stránky
</p>
Všimni si, že hlavička je šikovně zakomentovaná, takže v body bude úplně ignorovaná.

Pak Xperiho funkcí getFile získáš obsah includované stránky a proženeš ji regexem:
#<!--head>(.*)</head-->#s
A nalezenou část vypíšeš do hlavičky.

<html>
<head>
<?php
$obsah = file_get_contents('p.txt');
if(preg_match("#<!--head>(.*)</head-->#s", $obsah, $hlavicka)) {
    echo $hlavicka[1];
}
?>
</head>
<body>
<?php
echo $obsah;
?>
</body>
</html>
Jan Tvrdík
Profil
Nebylo by jednodušší použít nějaký rozumný šablonovací systém? (Twig nebo Latte)
Xperia
Profil
Tak jsem tady na fóru, ve FAQ našel mnohem jednodušší způsob ale juriadova rada také není vůbec špatná
Mám použitelný skript na pěkné URL?
Vitality77
Profil *
Děkují Xperiovi a juriadovi za dobrý nápad,
Už si s tím pohraju :-)
A co nějaký ten šabonovací systém? Máte s tím někdo zkušenost? Je to přehledné a snadné k použití?
Jan Tvrdík
Profil
Vitality77:
A co nějaký ten šabonovací systém?
Vytvořil jsem ti jednoduché demo (ke stažení i jako zip archiv), kde vidíš srovnání Latte, Twigu a čistého PHPka.

Použití je pro všechny stejné, stačí includnout odpovídající soubor init.php a zavolat
renderTemplate('nazev-sablony', $parametry);

Je tam i nějaké měření výkonu, kde je vidět, že oba šablonovací systémy jsou poměrně nenáročné (vykreslení šablony trvá méně než 20 ms a vystačí si s méně než 1 MB paměti). Čisté PHP je ale pochopitelně ještě rychlejší.
Vitality77
Profil *
Je to zajímavé, ale pro mou nynější znalost php je dost komplikované.. Momentálně potřebují vložit hotovou stránku a pomoci rady od Xperia a Juriada jednoduše upravím kod podle sebe. Každopadně děkují za ochotu, někdy tomu věnují trochu času :-)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: