Ceník | Previo API

Ceník

Popis

Ceník ubytování se stejnou funkcionalitou a html strukturou jako ceníky použité na webových stránkách hotelů vytvářených naší společností.

Vlastnoti:

  • Jednoduchá souborová cache
  • Podporované jazyky cs, en, de a sk
  • Přepínání sezón pomocí JavaScriptu
  • Ceny za pokoj / za osobu

Stáhnout zdrojový kód

Historie změn

Datum Změna
17.7.2009 Přidána slovenština
20.7.2009 Přesnější názvy CSS tříd
20.7.2009 Opraven neplatný formátovací znak v anglickém překladu

Používání

Nahrajte základní třídu Previo_PriceList ze skutečného umístění a v konstruktoru nastavte přihlašovací jméno, heslo, adresář pro uložení cache a adresy wsdl souborů.

require_once 'Previo/PriceList.php';
$priceList = new Previo_PriceList(array(
    'login'    => 'prihlasovaci_jmeno',
    'password' => 'heslo',
    'cachedir' => 'cesta_k_adresari',
    'booking' => array(
        'wsdl' => 'https://api.previo.cz/v1/wsdl/booking.wsdl'),
    'hotel' => array(
        'wsdl' => 'https://api.previo.cz/v1/wsdl/hotel.wsdl'),
    'system' => array(
        'wsdl' => 'https://api.previo.cz/v1/wsdl/system.wsdl')));

Nastavte id hotelu, termín, jazyk a měnu.

$priceList
    ->setHotId(1)
    ->setTerm(array('from' => '2009-01-01', 'to' => '2009-12-31'))
    ->setLang('cs')
    ->setCurrency('CZK');

Nyní už stačí jen zavolat metodu render(), která vrátí HTML kód ceníku.

echo $priceList->render();

Každé další volání metody render() se stejnou kombinací id hotelu, termínu, jazyka a měny už vrací kód uložený v souboru v adresáři cachedir. Vůbec nedochází k připojení na Previo server.

Nakonec se aktivuje přepínání sezón, na to stačí zavolat JavaScript funkci previoLoadPriceList(). Je potřeba to udělat, když je celý dokument připraven. Využijte např. 

<body onload="previoLoadPriceList()"></body>

nebo některou z JavaScript knihoven (jQuery, Prototype).

Možná vylepšení

Pravidelná údržba

První volání metody render() vyžaduje připojení k Previo serveru. Není dobré, aby tato úloha ležela na bedrech někoho z návštěvníků vašich stránek. Vytvořte si proto cron úlohu a ceníky generujte v pravidelných intervalech, návštěvnící pak budou vidět již jen nacachované výsledky.

// soubor cronCenik.php
 
// nejdriv je potreba promazat adresar chachedir...
 
$priceList = new Previo_PriceList(...);
$priceList->setTerm(array(...));
// pro vsechny hotely propojene s Previem
foreach ($hotIds as $hotId) {
    $priceList->setHotId($hotId);
    // vase stranky jsou cesky a anglicky
    foreach (array('cs', 'en') as $lang) {
        $priceList->setLang($lang);
        foreach (array('CZK', 'EUR') as $currency) {
            $priceList->setCurrency($currency);
            // render naprazdno, vysledek se ulozi do cachedir
            $priceList->render();
        }
    }
}

Cache

Použitá metoda cache je primitivní. Pokud používáte nějaký vlastní způsob (memcache, Zend_Cache), použijte ho.

Překlady

Třída Previo_PriceList obsahuje překladovou metodu _translate() a řetězce uložené ve statickém poli. Pokud používáte jiný systém (gettext, konstanty), nahraďte tyto struktury vaším vlastním řešením.

Změna struktury HTML kódu

Veškerý HTML kód se nachází v souboru template.php. Přidávejte elementy nebo názvy CSS tříd dle libosti.