Vlastní stavy objednávek v Prestashopu

Jen ve zkratce po přihlášení do administrace Prestashopu:

Objednávky – Stavy objednávek – Přidat nový

Zde můžete přidat nový stav objednávky, přidělit mu barvu a také status – například vygenerovat PDF, považovat objednávku za doručenou, nebo zaslat zákazníkovi e-mail.

Jak zaslat e-mail?

Na FTP ve složce /mails/cs (podle jazyka, ve kterém e-shop používáte) vytvořte libovolný HTML a TXT soubor. Oba soubory se musí jmenovat stejně a lze je pojmenovat například podle jejich vlastnosti a obsahu (doruceni5dnu, zbozinedostupne), apod…

Budete mít tedy 2 soubory

  • doruceni5dnu.html
  • doruceni5dnu.txt

Šablonu souboru HTML si můžete zkopírovat z jakékoliv jiné šablony ve složce /mails/cs a upravit dle libosti. TXT verze souboru by měla obsahovat pouze plain text bez HTML a CSS.

Pokud máte v Prestě nastaveno odesílání mailů typem text/html, není nutno mít i ekvivalentní soubor TXT. Ale nic tím nezkazíte. 😉

Máme-li hotovo, stačí v rolovacím menu v administraci vybrat vhodnou mailovou HTML šablonu a máme hotovo.

Hromadné najít & nahradit v MySQL databázi

Pakliže migrujeme webové stránky spolu s databází, je nutné nahradit veškeré výskyty např. staré domény za tu novou.

Jelikož phpMyAdmin nepodporuje hromadné najít&nahradit (lze to udělat pouze v předem definovaných tabulkách a sloupcích), musíme si pomoci vlastním PHP skriptem, který vše obstará za nás:

<?php
// připojení k databází
$server= "server";
$jmeno = "jmeno";
$heslo = "heslo";
$databaze = "databaze";

mysql_connect($server, $jmeno, $heslo);

// jake stringy - retezce - chceme najit ($najit) a cim je nahradit ($nahradit)
$najit = "text-ktery-chceme-nahradit";
$nahradit = "text-kterym-chceme-nahrazovat";

//samotne nahrazeni stringu - retezcu
$loop = mysql_query("
 SELECT
 concat('UPDATE ',table_schema,'.',table_name, ' SET ',column_name, '=replace(',column_name,', ''{$najit}'', ''{$nahradit}'');') AS s
 FROM
 information_schema.columns
 WHERE
 table_schema = '{$databaze}'")
or die ('Nelze nahradit vyskyty: ' . mysql_error());

while ($query = mysql_fetch_assoc($loop))
{
 mysql_query($query['s']);
}
?>

Ve výše uvedeném skriptu stačí pouze doplnit přihlašovací údaje k databázi ($server, $jmeno, $heslo, $databaze) a změnit odpovídající stringy (řetězce), které chcete napříč celou databází změnit.

Doplňte tedy aktuální řetězec ($najit), který chcete najít a nahradit ho novým řetězcem ($nahradit).

Nakonec skript spusťte. Jen si dejte pozor, zda Vám stačí na Vašem hostingu/serveru dostatečný max_execution_time. Například  Databáze o velikosti 20MB se zpracovávala na poměrně výkonném serveru kolem 5 vteřin.

Nastavení MOODLE, aby fungoval na nové doméně

V rootu webu otevřete soubor config.php a vyhledejte v něm proněnnou $CFG->wwwroot. U té následně změňte URL domény ze staré na novou

$CFG->wwwroot   = 'http://staradomena.cz'; 

$CFG->wwwroot   = 'http://novadomena.cz';

Dále je třeba ještě nahradit veškeré výskyty staré domény v databázi za nové.

Změna domény v databázi WordPressu při přesunu webu

V případě, kdy chceme přesunout web běžící na WordPressu, musíme zajistit dvě věci

  • překopírovat soubory z FTP
  • překopírovat databázi

Následně teprve můžeme měnit URL adresu domény v databázi. Pokud máte prefix tabulek wp_, spusťte v phpMyAdmin následující příkaz:

UPDATE wp_options SET option_value = replace(option_value, 'http://www.staradomena.cz', 'http://www.novadomena.cz') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://www.staradomena.cz','http://www.novadomena.cz');

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.staradomena.cz', 'http://www.novadomena.cz');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.staradomena.cz','http://www.novadomena.cz');

Tento příkaz nahradí veškeré výskyty staré domény http://staradomena.cz v databázi za novou doménu http://novadomena.cz.

Pakliže ani toto nempomůže a WordPress Vás bude například při pokusu o přihlášení stále redirectovat na starou doménu, vložte do konfiguračního souboru wp-config.php, jenž je umístěn v rootu webu následující řádky

define('WP_HOME','http://www.novadomena.cz');
define('WP_SITEURL','http://www.novadomena.cz');

Další podmínkou pro správný přenos webu je vypnuté cachování.

PHP přesměrování + zaslání POST dat v $_POST

Někdy potřebujeme uživatele přesměrovat na nějakou stránku, ale z určitých důvodů nechceme data mezi skriptem a cílovou stránkou s jinou stránku přenášet v URL pomocí $_GET. Prostě potřebujeme tato data skrýt tak, aby v URL vůbec nebyla.

Je to jednoduché. 🙂 Sice u toho nepoužijeme pouze PHP, ale postup bude následující:

  1. Údaje máme v PHP v proměnné
  2. V PHP vygenerujeme PHP formulář s inputy, kde budou údaje vložené přes proměnné jako jejich value
  3. Takto vyplněnou stránku pošleme uživateli a ten ji dostane vyplněnou
  4. Součástí stránky bude JS, který automaticky tento formulář odešle na jinou URL
  5. Samozřejmě bude součástí odesílaných dat i value ve formuláři
  6. A jelikož jsme zvolili u form method=“post“, nic se v URL neobjeví
<form action='skript.php' method='post' name='formular'>
<?php
foreach ($_POST as $a => $b) {
echo "<input type='hidden' name=".$a." value=".$b).">";
}
?>
</form>
<script type="text/javascript">
    document.formular.submit();
</script>

Pokud si skript rozpitváme, tak část s form action všichni chápeme. Poté zobrazíme inputy tolikrát, kolikrát máme proměnnou $jmeno (snad mě chápete). No a potom v JavaScriptu automaticky formulář odešleme.

Více k dohledání na http://stackoverflow.com/questions/5576619/php-redirect-with-post-data

Nastavení maximální doby běhu PHP skriptu – max_execution_time

Pakliže chcete omezit dobu běhu jednoho daného skriptu a nechcete nastavovat dobu běh všech skriptů na servru centrálně v konfiguračním souboru php.ini, můžete využít jednoduché řešení.

Pokud máte možnost na serveru upravovat PHP konfiguraci, jednoduše vložte do svého skriptu, kterému chcete omezit maximální dobu běhu následující řádek kódu – nejlépe na začátek souboru po <?php.

ini_set('max_execution_time', 30);

Tímto vlastně nemusíte zasahovat do souboru php.ini, ale lze jednoduše upravit max_execution_time přímo v daném souboru.

  • ini_set – udáváme informace, že chceme definovat nějaký „příkaz“ jakoby byl v souboru php.ini
  • max_execution_time – maximální doba běhu skriptu – definice doby v php.ini
  • 30 – doba po které se skript ukončí 

Můžete také využít jednodušší možnosti a to

set_time_limit(30);

A výsledek je zcela stejný. 🙂

 

Stackoverflow – How to define max execution time of one PHP script

Vložení konverzního kódu Skliku do posledního kroku košíku v Prestashopu 1.6

Dnes si ukážeme návod, jak vložit kód pro počítání konverze úspěšně provedených objednávek (přesněji těch, kteří se proklikli za poslední krok k potvrzení odeslání objednávky).

 

Od Skliku dostanete kód podobný tomuto:

<iframe width="119" height="22" frameborder="0" scrolling="no"  
src="//c.imedia.cz/checkConversion?c=IDuzivatele&color=ffffff&v="></iframe>

 

Na e-shopu, kde jsem tuto funkcionalitu implementoval byly dvě možnosti platby:

  • platba hotově
  • platba předem na účet

 

Bylo tedy nutné vložit konverzní kód do těchto dvou modulů v Prestashopu. Nejjednodušší cesta, jak zjistit ten správný soubor je proklikat se nákupním procesem, podívat se na URL a zjistit si cílový soubor a cestu adresáři k tomu souboru.

Pro příklad uvedu URL posledního kroku v košíku po výběru platby hotově, kde již je jen rekapitulace objednávky a tlačítko k úspěšnému odeslání objednávky:

http://www.urldomenyeshopu.cz/cs/module/cashonpickup/validation
(A pak jsem měl ještě URL pro platbu předem převodem na účet /module/bankwire/payment).

 

Z toho se dá odvodit, že soubor, který chceme upravit bude mít jméno validation.php (v Prestashopu to ale bude spíše validation.tpl – součást .PHP souboru). No a adresář bude /module/cashonpickup/.

Tento soubor si najdeme a hned na jeho začátek ještě před značku otevírající PHP kód <?php vložíme náš konverzní kód od Skliku.

<iframe width="119" height="22" frameborder="0" scrolling="no"  
src="//c.imedia.cz/checkConversion?c=IDuzivatele&color=ffffff&v="></iframe>

 

A je hotovo!

 

Takto vložte konverzní kód do všech souborů, které jsou součástí modulu pro platbu, kterou máte na e-shopu aktivní. Postup zjištění adresáře a souboru z URL je vždy stejný. Samozřejmě si do mnou uváděného kódu vložte Vaše reklamní ID.

Jednoduchý zkracovač URL adres

Ahoj!

Fakt dlouho jsem tady nic nenapsal a celkem je mi to líto. Poslední dobou na to nemám moc času – nejdříve byly písemky ve škole a teď jsou prázdniny. Navíc byly poslední dobou úmorná horka (kolem 40°C ve stínu) a řeknu Vám, že v tom je psaní nějakého článku opravdu velmi těžké. Ale je to tak. Jo, je to celkem dost hloupá výmluva…

Ale teď už jsem zpět a píšu pro Vás tenhle článek. Ještě předtím bych Vám chtěl oznámit, že pro Vás chystám jednu bezvadnou novinku, snad ji oceníte. Ale o tom až někdy později – předpokládám během září 2015.

Dlouho jsem přemýšlel, jaký článek pro Vás napsat a napadlo mě, že bychom si mohli vytvořit vlastní zkracovač URL adres. Bude to mít velmi primitivní funkčnost a použijeme přitom databázi MySQL. Pusťme se do toho!

Takže, nejdříve (ostatně, jak tomu bývá zvykem u všech mých článků) si shrneme, co vlastně chceme programovat, co k tomu použijeme a hlavně – jak to bude fungovat (DB = databáze):

  • Na hlavní stránce bude možnost vytvořit novou zkrácenou adresu a zároveň přejít na tu již existující
  • PŘIDÁNÍ
    • Na hlavní stránce bude formulář pro přidání URL
    • Budou tam dvě políčka – původní a nová zkrácená verze
      • Zkrácená URL se nebude sama generovat, ale uživatel si ji musí sám vymyslet
    • Po kliknutí na přidávací button se provede následující
  • ODESLÁNÍ DO DB
    • Z klientského formuláře se vezmou dvě data
      • původní adresa (cíl)
      • nová adresa (alias)
    • Obě data se uloží do DB do dvou sloupců
      • alias
      • cil
  • POTVRZENÍ PŘIDÁNÍ
    • Uživateli pouze potvrdíme, že alias i cíl byl úspěšně uložen do DB
    • A zobrazíme mu klikatelný odkaz aliasu (zkrácené adresy)
  • ŽÁDOST O ZOBRAZENÍ ADRESY
    • Uživatel zašle požadavek na server s aliasem
    • A žádá nás o přesměrování na správnou adresu
    • My se podíváme do DB
      • A zjistíme, jestli je v DB ve sloupci alias shoda s aliasem, který nám uživatel poslal
      • Pokud ano, zjistíme si i ve stejném řádku cíl tohoto aliasu
      • A na tuto adresu ho přesměrujeme
    • Pokud v DB shodu nenalezneme, zobrazíme chybovou hlášku

A jdeme programovat 🙂

Nejprve si vytvoříme potřebnou tabulku a sloupce v MySQL. Tabulku nazveme url a budeme mít dva sloupce – alias a cil – omezenou délku nechávám na Vás, ale nezapomínejte, že se jedná o URL adresy a někdy mohou být pekelně dlouhé.

Dalším krokem bude vytvořit si konfigurační soubor pomocí kterého budeme komunikovat s databází. Nazveme ho config.inc.php. Uložíme do ní název databázového serveru, uživatele, heslo a databázi. Potom ještě nastavím správné a jednotné kódování, pomocí kterého budeme s databází komunikovat – UTF-8. Toto kódování doporučuji používat ve všech našich skriptech.

<?php  
$server = 'dbserver.koncovka'; //server, na kterém je DB 
$uzivatel= 'uzivatel'; //jméno uživatele 
$heslo = 'heslo'; //heslo uživatele 
$db = 'databaze'; //název databáze  

//pokusíme se připojit 
$link = mysql_connect($server, $uzivatel, $heslo) or die("Could not connect: " . mysql_error()); 

//vybereme databázi 
mysql_select_db($db, $link) or die ('Nemohu se pripojit ' . mysql_error());  

//a nakonec nastavíme jednotné kódování UTF-8 
mysql_query("SET NAMES UTF8");  
?>

No a potom už můžeme začít postupně skládat soubor vlozit.php, který bude sloužit pro vkládání nových záznamů do DB. Ještě dodám, že použijeme antispamovou ochranu už z minulého článku. Nejdříve jednoduchý formulář (to, že používám teď <center> je jenom proto, aby to nějak vypadalo):

<center>
  <h2>Zkracovač URL adres</h2> 
  <form method="post" action="#"> 
    URL ke zkrácení: <input type="text" value="http://" name="cil"><br> 
    http://url.mujskript.cz/<input type="text" name="alias"><br> 
    <p id="spamprotirobotum">Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: <input type="text" name="robot" value="" id="protirobotum"></p> 

<button type="submit">Zkratit!</button> </form>
</center>

<script> /* tento skript vloží do příslušného políčka  */ 
document.getElementById("protirobotum").value = 13 * 19; 
document.getElementById("spamprotirobotum").style.display = "none"; 
</script>

Jak jste i mohli všimnout, formulář už obsahuje JS ochranu před spamem. Teď si v PHP definujeme proměnné a připojíme se k databázi:

<?php  
require_once ("config.inc.php");     
$alias = $_POST['alias']; 
$cil = $_POST['cil']; 
$robot = $_POST['robot'];

//A ochráníme se před útoky

$alias = htmlspecialchars($alias); 
$cil = htmlspecialchars($cil); 
$alias = mysql_real_escape_string($alias); 
$cil = mysql_real_escape_string($cil);

Následně si vytvoříme podmínku pro antispamovou ochranu a poté budeme pokračovat ve skriptu:

if($robot == 247){ 
  $query = "INSERT INTO `url`(`alias`,`cil`) VALUES 
    ('$alias','$cil')";  
  $result = mysql_query($query);  

  if(!$result){ 
    echo  mysql_error() . " - " . mysql_errno();  
  }else{
    echo 'Nyní už můžete ostatní odkázat na adresu'; 
    echo '<a href="http://url.mujskript.cz/?u='.$alias.'">http://url.mujskript.cz/?u='.$alias; 
  }
} 
?>

A teď si skript rozebereme. Přidali jsme podmínku, že pokud v $robot je 247, tak se pokračuje dále to přesně: Vytvoří se SQL dotaz s daty a pošle se do DB. V další podmínce se ověřuje, zda nedošlo k chybě, pokud ano, tak se vypíše. V opačném případě (pokud nedošlo k chybě) se zobrazí odkaz na zkrácenou URL.

TIP! Doporučuji všechny řetězce escapovat před útoky pomocí htmlspecialchars (více).

No a nyní si vytvoříme poslední soubor a to index.php, ve kterém se bude ověřovat správnost krátké URL a přesměruje se na ni a také se tam includne soubor pro vložení adresy (vlozit.php), Soubor index.php tedy bude vypadat:

<?php 
  require_once ("config.inc.php");  
  $zadost = $_GET['u']; 
  $zadost = htmlspecialchars($zadost);

Opět se připojíme k DB a definujeme si proměnné. Do proměnné $zadost se nám bude ukládat požadavek od uživatele (http://domena.cz/?u=neco) a to „neco“ je právě obsah proměnné $zadost. Následně tuto proměnnou ještě escapujeme.

A poté si už složíme dotaz, zda URL existuje (viz. začátek teorie nahoře). „Vyber z tabulky url všechny záznamy, kde se obsah sloupce alias rovná proměnné $zadost“. URL budeme předávat pomocí superglobální proměnné $GET (více). Dotaz pošleme do databáze a požádáme o výsledek:

$query_sel = "SELECT * FROM `url` WHERE `alias`='$zadost'";  
$result_sel = mysql_query($query_sel); 
$row = mysql_fetch_assoc($result_sel);

Nyní máme výsledek obsažený v proměnné $row[‚alias‘] (ta se nám vrátila z DB) a ještě ho porovnáme s proměnnou $zadost (tu jsme dostali od uživatele).

Takže vytvoříme podmínku, pokud se záznam našel a pokud ne:

if(isset($zadost)){
  if ($row['alias'] == $zadost){
    header("Location:".$row['cil']); 
  }else{
    echo "Tento záznam (".$zadost.") neexistuje!"; 
  }
}

Pokud se záznam v tabulce url našel, tak se rovnou přesměruje na cíl, pokud v záznam v tabulce neexistuje, upozorníme na to. Nakonec můžeme ještě includnou soubor pro vložení záznamu vlozit.php, ale nemusíme:

include "vlozit.php"; 
?>

V případě, že bychom si chtěli vypsat všechny záznamy z DB (tj. alias i cíl), můžeme:

<?php 
  require_once ("config.inc.php");   

//vybereme všechny záznamy z tabulky url a seřadíme je podle jejich id (1, 2, 3...) 
$query_sel = "SELECT * FROM `url` ORDER BY `id`";  

//řekneme, že toto je příkaz do DB 
$result_sel = mysql_query($query_sel);  

//pokud se příkaz z nějakého důvodu nevykonal 
if(!$result_sel){  

  //vypiš chybovou hlášku
  echo  mysql_error() . " - " . mysql_errno();      
  }  //pokud se žádná chyba nestala     
else{  
    //tak projdeme celou tabulku pomoci while a prok aždý záznam vytvoříme asociativní pole         
    while($row = mysql_fetch_assoc($result_sel)){  

      //a teď už jen vypíšeme každý řádek (generují se samy díky mysql_fetch_assoc)             
      echo "<p>";  //a v $row je vždy uložen obsah řádku konkrétního pole             
      echo "alias: " . $row['alias'] . "<br>";              
      echo "cil: " . $row['cil'];              
      echo "</p>";          
    }      
}  
?>

Shrnutí

Vytvořili jsme si opravdu jednoduchý zkracovač URL. Pokud si vše přenesete na Váš server, nebo vyzkoušíte živě tento zkracovač (odkaz níže), mohla by se Vám hodit nápověda:

Do prvního políčka se vkládá původní URL adresa – např. „http://seznam.cz“ a do druhého políčka se vkládá jen zkrácená adresa pro odkaz (szn). Po potvrzení se Vám vygeneruje link. Je delší, ale pomocí .htaccess si ten parametr $GET[‚u‘] můžete skrýt a rovnou i použít kratší a lepší doménu.

Nápady na vylepšení:

  • mohlo by to umět pomocí .htaccess odstranit ten $GET parametr
  • mohlo by to počítat počet kliků (třeba podle mého skriptu)
  • mělo by to mít ošetřené všechny vstupy pomocí htmlspecialchars – do DB, u už. části už je
  • mohlo by to umět samo generovat zkrácené url (aaa, aab, aac, aad… ….kbn, kbm)
  • mohlo by to zamezit vkládání stejných aliasů a vypsat třeba „Tento záznam už existuje!“

Pokud by Vás napadlo nějaké další vylepšení, klidně mi napište na mail, nebo do komentářů

To je vše. Snad jsem Vám pomohl. Celý skript je samozřejmě ke stažení a vyzkoušení zdarma:

Vyzkoušet živě zkracovač URL 

Stáhnout Zkracovač URL adres (.zip)

Chytrá a neotravná antispamová ochrana

Určitě Vás trápí ten otravný spam v diskusích, komentářích, při registraci, nebo při kontaktním formuláři na Vašem webu.

 

Existuje jednoduché a fikané řešení v JavaScriptu. Není moc, co o tom psát, ale ve zkratce popíšu funkčnost.

Na webu máte input, u kterého je napsáno, že máte napsat například číslo 1234 (nějak tajně, třeba tisíc-dvě stě -třicet čtyři). Jelikož by tento input ale návštěvníky otravoval, tak se do tohoto pole automaticky pomocí JavaScriptu vloží číslo 1234 a políčko se i s textem skryje (display: hidden).

 

V případě, že někdo má JavaScript vypnutý (do této skupinu patří roboti, třeba Google, jenž JavaScript neumí interpretovat), tak se mu zobrazí jak input, tak i text a musí toto políčko sám a ručně vyplnit. Jak účinné.

 

No a potom stačí jen v PHP vytvořit podmínku, že pokud v tom a tom inputu bylo yplněno správně číslo 1234, tak se bude dále ve skriptu pokračovat – odesláním dat do DB, nebo třeba e-mailu.

 

Abyste to ale neměli tak těžké, tak pro Vás níže přikládám plně funkční skript (s dovolením převzato z DJPW. Díky):

Do HTML formuláře stačí přiložit políčko

<p id="spamprotirobotum">
  Ochrana proti spamu. Napište prosím číslo tisíc-dvě stě-třicet čtyři: 
  <input type="text" name="robot" value="" id="protirobotum">
</p>

 

a kousek JavaScriptu, který doplní automaticky číslo a zneviditelní políčko (robotovi se JavaScriptová událost neprovede – neumí ho zpracovat). Ještě v JavaScriptu vkládané číslo trošku zošklivíme – musí se nejprve vynásobit (2×617, což je 1234) :

<script> 
  /* vložíme do políčka číslo */ 
  document.getElementById("protirobotum").value = 2 * 617;  

  /* a poté políčko zneviditelníme */ 
  document.getElementById("spamprotirobotum").style.display = "none"; 
</script>

 

A nakonec potom v PHP zjistíme, zda políčko obsahuje správné číslo (a do této podmínky dáme zbytek celého skriptu):

$robot = $_POST['robot']; //do proměnné uložíme obsah políčka  
if($robot == 1234){

  //sem vložíte celý Váš PHP skript a pokud podmínka nebude splněna, nic se neprovede.  

}

 

To je vše 🙂

 

Router v PHP (5.díl/2.série)

Před čtením tohoto návodu Vám doporučuji si přečíst i návody předchozí. Předpokládám totiž, že již máte potřebné znalosti, které jste se naučili již dříve.

Už chápeme logiku podmínek, známe i operátory. Dnes si vytvoříme náš vlastní routovací systém.

Routování slouží k rozdělení webových stránek a vytvoření URL adres za pomoci parametrů (které ale následně můžeme skrýt – například pomocí souboru .htaccess). Takže díky routování získáme například tuto url:

www.mujskript.cz/ahoj.php?parametr=obsah

 

Kapitoly:

  • Struktura adresáře
  • A jdeme na věc!
  • Co se stane když?
  • Podmínky a výpis textu
  • Podmínky a zobrazení souboru

 

Napišme si takový malý demonstrační scénář toho, jak to všechno bude vlastně probíhat. To je důležité, abychom vlastně věděli, co budeme psát a taky jak to budeme psát.

Backend (zadní strana skriptu – jak ji vidí programátor):

  • Napíšu nějaký routovací skript – například index.php
  • Do něj dám různé podmínky, pokud URL vypadá takhle, tak udělej tohle, jinak tamto
  • Celé to zautomatizuji
  • Uživatel dostane to, co chce

Frontend (přední strana – tak jak to vidí návštěvník)

  • Kliknu na nějaký odkaz 
  • Po kliknutí dostanu obsah, který jsem chtěl
  • Když stránka neexistuje dostanu Error

Jasně, ten uživatelský frontend jsem trochu přehnal, ale je to tak. Uživatel většinou adresy nezkoumá (pokud je to laik), ale programátorovi to třeba pomůže v orientaci.

 

Struktura adresáře

Doporučuji nazývat adresáře stejně, jako já. Vytvoříme si nějaký hlavní (root) adresář, ve kterém bude náš web s routovacím skriptem. Nazveme ho třeba web. Do něj vložíme jediný soubor a to index.php. Pak si vytvoříme ještě adresáře obsahcasti. Nepovinné adresáře pro obrázky, CSS styly a JavaScripty jsem vynechal. Struktura bude vypadat asi takto:

-- web   
-- index.php   
-- obsah   
-- casti

V adresáři obsah budou jednotlivé stránky (respektive podstránky) webu, jako jsou např. sluzby.php, reference.php, onas.php, kontakt.php. No a v adresáři casti budou pochopitelně různé části webu, které budou na všech stránkách stejné a bude jednodušší je častěji měnit – hlavicka.php, menu.php, sidebar.php a paticka.php. Záleží na Vás, jakou strukturu a pojmenování souborů si zvolíte Vy.

 

A jdeme na věc!

Teď se ale vrátíme zpátky k souboru index.php. V tomto souboru bude vlastně náš routovací (nikoliv routerovací od slova router) systém, který bude všechno řídit:

<html> 
  <head> 
    <meta charset="utf-8"> 
    <title>Název stránky (později se bude dynamicky měnit)</title> 
  </head> 
  <body> 
    <?php include "casti/hlavicka.php"; ?> 
    <?php include "casti/menu.php"; ?> 
    <?php 
      $stranka = $_GET['stranka']; 
      if($stranka== "sluzby"){echo "Jsi na stránce služeb.";}
      elseif($stranka == "cenik"){echo "Jsi na stránce, kde uvidíš ceník.";}
      else{echo "Vyber si nějakou stránku, aby se ti mohl zobrazit text: <a href='?stranka=sluzby'>Služby</a>, nebo <a href='?stranka=cenik'>Ceník</a>.";}   
   ?>

 

Začneme od 7. řádku. Zde includujeme (více o include: Include v PHP – 1.díl) dva soubory – hlavicka.php a menu.php. Oba dva jsou umístěny v adresáři casti. Na 10. řádku jen definujeme obsah proměnné $stranka a to je superglobální proměnná $_GET.

 

Co se stane když?

No a od 11. řádku začíná již samotné routování a vidíme zde první podmínky, podle kterých se bude obslužný skript řídit. Takže:

  • Pokud (if) je obsahem proměnné $stranka text sluzby, tak
    • vypiš uživateli na stránku větu Jsi na stránce služeb.
    • if($stranka== "sluzby"){echo "Jsi na stránce služeb.";}
  • Nebo pokud (elseif) je obsahem proměnné $stranka text cenik, tak
    • vypiš uživateli na stránku větu Jsi na stránce, kde uvidíš ceník.
    • elseif($stranka == "cenik"){echo "Jsi na stránce, kde uvidíš ceník.";}
  • Pokliže se nesplnila ani jedna předchozí podmínka (else), tak
    • vypiš uživateli na stránku větu Vyber si nějakou stránku, aby se ti mohl zobrazit text: Služby, nebo Ceník
    • else{
      echo "Vyber si nějakou stránku, aby se ti mohl zobrazit text:"; 
      echo "<a href='?stranka=sluzby'>Služby</a>, nebo <a href='?stranka=cenik'>Ceník</a>.";
      }

 

Podmínky a výpis textu

Samozřejmě, že by tento podmínkovací (routovací) skript šel zapsat i přehledněji, ale pokud budu mít pod sebou třeba padesát záznamů (padesát různých stránek, tak by to nemuselo být přehledné). Ale můžeme si to ukázat:

<html> 
  <head> 
    <meta charset="utf-8"> 
    <title>Název stránky (později se bude dynamicky měnit)</title> 
  </head> 
  <body> 
    <?php include "casti/hlavicka.php"; ?> 
    <?php include "casti/menu.php"; ?> 
    <?php 
      $stranka = $_GET['stranka']; 
      if($stranka== "sluzby"){
        echo "Jsi na stránce služeb.";
      }elseif($stranka == "cenik"){
        echo "Jsi na stránce, kde uvidíš ceník.";
      }else{
        echo "Vyber si nějakou stránku, aby se ti mohl zobrazit text:"; 
        echo "<a href='?stranka=sluzby'>Služby</a>, nebo <a href='?stranka=cenik'>Ceník</a>.";
      }   
   ?>

Je to prostě opticky delší kód.

Podmínky a zobrazení obsahu

Skript si nyní upravíme tak, aby zobrazoval rovnou při zadání správných parametrů určené stránky (includoval je). Stačí skript jen opravdu trošičku poupravit:

<html> 
  <head> 
    <meta charset="utf-8"> 
    <title>Název stránky (později se bude dynamicky měnit)</title> 
  </head> 
  <body> 
    <?php include "casti/hlavicka.php"; ?> 
    <?php include "casti/menu.php"; ?> 
    <?php 
      $stranka = $_GET['stranka']; 
      if($stranka== "sluzby"){
        include "casti/sluzby.php"; 
      }elseif($stranka == "cenik"){
        include "casti/cenik.php";
      }else{
        echo "Vyber si nějakou stránku, aby se ti mohl zobrazit text:"; 
        echo "<a href='?stranka=sluzby'>Služby</a>, nebo <a href='?stranka=cenik'>Ceník</a>.";
      }   
   ?>

Zarovnávat tento kód už nebudu. Jak zde vidíte, stačilo pouze trošku pozměnit události, co se mají stát při splnění podmínky – tedy místo vypsání nějakého textu (echo) zobrazit nějaký soubor (include).

 

To je pro dnešek vše. Snad se Vám návod na routování v PHP líbil.