Dynamické skládání stránek pomocí include - díl II

 |  PHP: Základy  |  7 783x
_

V prvním dílu jsem ukázal jednoduchý návod na statické stránky bez použití databáze. V dnešním pokračování náš mikrosystém v jazyce PHP vylepšíme ještě o další úroveň - jak v jednoduchosti nasazení, tak v efektivitě. Nebudeme již řešit zbytečné mod_rewrity a podmínky pro načítání šablon druhé úrovně.  Taktéž si systém připravíme na multijazyčnost. K tomu všemu postačí jediný index.php jakožto jádro aplikace a zároveň kontroler, .htaccess a jedna povinná šablona.

Hned ze začátku se do toho pustíme chytře. V prvé řadě explicitně povolíme výpis chybových hlášení, a to i chyby typu E_STRICT - zapovězené funkce. Například taková ereg_replace již v PHP 6 nemá být, tak proč ji používat, když máme mnohem rychlejší preg_replace. Dále deklarujeme globální pole $tpl. Do něj budeme ukládat vše, co se někde někam ukládat bude. Důvod je jednoduchý: kdekoli v šabloně si ho můžeme vypsat funkcí print_r() a hned dostaneme seznam všech proměnných, které jsme vytvořili. Nezapomeneme ani na referenci k aktuálnímu adresáři, pro správné includování.

/**
 * povolíme chybová hlašení
 * zajímají nás i použití zapovězených funkcí, proto přidáme E_STRICT 
 **/
ini_set('display_errors',1);
error_reporting(E_ALL | E_STRICT);

global $tpl;

$tpl['include_path'] = dirname(__FILE__).'/';

Nyní ale zpět k aplikaci. Jak jsem již zmiňoval, budeme potřebovat soubor .htaccess. V něm spustíme rewrite engine (hezké url) a zakážeme přímé volání šablonových souborů. Sám jsem si již zvykl na příponu .phtml; mohu tak efektivně zakázat spouštění skriptů, které ke spouštění nejsou určeny.

Soubor .htaccess

<FilesMatch "\.phtml$">
  Order Deny,Allow
  Deny From All
</FilesMatch>

RewriteEngine On 
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]

Pravidlo na přepis url je zde jediné: vše budeme směřovat na index.php. Každý řetězec, například i "kategorie/podstrana/" se převede do proměnné $_GET['path'].

Rozparsování GET proměnné

Ani v tom nehledejte nic těžkého. Není nutné vytvářet a složitě přepisovat několik GET proměnných, když můžeme jen jedinou uložit do pole. Odmažeme koncové lomítko (aby se nevytvářel prázdný index) a funkcí explode rozřežeme string podle lomítka. Při té příležitosti si do jiné proměnné uložíme i ošetřený string v původním znění.

/**
 * rozparsovaná get proměnná
 * [path] je pole, v [get_path] je ponechán string, čiže REQUEST_URI relativně od indexu 
 **/
if (!empty($_GET['path'])) {
	$tpl['path'] = explode('/', trim($_GET['path'], '/'));
	$tpl['get_path'] = htmlspecialchars($_GET['path']);
} else {
	$tpl['path'] = array();
	$tpl['get_path'] = '';
}

Šablony: princip načítání

Princip zůstane stejný jako v předchozím případě. Hodnota proměnné se rovná jméno souboru + přípona. My si ale tuto možnost rozšíříme o další úroveň - přesněji o neomezené množství zanoření.

Pokud budeme mít v url například "www.treba.cz/kategorie/", načte se šablona "kategorie.phtml".
Pokud budeme mít v url například "www.treba.cz/kategorie/detail/", načte se šablona "kategorie_detail.phtml".

Lomítko akorát nahradíme za podtržítko a jméno souboru je na světě:

/**
 * zinicializujeme jméno šablonového souboru
 * bez přípony, zatím bez testování existence 
 **/
if (empty($tpl['path'])) {
	$tpl['template'] = 'index';
} else {
	if (count($tpl['path']) == 1) {
		$tpl['template'] = $tpl['path'][0];
	} else {
		$tpl['template'] = implode('_', $tpl['path']);
	}
}

/**
 * seskládáme cestu k souboru
 * path + adresář + soubor + postfix 
 **/
$tpl['template_file'] = $tpl['include_path'].'templates/'.$tpl['template'].'.phtml';

/**
 * pokud soubor existuje, nainkludujeme ho
 * otherwise hledáme šablonu 404.phtml 
 **/
if (file_exists($tpl['template_file'])) {
	// zde budou řádky, o kterých se zmíním záhy      
	include_once $tpl['template_file'];
} else {
	header('HTTP/1.1 404 Not Found');
	include_once $tpl['include_path'].'templates/404.phtml';
}

Jak je vidět ve výše uvedené ukázce kódu, následně jen seskládáme celou cestu k souboru i s adresáři a postfixem, otestujeme ho na existenci a případně načteme. Pokud soubor nenalezneme (v url adrese je zadán nesmysl), pak zašleme 404 hlavičku a k ní patřičný pohled.

Přidaná hodnota: meta description

Než začnu hovořit o ukázkových šablonách, rád bych popsal další funkci, o kterou si systém rozšíříme. Jak je jistě známo, takzvaný meta description je poměrně důležitý prvek na stránce, na který se ale často zapomíná, nebo se naopak zbytečně složitě vymýšlí.

Mě se osvědčil jednoduchý postup: Předpokládáme stánku s jistou textovou částí. Jednoduše vezmeme obsah souboru před tím, než ho zavoláme funkcí include, vytáhneme text z prvního odstavce, který najdeme a uložíme do proměnné $tpl['description']. Ta lze samozřejmě v daném souboru redefinovat, ale proč na to myslet, že ano. Velice jednoduchou cestou máme meta description pro každou z našich podstran. Stačí pár řádků kódu:

$file = file_get_contents($tpl['template_file']);
$pos = mb_strpos($file, '<p', 0, 'utf-8');
if ($pos !== false) {
	$offset_begin = mb_strpos($file, '>', $pos, 'utf-8');
	$offset_end = mb_strpos($file, '</p>', 0, 'utf-8');
	$tpl['description'] = mb_substr($file, $offset_begin+1, $offset_end-$offset_begin, 'utf-8');
	$tpl['description'] = preg_replace('~[[:space:]]+~', ' ', strip_tags($tpl['description']));
} else {
	$tpl['description'] = null;
}

Základní struktura šablon

Nyní ale zpět k šablonám. Ty budou všechny uložené v adresáři templates/. Jelikož se index nestará o žádný HTML výstup a stránka se nevloží nikam mezi hlavičku a patičku, je nutné na ně myslet právě v šabloně. Je to sice jisté odbočení, ovšem vyřešíme tím i unikátní titulek, který si v každé šabloně deklarujeme.

Ukázková šablona index.phtml může tedy vypadat nějak takto:

<?php

/**
 * Šablona
 * podle této šablony mohou vypadat všechny ostatní 
 * proměnnou title inicializovat vždy před inkludem hlavičky, aby tam už proměnná byla vidět
 * v _headeru.phtml je hlavička, ve _footeru je pravý resp. levý sloupec a pata 
 **/

$tpl['title'] = 'Hlavní stránka';
include_once '_header.phtml';

?>

	<h1>Nadpis</h1>
	<p>Text stránky. Tuna může být cokoli.</p>
	<p>A ještě jeden odstavec navíc, ať víme, že se ty meta description generují správně.</p>

<?php include_once '_footer.phtml'; ?>

Tipy a triky na konec

Na začátku článku jsem naznačoval, že zmíněná struktura aplikace nám ulehčí i případnou multijazyčnost. Zase tak jednoduché to nebude: na překlady společných textů nejspíš bude nutné použít nějakou knihovnu. Pokud si ale vystačíme s více soubory pro každou jazykovou mutaci, pak už máme problém vlastně vyřešený.

Pod url "www.treba.cz/en/" se totiž zobrazí šablona "en.phtml", která do sebe může naincludovat anglickou hlavičku i patičku, tudíž nebude problém s anglickým obsahem uvnitř souboru.

Odkazy na styly, JavaScripty a obrázky

Jedná se o častý problém. Mod_rewrite simuluje adresářovou strukturu, ale simuluje ji tak věrně, že i obrázky a CSS styly si myslí, že se mají načítat z jiného adresáře. Problém řeší buď tedy absolutní odkazy, nebo definice HTML tagu <base> v hlavičce stránky. V ukázkovém souboru je zakomentovaná proměnná, kterou si můžete definovat například v indexu a vložit do ní adresu Vašeho webu. Pokud ji tam tedy nevložíte takříkajíc natvrdo. Také si v souboru .htaccess nezapomeňte změnit RewriteBase, pokud web nespouštíte z kořenového adresáře.

Facebook Twitter Google+

Komentáře k článku "Dynamické skládání stránek pomocí include - díl II"
Zobrazuji pouze posledních 30 komentářů.

Gravatar
Mike 10. 11 2010, 15:48
6/35 Středa 10. Listopadu 2010, 15:48  |  Opera, Windows Vista

@: Ahoj, takto to bohužel nepůjde - 404ka je řešena na úrovni PHP, kdežto 403ku musíš adresovat v souboru .htaccess. Tam vložíš řádek:

ErrorDocument 403 /403/



a následně vložíš do adresáře templates soubor 403.phtml. Ten se pak zobrazí při nepovoleném přístupu do adresáře.

K aktivní položce: nejjednodušší řešení je následující. Alespoň budeš mít všechna active na jednom místě a ne na několika.

<li><a<?=(isset($tpl['path'][0]) && $tpl['path'][0] == 1 ? ' class="active"' : '') ?> href="/1/">1</a></li>
<li><a<?=(isset($tpl['path'][0]) && $tpl['path'][0] == 2 ? ' class="active"' : '') ?> href="/2/">2</a></li>

Gravatar
svito 10. 11 2010, 16:10
7/35 Středa 10. Listopadu 2010, 16:10  |  Chrome, Windows 7

Tak snaď už posledný problém a to s kontaktným formulárom.
takýto mám script pre posielanie emailov:

http://www.ftp.cssturiec.sk/php-script.txt

a takto html

http://www.ftp.cssturiec.sk/html-kod.txt

Odosielanie funguje bez problémov ale píše to na stránke tieto chyby:
Undefined index: email in ... on line 2
Undefined index: predmet in ... on line 3
Undefined index: telo in ... on line 4
Undefined index: antispam in ... on line 5
Undefined variable: email_icon in ... on line 29
Undefined variable: telo_icon in ... on line 47
Undefined variable: odoslane in ... on line 50

Ako to dobre chápem tak to píše preto lebo tieto polia sú prázdne (čo aj musia).
Vyriešiť by to mala asi hodnota null ... ale neviem ako...

Gravatar
svito 10. 11 2010, 16:33
8/35 Středa 10. Listopadu 2010, 16:33  |  Chrome, Windows 7

@: Hej aj to mam cez .htaccess len som si myslel, že sa to dá ako ten 404 :).

A to active je super, len som to musel upraviť:
<?=(isset($tpl['path'][0]) && $tpl['path'][0] == 'nieco' ? ' id="active"' : '') ?>

tam kde si ty dával tie 1 a 2 v scripte som si samozrejme dal názov inkludovaného súboru no musel som to dať ešte do ' '.

Inak mi to nešlo :)

Gravatar
svito 10. 11 2010, 16:33
9/35 Středa 10. Listopadu 2010, 16:33  |  Chrome, Windows 7

@: Hej aj to mam cez .htaccess len som si myslel, že sa to dá ako ten 404 :).
--------------
A to active je super, len som to musel upraviť:
<?=(isset($tpl['path'][0]) && $tpl['path'][0] == 'nieco' ? ' id="active"' : '') ?>

tam kde si ty dával tie 1 a 2 v scripte som si samozrejme dal názov inkludovaného súboru no musel som to dať ešte do ' '.

Inak mi to nešlo :)

Gravatar
Mike 11. 11 2010, 11:23
10/35 Čtvrtek 11. Listopadu 2010, 11:23  |  Opera, Windows XP

Tož samozřejmě, čísla v uvozovkách být nemusí, stringy ano.

$email = $_POST['email'];
$predmet = $_POST['predmet'];
$telo = $_POST['telo'];
$antispam = $_POST['web_site'];



Tyhle 4 řádky dej až za tu podmínku "if (isset($_POST['submit']))", to vyřeší ty chyby "undefined index". Co se týče chyb undefined variable, tak vypisuješ proměnnou, která neexistuje (nebo neexistuje vždy). Právě k tomu se používá uvedená funkce isset().

if (isset($email_icon)) { 
echo $email_icon;
}

Gravatar
svito 11. 11 2010, 17:19
11/35 Čtvrtek 11. Listopadu 2010, 17:19  |  Chrome, Windows 7

@: Jaj no to som si aj myslel, že pri tých číslach to asi funguje :).
---------------

Tak už to nepíše nič, díík
----------------

No a ešte späť k tomu nastavovaniu aktívneho menu. Ako som písal všetko funguje, lenže som to skúšal len na stránkach nie na indexe. Tam mi to nefunguje, lebo keď som na hlavnej stránke tak nezadávam žiadnu cestu, ktorá by sa zhodovala s path. Toto jediné asi mám riešiť ako som chcel celé menu... alebo sa to dá cez ten kód čo si mi na to dal?

Gravatar
Mike 12. 11 2010, 15:08
12/35 Pátek 12. Listopadu 2010, 15:08  |  Opera, Windows XP

@: Pokud máš mít aktivní odkaz v případě, že žádná path není, pak je to naprosto jednoduché:

<?=(empty($tpl['path']) ? ' class="active"' : '');?>

Gravatar
svito 12. 11 2010, 19:10
13/35 Pátek 12. Listopadu 2010, 19:10  |  Chrome, Windows 7

@: Áno je to jednoduché pre človeka čo sa dobre vyzná v php :). Ja nejak v tomto smere nemám nejak predstavivosť.

Diik za pomoc!

Mám ešte dve otázky. Ale to sú veci, ktoré teraz nejak nepotrebujem ale určite by som ich využil časom. Len ako neznalí php ma moc nenapadá ako by som to mohol vyriešiť aj keď asi to riešenie mám pod nosom s doterajšími odpoveďami.
1. keby som si spravil nejaký parameter napr. <?=$tpl['nieco']?> a ten napĺňal cez jednotlive stránky nastavením $tpl['nieco'] = 'nieco'; je mi jasné. Ale neviem nejak upraviť pomocou toho 'isset' tak aby toto <?=$tpl['nieco']?> zas pri nenaplnení nepísalo tie chyby.

2. je nejaká možnosť aby ten script čo si mi spravil na to active fungoval tak, že bude fungovať aj pre viac stránok jeden. S tým, že by sa tam rátalo už aj s možnosťou pre index.
Aby sme sa rozumeli, fungovalo by to tak, že by som mal jeden ten script, ktorý by sa aktivoval pri zadaní vybraných stránok + možnosť aj pre index. Pre linky to nemá moc využitie ale pre vkladanie napr. javascript-ov len pre určité stránky by sa to dalo využiť. :)
Ja som aj ten základný použil, len teraz vkladám javascript pre jednu stránku. Ne keby som to chcel pre ďalšiu tak by som to tam mal dvakrát zbytočne.

Ak by sa to dalo nejak spraviť tak by som ti bol vďačný ale ak už ti idem na nervy tak to chápem.

Tak či onak si mi už dosť pomohol!

Svito/miro25

p.s.: len tak mimo témy, vedel by si mi poradiť nejaké dobre knihy o PHP prípadne stránky(niečo pre začiatočníkov časom aj pokročilých :) ). Ale len v CZ/SK. Rád by som sa v tomto niečo poriadne naučil, lebo otravovať stále Teba alebo niekoho iného nechcem.

Gravatar
Zdeněk 13. 11 2010, 16:31
14/35 Sobota 13. Listopadu 2010, 16:31  |  Opera, Windows XP

Zdravim,
Mel bych par dotazu. Kdybych resil web touto metodou, tak vlastne template je kazda stranka, kterou chci zobrazit. Ale v kazde te strance musim mit zase celou strukturu stranky (menu, DIVy, apod.) Kdyz budu chtit pridat polozku do menu, tak to musim vlozit na vsechny stranky, coz by byla otravna prace (cca 20 stranek). Aspon se mi to tak jevilo, kdyz sem si to zkousel.

V minulosti jsem pouzival treba tento skriptik.
<?php
if(isset($_GET["p1"]) AND isset($_GET["p2"])){
define("ROOT","../../");
} elseif(isset($_GET["p1"])){
define("ROOT","../");
} else{
define("ROOT","./");
}

if($_GET["p1"]!=""){
$p=str_replace("..",".",$_GET["p1&q-uot;]);

if(file_exists("stranky/".$p.".php")) {
$page="stranky/".$p.".php";
} else {
$error=404;
$page="stranky/error.php";
}
} else {
$page="stranky/uvod.php";
}

include("template.php");
?>

Pak sem mel template.php, kde byla cela stranka. A v DIVu treba <div id="content"></div>
sem naincludoval promennou $page. Pak sem mel ruzny stranky ale pouze s textem, uz se tam neopakovala struktura HTML stranky.

Gravatar
Mike 13. 11 2010, 18:24
15/35 Sobota 13. Listopadu 2010, 18:24  |  Opera, Windows XP

@: Na tohle mé řešení také odpovídá: když se podíváš do ukázky, uvidíš tam soubory _header.phtml a _footer.phtml.

Obsahová část je právě daný soubor, jak říkáš, přičemž začátek stránky (hlavička až po otevírací div "content" bude v souboru header, ve footeru pak uzavření divu "content", levé / pravé menu a samotná patička stránky.

Je to nachystané právě na to, abys nemusel mít menu na 10ti místech.

Gravatar
Zdeněk 14. 11 2010, 00:39
16/35 Neděle 14. Listopadu 2010, 00:39  |  Opera, Windows XP

a jeste by me zajimal format nazvoslovy _header.phtml...

je nejaky rozdil mezi .html a .phtml?

to podrzitko. Ma to nejaky specialni vyznam u includovanych souboru?

diky moc

Gravatar
svito 14. 11 2010, 12:34
17/35 Neděle 14. Listopadu 2010, 12:34  |  Chrome, Windows 7

No ja si myslím, že je to len preto lebo na ten phtml je nastavené blokovanie pre zobrazovanie pri zadaní priamej cesty k súboru. Asi keby si tam mal html tak by sa to moc nedalo :).
Myslím si, že si ten názov v podstate môžeš dať čokoľvek. Ale ten phtml sa aspoň v pspad-e po otvorení chová ako html.

A to _header.phtml a _footer.phtml atď. je z jedného prostého dôvodu a to, že keby to bolo bez toho podčiarkovníka tak pri zadaní 'www.nieco.sk/header' by sa ti zobrazila header. Preto ten podčiarkovník, si myslím :).

No uvidíme čo na to Mike.

Gravatar
Zdeněk 14. 11 2010, 13:53
18/35 Neděle 14. Listopadu 2010, 13:53  |  Opera, Windows XP

jojo tak ukladat to jako HTML asi neni nejlepsi. Ale .php by taky slo...

No zkusil sem par veci. Kdyz to je ulozeny _header.php nebo header.php tak se zobrazi obsah
takze kdyz treba zadas www.mojestranka.cz/templates/_header.php tak se ti vypise obsah.

Kdyz to budes mit _header.phtml tak vyskoci Forbidden a mas smulu, nic se ti nezobrazi.
A zkousel jsem i variantu s tim podtrzitkem a nemelo to zadny vliv :)

Gravatar
Mike 14. 11 2010, 21:13
19/35 Neděle 14. Listopadu 2010, 21:13  |  Opera, Windows XP

@: Asi takto - jak podtržítka, tak přípony mají svůj význam.

phtml soubory: mají svou příponu právě proto, abych mohl jednoduše zakázat jejich přímé zobrazení. Jinak phtml je alternativní přípona pro php soubory. (Neplést se "shtml", ty jsou šifrované).

Pomocí podtržítek odlišuji takzvané základní a podpůrné šablony: základní jsou přímo volány, ty podpůrné se do nich různě inkludují. Pouze pro přehlednost, žádný hlubší význam to nemá. Je to zvyk :-)

Gravatar
svito 4. 2 2011, 15:58
20/35 Pátek 4. Února 2011, 15:58  |  Chrome, Windows 7

Tak som tu zas po čase. Chcem spraviť na stránke viacjazyčnosť ako na to viem podľa toho postupu čo si napísal. Ale chcem mať v 'header-y' možnosť prepnutia aktuálnej stránky do En verzie alebo naopak. No ale neviem ako to spraviť aby som nemusel pri každej stránke nastavovať parameter pre doplnenie linku. Lebo linky by mohol byť takto <a href="en/a tu doplniť aktuálnu stránku" >EN</a>.
Je nejaký parameter ktorý by doplnil sám cestu aktuálnej stránky?

Gravatar
svito 5. 2 2011, 13:51
21/35 Sobota 5. Února 2011, 13:51  |  Chrome, Windows 7

Ahoj, mám ešte takú otázku k tomu nastavovaniu 'active' čo si mi poradil.

Ako to nastaviť pri podstránkach tak aby to označovalo v menu. Teraz keď som napr. na 'www.niečo.sk/en/nieco' tak mi v menu označuje odkaz na 'www.nieco.sk/en'. Skúšal som to nejak nastaviť ale max som sa dostal k tomu, že mi ostali označené oboje položky v menu :(.

Vopred dík za odpoveď.

Gravatar
svito 5. 2 2011, 14:40
22/35 Sobota 5. Února 2011, 14:40  |  Chrome, Windows 7

@: Tak toto som vyriešil pridaním do linku -> <?=$tpl['get_path']?>
Snaď je to aj správne :).

Gravatar
svito 5. 2 2011, 14:58
23/35 Sobota 5. Února 2011, 14:58  |  Chrome, Windows 7

@: No ale troška som nedomyslel to, že keď som na en stránke tak mi pre sk generuje odkaz len na en :)

Gravatar
svito 5. 2 2011, 17:32
24/35 Sobota 5. Února 2011, 17:32  |  Chrome, Windows 7

@: Tak toto som asi vyriešil. Spravil som to takto:
<li><a<?=(isset($tpl['get_path']) && $tpl['get_path'] == 'en/cennik' ? ' id="active"' : '') ?> href="en/cennik" >Pricelist</a></li>

Funguje to, len sa chcem uistiť či je to možné/správne mať takto?

Gravatar
MIke 12. 2 2011, 20:59
25/35 Sobota 12. Února 2011, 20:59  |  Firefox, Windows XP

@: Ahoj, jasné, může to tak být. Akorát se tedy nepoužívá id="active" ale class="active". Nezapomeň, že můžeš mít na stránce více menu nebo to jedno může mít více úrovní. Proto je lepší třída, protože tu můžeš používat všude tu stejnou.

Gravatar
Pako 26. 2 2011, 16:35
26/35 Sobota 26. Února 2011, 16:35  |  Chrome, Windows XP

V subore _header.phtml ak necham <title><?=$tpl['title']?></title> tak titulok je <?=$tpl['title']?>
ak ten riadok zmenim na <?php echo $tpl['title'] ?> az potom je tituok Hlavní stránka je to verziou PHP alebo robim niekde chybu? Alebo je chyba v tom riadku?

Gravatar
Pako 27. 2 2011, 15:27
27/35 Neděle 27. Února 2011, 15:27  |  Firefox, Windows XP

Ja som z toho zasa pako.
prvu cast o include som jak tak pochopil
napr. ak napisem do header.php <a href="?page=kontakt">Kontakt</a> <a href="?page=kniha-navstev">Kniha navstev</a><p> tak sa mi obsah meni na kontakt.php alebo kniha-navstev.php
Ale neviem ako mam zmenit obsah z tohoto prikladu "include díl 2".
Skusal som napisat do index.phtml <a href="?path=kontakt">Kontakt</a> ale ak kliknem na odkaz tak sa mi otvori kontakt.phtml ktory som zkopiroval do adresara templates ako samostatna stranka. Viem robim to zle a nepochopil som to. Prosim len o radu ako mam zmenit ten obsah.

Dik za radu.

P.S.: skusam to cez localhost wampserver

Gravatar
Pako 27. 2 2011, 17:58
28/35 Neděle 27. Února 2011, 17:58  |  Firefox, Windows XP

Aha asi uz viem kde som robil chybu. Pretoze ja som vytvoril subor kontakt.phtml a jeho obsah musi mat tu sablonu z index.phtml a ja som tam mal iba <?php echo "test";?>takze sa mi otvorila stranka iba zo slovom "test" ale stale sa mi zobrazuje titulok <?=$tpl['title']?> ako to mozem zmenit?

Gravatar
Pako 27. 2 2011, 18:06
29/35 Neděle 27. Února 2011, 18:06  |  Firefox, Windows XP

Ta tvoja 404 nema chybu :D kedy mam ocakavat doma agentov? :D

Gravatar
Pako 28. 2 2011, 09:45
30/35 Pondělí 28. Února 2011, 09:45  |  Firefox, Windows XP

Uz funguje aj <?=$tpl['title']?> :) musel som v php.ini zmenit short_open_tag = Off na On
ale docital som sa ze je lepsie pouzivat <?php echo $tpl['title'];?> a short_open_tag mat off.
Mike aky mas ty na to nazor?

Gravatar
Mike 3. 3 2011, 10:48
31/35 Čtvrtek 3. Března 2011, 10:48  |  Opera, Windows Vista

@: Je to úplně jedno. Short open tags používám (a doporučuji používat) stejně jen v šablonách, takže kdyby to někde bylo zakázané bez možnosti zapnutí, stačí jen zeditovat pár souborů. Zatím jsem se s tím ale nesetkal. Prostě se to pohodlněji píše, žádná bezpečnostní rizika to nepřináší.

Gravatar
Pako 8. 3 2011, 10:53
32/35 Úterý 8. Března 2011, 10:53  |  Firefox, Windows XP

@: Este dve otazocky? Prva: ak by niekto chcel stiahnut moje stranky zo serveru stiahne iba html stranky alebo aj tie sablony phtml? Druha: ak mam subor kniznicu iba s php kodom aj ten mam dat ako sablonu alebo ho mozem ponechat ako php subor.

Gravatar
Mike 8. 3 2011, 12:17
33/35 Úterý 8. Března 2011, 12:17  |  Opera, Windows Vista

@: a) stáhne to pouze html výstup, neboj :-)
b) určitě jako *.php soubor.

Gravatar
Pako 8. 3 2011, 14:50
34/35 Úterý 8. Března 2011, 14:50  |  Firefox, Windows XP

@: uz som kludnejsi :)

Gravatar
Joan 3. 1 2012, 15:10
35/35 Úterý 3. Ledna 2012, 15:10  |  Firefox, Windows XP

Zdravím tě Miku a přeji vše dobré a hodně nápadů v tomto roce :-)
Mohu Tě poprosit o mrknutí se na můj zdrojový kód použitý na sestavení stránek s hezkými URL pomocí dvou parametrů? Inspirovala jsem se na Tvém webu! Zdroják mám uvedený v "čitelné" grafické podobě, takže Tě snad o hodně času nepřipravím:
http://www.psikusy.zlatberry.cz/php/dva-parametry-v-adrese/

Moc Ti děkuji předem! Jestli to v této podobě mohu použít, hodlám si překopat svoje hlavní stránky stejnou metodou.

Celá diskuse

Přidat komentář







Nevím, kolik to je
Parak simati, Muballit mitte, Nergal allatu mellamu mesaru, La tapallah Annuaki, Kettu Puluthu qillatua