Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

Aktivity
Avatar
Rabtor
Člen
Avatar
Rabtor:10.4.2018 18:49

Zdravím vás
Mám podobný layout podle tohoto tutorialu: https://www.itnetwork.cz/…dani-stranek
<!DOCTYPE html>
<html lang="cs-cz">

<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
<title>HoBiho portfolio</title>
</head>

<body>
<header>
<div id="logo"><h1>Ho­Bi</h1></div>
<nav>
<ul>
<li><a href="index.php?stran­ka=domu">Domů</a></li>
<li><a href="index.php?stran­ka=omne">O mně</a></li>
<li><a href="index.php?stran­ka=dovednosti">Do­vednosti</a></li>
<li><a href="index.php?stran­ka=reference">Re­ference</a></li>
<li><a href="index.php?stran­ka=kontakt">Kon­takt</a></li>
</ul>
</nav>
</header>

<article>
<div id="centrovac">
<header>
<h1>O mně</h1>
</header>

<section>
<?php

?>
</section>
<div class="cistic"></div>
</div>
</article>

<footer>
Vytvořil ©HoBi 2013 pro <a href="http://­itnetwork.cz">IT­NETWORK.CZ</a>
</footer>
</body>
</html>

Chci se zeptat jak dynamicky měnit titulek v hlavičce, při načtení obsahu z různých podstránek. Později se to řeší formou databáze, ale mě by zajímalo, zda existuje jiné řešení, popřípadě jestli by mi někdo neposkytnul přesné řešení jak na to. Moc by jste mi pomohli :) děkuji.

 
Odpovědět
10.4.2018 18:49
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Rabtor
Jan Lupčík:10.4.2018 21:37

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. ;)

Nahoru Odpovědět
10.4.2018 21:37
TruckersMP vývojář
Avatar
Rabtor
Člen
Avatar
Odpovídá na Jan Lupčík
Rabtor:11.4.2018 20:08

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["p­age"]) || !file_exists("pod­stranky/".$_GET["pa­ge"].".php")) { ?>
<meta name="description" content="popisek" />
<meta name="keywords" content="něco, něco" />
<title>titulek</ti­tle>
<?php } else {
$_GET["info"] = $_GET["page"];
include "podstranky/"­.$_GET["page"]­.".php";
unset($_GET["in­fo"]);
}
?>
a tento kód do podstránek:
<?php
if(isset($_GET["in­fo"])) { ?>
<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 :)

 
Nahoru Odpovědět
11.4.2018 20:08
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Rabtor
Jan Lupčík:12.4.2018 7:59

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.

Nahoru Odpovědět
12.4.2018 7:59
TruckersMP vývojář
Avatar
Odpovídá na Jan Lupčík
Neaktivní uživatel:13.4.2018 19:31

A co když mu zadám /?server&commands :D

Pokud to chceš řešit takhle, tak tam aspoň přihoď break :)

Nahoru Odpovědět
13.4.2018 19:31
Neaktivní uživatelský účet
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20.4.2018 14:38

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
?>
 
Nahoru Odpovědět
20.4.2018 14:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.