Diskuze: Jak dynamicky měnit titulek při načtení podstránky v php?
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
dříve jsem používal něco podobného, co je popsané v tomto
článku:
https://www.itnetwork.cz/…dani-stranek
S tím rozdílem, že já jsem si tam přidal pole, kde byly vlastně povolené
stránky. Bezpečnostně je to taky pořešené, protože povoluješ jen něco.
K těm stránkám jsem si pak přiřadil popisky, titulky a podobné
srandičky.
Můžeš se na to mrknout:
$avaliable = array(
'server' => array('Titulek 1', 'Nějaký ten popisek :)'),
'commands' => array('Titulek 2', 'Nějaký ten popisek :)'),
// ...
);
$page = 'pages/'; // Obsah stránky (ve složce pages)
$info = array(); // Info stránky
foreach ($avaliable as $file => $params)
{
if (isset($_GET[$file]))
{
$page .= $file . '.php';
$info = $params;
}
}
// Pokud nebyla nalezena daná stránka - není info
if (!$info)
{
// Přesměruje, aby v adrese nic nebylo
if ($_SERVER['REQUEST_URI'] != '/')
{
header('Location: /');
exit;
}
$page .= 'news.php';
$info = $avaliable['news'];
}
A pak normálně v HTML načteš ty informace do
<head>
:
<title><?= $info[0] ?></title>
<meta name="description" content="<?= $info[1] ?>" />
Taky nesmíš zapomenout načítat obsah té stránky v
<body>
:
<?php require $page; ?>
Jak si můžeš všimnout, tak vlastně šablona zůstane stejná, bude se
měnit jen ten titulek, popisek a obsah stránky.
Není to nic profesionálního, ale dřív mi to stačilo. Si to nějak uprav,
jak ti to bude vyhovovat.
Snad ti má odpověď pomohla. Kdyby něco, ptej se.
Takže ten kód co jste mi poslal výše mám vložit do indexu? Nezlobte se nejsem v php ještě
tak zběhlý
Já jsem dostal ještě i jiné řešení budu rád, když se mi na to
podíváte :
tento kód mám vložit do indexu mezi tág <head>:
<?php
if(!isset($_GET["page"]) ||
!file_exists("podstranky/".$_GET["page"].".php")) { ?>
<meta name="description" content="popisek" />
<meta name="keywords" content="něco, něco" />
<title>titulek</title>
<?php } else {
$_GET["info"] = $_GET["page"];
include "podstranky/".$_GET["page"].".php";
unset($_GET["info"]);
}
?>
a tento kód do podstránek:
<?php
if(isset($_GET["info"])) { ?>
<meta name="description" content=popisek podstránky." />
<meta name="keywords" content="kličové slova podstránky" />
<title>titulek podstránky</title>
<?php }
děkuji za názor
Ahoj,
příště prosím vkládej kód do značek [ code ]
(bez
mezer), aby to bylo lépe čitelné.
Ano, ten kód se má vložit do indexu.
A moje řešení mi přijde přehlednější a bezpečnější. Upřímně
nevím, co by se stalo, kdybych třeba zadal do $_GET
parametru ve
tvém řešení hodnotu '../.htaccess'. V tom mém máš alespoň pouze
povolené stránky a URL pak vypadá třeba jako /?server.
A co když mu zadám /?server&commands
Pokud to chceš řešit takhle, tak tam aspoň přihoď break
Ten puvodni template je spis zjednoduseny. Kdyz chces neco komplexnejsiho, je lepsi pouzit jiny system. Treba tridy a na zaver to vyrenderovat. Takovy priklad renderovani sablony
<?php
// template, !!! jednoduche uvozovky psat jako \'
$tpl = '
<title>{title}</title>
<nadpis>{nadpis}</nadpis>
<section>{section}</section>
';
$data = array(
'title' => 'moje title',
'nadpis' => 'muj nadpis',
'section' => 'Moje sekce'
);
// pridani zavorek {}
$keys = array();
foreach ($data as $key=>$value) {$keys[] = '{'.$key.'}';}
// render do $page
$page = str_replace($keys, array_values($data), $tpl);
echo $page;
echo '<pre>';
var_dump(array_values($keys));
var_dump(array_values($data));
// http://php.net/str_replace
?>
Zobrazeno 6 zpráv z 6.