Či už ste začiatočník-profesionál, vývojár alebo dizajnér, tieto príručky Vám ponúknu sprievod pre každý aspekt inštalácie a použitia Drupalu. Tento text píšu a upravujú dobrovoľníci. Ak si myslíte, že viete prispieť svojou troškou, neváhajte a vylepšite to tu! Na upravovanie príručiek je potrebné len sa zaregistrovať na drupal.sk. Po registrácii je možné stránku editovať pomocou záložky Upraviť. Pridať novú stranu môžete cez odkaz Pridať zviazanú stranu.
Začiatok je najdôležitejšia časť práce. – [ Platón ]
Táto časť vám spostredkuje nevyhnutné základy, ktoré potrebujete na prípravu vašich prvých stránok v Drupale.
Na príručkách sa pracuje, prosíme vás o trpezlivosť. Ďakujeme
Ľudia často opisujú Drupal ako „systém na správu obsahu“ (CMS). Na rozdiel od typického CMS je však viac zameraný na konfigurovateľnosť a prispôsobenie.
Jeho architektúra poskytuje ohromnú flexibilitu a pritom umožňuje aj neprogramátorovi postaviť pomerne rozsiahle a komplexné weby.
V prípade že chcete vediet viac, prečítajte si prehľad na http://drupal.org/…ore/overview
Skôr než Drupal nainštalujete, pohrajte sa s ním a spoznajte, čo vám môže ponúknuť a ako dosiahnete, čo potrebujete.
Táto sekcia vám pomôže v rozhodovaní, či je Drupal vhodný pre váš projekt.
Čas, ktorý na začiatku investujete do spoznania systému, sa vám v dlhodobom horizonte vráti „aj s úrokmi“.
Drupal je súčasťou technologického zásobníka, ktorý obsahuje množstvo dôležitých vecí:
Server je počítač, ktorý poskytuje informácie a služby pre ostatné počítače v sieti.
Operačný systém je softvér, ktorý beží na serveri. Unix, Linux, BSD, OS X a Windows je len niekoľko príkladov.
Databáza je štruktúrovaný zber záznamov. Drupal používa databázu na ukladanie väčšiny obsahu a nastavenie pre vaše stránky, niektorých obsahov, ako sú mediálne súbory zvyčajne uložené v súborovom systéme servera.
Webový server je softvérový komponent, zodpovedný za doručovanie webových stránok. Príkladom sú Apache a Microsoft IIS.
PHP je programovací jazyk, ktorý umožňuje webovým vývojárom vytvárať dynamický obsah, ktorý pracuje s databázou.
Drupal slúži na budovanie dynamických webových stránok, ktoré ponúkajú širokú škálu funkcií a služieb, vrátane správy užívateľov, publikačnej workflow, diskusie, agregovanie metaúdajov a XML publikovanie obsahu pre zdieľané účely. Drupal inštalácia sa obvykle skladá z kombinácie základného a pridaných modulov.
Tip Drupal 5 a 6 pobežia aj na php verzii nižšej ako 5. Drupal 7 pracuje na PHP 5.2.
Hoci Drupal ponúka veľmi silný a pružný rámec, ktorý je použitý na vybudovanie prakticky akejkoľvek webovej stránky, možno nie je najlepšie riešenie pre vaše konkrétne požiadavky.
Existuje niekoľko situácií, kedy Drupal môže alebo nemusí byť vašou najlepšou voľbou:
Pripravujeme kompletny drupal slovnik. Ak neviete čo znamenajú niektoré výrazy kliknite: http://drupal.org/…/terminology Ďakujeme za pochopenie.
Chcete vybudovať internetovú stránku, ale neviete, kde začať. Na tom to mieste sa dozviete o niektorých ústredných konceptoch.
Hlavným stavebným kameňom Drupal je uzol. Slovo ‚node‘ (uzol) nie je súčasťou nejakej siete. Naopak, predstavte si ho ako kus puzzle, z ktorých sa skladajú stránky. Uzol môže byť súčasťou fóra, blogu alebo knihy. Pomocou modulu Content Construction Kit si môžete vytvoriť ľubovoľné množstvo užívateľských uzlov. Pamätajte, že každý uzol má typ – typ obsahu. Má tiež Uzol-Node ID, Nadpis, a Telo, a dátum vytvorenia, autora a niektoré ďalšie vlastnosti. Je uložený spolu so všetkými ostatnými uzlami v jednej z tabuliek v databáze.
Nech vás neprekvapí, že už základný Drupal obsahuje mnoho tabuliek. Jadro ich má asi 50. Aby ste získali predstavu tom, čo ktorá tabuľka obsahuje, je treba venovať im bližší pohľad,
Užívatelia majú vlastné tabuľky a niektorí z nich sú autormi uzla. Takže medzi tabuľkou používateľov a tabuľkou uzlov existuje vzťah. Jediným spôsobom ako nájsť tento vzťah, je prehľadávať všetky prvky oboch tabuliek, kým nenájdeme príslušné položky. Našťastie pre nás, databázový server je veľmi rýchly.
Každý uzol môže mať neobmedzený počet komentárov. Komentáre sú uložené v samostatnej tabuľke. Ak chcete nájsť všetky komentáre v jednom uzle, bude potrebné hľadať v celej tabuľke komentárov.
Pozrime sa na adresný riadok prehliadača. Pravdepodobne obsahuje http://drupal.sk/node/398. Táto adresa predstavuje spôsob, ako povedať Drupalu „Načítaj všetky relevantné informácie pre uzol 398, vrátane akýchkoľvek vzťahov (komentáre, užívatelia, atď) a zobraz ich“. Tomu sa hovorí databázová požiadavka.
Väčšina databázových požiadaviek Drupalu je napevno zadaná v moduloch. Napríklad modul Tracker vyhľadá všetky uzly a zoradí výsledky podľa dátumu. Tak to funguje aj na vašom webe, pokiaľ ste tento modul aktivovali.
Prejdite myšou po menu a sledujte v stavovom riadku linky jednotlivých položiek. Ihneď budete mať predstavu o tom, aké databázové požiadavky Drupal vykonáva.
V Drupal moduloch môžete vykonávať veľa dátových operácií. Napríklad už pri načítaní stránky, ktorú ste sami vložili do systému, vidíte v hornej časti stránky záložky zobraziť/upraviť. Na iných stránkach sa tieto záložky objaviť nemusia. To je automatizované správanie definované užívateľskými privilégiami.
Menu sa zobrazuje v blokoch. Bloky sú stĺpce po ľavej alebo pravej strane vašej webovej stránky. Od D6.1 je modul menu v predvolenom nastavení aktivovaný.
Všetky moduly sa dodávajú s predvolenými položkami v menu. Často ich je potrebné iba aktivovať, alebo stačí len zapnúť blok. Môžete zmeniť jeho umiestnenie v stromovej štruktúre menu, ak si budete priať, môžete zmeniť jeho názov. Vo viacerých prípadoch sa položka menu zobrazuje len ak máte potrebné provilégiá. Napríklad položka Administrácia sa zobrazuje len návštevníkom, ktorí majú práva administrátora.
Môžete vytvoriť aj vlastné položky menu, musíte však napísať platnú cestu k obsahu.
Drupal má niekoľko rôznych typov obsahu. Základná sada je pomerne malá, ale veľmi flexibilná. V predvolenom nastavení sú len dva druhy obsahu, Stránka (page) a Story. Z historického pohľadu je medzi nimi rozdiel, v súčasnosti sú to iba rozdielne typy uzlov. Ako ich používať, je len na vás. Ak chcete povoliť ďalšie typy obsahu, ktoré sú tu uvedené, je potrebné ísť do Administrácia > Moduly a vyberte typ, ktorý chcete povoliť.
V predchádzajúcich verziách sDrupalu sa dnešné „typy obsahu“ nazývali „typy uzla“. V databáze je obsah uzla uložený v tabuľkách node a node_revisions.
Blog
Blogy alebo weblogy je iné pomenovanie pre on-line denník alebo diár. Je to miesto, kde si členovia komunity môžu písať a zdieľať svoje myšlienky s inými.
Kniha Stránky knihy sú navrhnuté tak, aby boli súčasťou spoločnej knihy. Príklad spoločnej knihy je napríklad táto sada príručiek.
Komentáre
Komentáre v skutočnosti nie sú uzly, sú samostatné obsahový typ. Komentáre umožňujú pridať komentáre k inému uzlu, ktorý bol vytvorený.
Fórum
Diskusné fóra sú kolekcie uzlov a ich komentáre.
Stránka
Stránky sú jednoduché uzly, obvykle používané pre statický obsah, ktorý môže (ale nemusí) byť vložený do hlavnej navigačnej lišty.
Anketa
Anketa je výber viacerých možností, otázka je položena a používatelia môžu odpovedať a vidieť odpovede.
Story
Príbehy sú generické stránky typu, pre správu obsahu. Obvykle sa používajú na informácie, ktoré sú relevantné iba v určitom čase (napr. novinové články) a očakáva sa, že časom stratia aktuálnosť a budú zaradené do archívu.
Okrem týchto základných typov, si môžete vyrobiť vlastný typ obsahu. Vytvoríte ich cez menu Správa obsahu > Typy obsahu > Pridať typ obsahu. Niektoré moduly obsahujú ďalšie druhy obsahu so špecializovanými funkciami. Ich zoznam je uvedený v sekcii Obsah.
Ak by ste chceli vytvoriť svoj vlastný špeciálny typ obsahu, použite na to Content Construction Kit (CCK, od D7 v jadre), ktorý vám umožní pridať ďalšie políčka pre svoje obsahové typy. Ďalšie informácie nájdete (TODO: doplniť odkaz na Content Construction Kit Handbook)
Príklady Drupal trasy
Ako nájsť Drupal cesty? Ak chcete nájsť Drupal cestu určitej stránky, prejdite na admin>> obsah. Uvidíte zoznam všetkých stránok, ktoré ste vytvorili.
Ľudia, ktorí už predtým používali iné editory (FrontPage, Dreamweaver) alebo CMS (Joomla aťď) sa pýtajú, akým spôsobom pristupovať k admin oblasti alebo „back-end“ v Drupale. Niekedy sa pýtajú, ako si môžu prezrieť zmeny.
Zistili sme, že ľudia, ktorí nikdy nepoužili CMS, sú často oveľa menej zmätení z tohto prístupu, ako ľudia, ktorí predtým používali systémy, kde ‚vstup‘ vyzeral úplne odlišné od ‚výstupu‘. Je to len vec uhla pohľadu.
Tietom stránky obsahujú odkazy na informácie o jednotlivých verziách Drupalu.
Aktuálna stabilná verzia je Drupal 6. Nasledujúca verzia bude Drupal 7. Je vo fáze pred vydaním ostrej verzie (január 2010). Drupal 5 je stále podporovaný.
Ako zistím na ktorej verzii Drupalu beží môj web? Použite: Administrácia > logy > Status report. Ak používate Drupal 5 a vyšší, v tabuľke nájdete číslo verzie.
Alternatívne, pozrite sa na začiatok súboru s názvom CHANGELOG.txt v koreňovom priečinku vašej inštalácie drupalu.
Ak CHANGELOG.txt chýba, môžete skontrolovať v system.module, kde sa nachádza definícia podobná tejto:
define(‚VERSION‘, ‚5.5‘);
Táto definícia vám ukáže, ktorú verziu používate. Ak sa definícia v súbore nenachádza,používate verziu staršiu ako 4.7.2.
Tu nájdete odkaz na seriál venovaný Drupalu 4.7.x, ktorý bol uverejnený na serveri Interval.cz.
Vzhľadom k tomu že Drupal 4.7.x je už zastaralý, ponechávame tu odkaz na tento seriál z toho dôvodu, že základné koncepty sa nezmenili a aj v tomto seriáli je možné nájsť zaujímavé informácie.
Keďže Drupal je vysoko modulárny a škálovateľný, dodáva sa zvlášť jadro a základné moduly a zvlášť moduly vyvíjané komunitou. Na vás je potom vyskladať si zo súčiastok kompletný systém.
Keďže ale na sprevádzkovanie komplexnejšieho webu je často nevyhnutné nainštalovať a nastaviť viacero modulov, umožňuje Drupal zostaviť si vlastnú distribúciu, ktorá v sebe obsahuje moduly predinštalované a predkonfigurované.
V komunite existuje viacero zabehaných a živo vyvíjaných distribúcií. Každá z nich je zameraná trochu iným smerom (video, noviny, project management, atď.) aktuálny zoznam nájdete napr. na drupaldistrowatch.com
Drupalovská komunita ponúka veľmi veľa informácií o drupale a budovaní webov na ňom.
Drupal obsahuje inštalačný skript, ktorý automaitcky vytvorí databázové tabuľky a nastaví správne hodnoty do súboru settings.php. Táto sekcia sa zaoberá prípravou na inštaláciu, samotnou inštaláciou a krokmi, ktoré by mali byť vykonané po úspešnej inštalácii Drupalu.
Iné nástroje Niektoré kroky inštalácie môžu byť vykonané pomocou grafických aplikácií alebo nástrojmi, ktoré poskytuje webhosting v administračnom rozhraní, napr. vytváranie databázy, nahrávanie a zmena práv súborov. Táto dokumentácia sa zaoberá hlavne ako to urobiť pomocou príkazového riadku. Pre informácie ako použiť iné nástroje bude potrebné pozrieť si dokumentáciu danej aplikácie alebo daného nástroja poskytovaného webhostingom.
Vytvorenie testovacej stránky na lokálnom počítači Je veľmi dobrým zvykom vyvýjať a testovať na oddelenej stránke, napr. na vlastnom počítači, predtým ako urobíte zmeny na skutočnej stránke. Testovacia stránka Vám umožní zistiť dopad nových upgradov, otestovať nové moduly, zmeny v témach bez negatívneho efektu na živej stránke.
Web server
Drupal je možné prevádzkovať na webserveroch Apache aj IIS.
Apache (odporúčaný)
Drupal je vyvíjaný nezávisle od typu webserveru, ale nemáme žiadne ďalšie informácie o možnosti použitia na iných typoch webserverov.
Celková veľkosť nainštalovaného Drupalu záleží od toho, čo si na svoju stránku pridáte, ale samotné jadro Drupalu zaberá asi 3MB (nekomprimované). Presná veľkosť záleží od verzie Drupalu, ktorú ste nainštalovali.
PHP
Odporúčané: PHP 5.2 alebo vyššie
Minimálne: PHP 4.3.5 alebo vyššie
Databázový server
Odporúčaný: MySQL 4.1 alebo MySQL 5.0
PostgreSQL 7.4 alebo vyššie
Každá verzia drupalu obsahuje v koreňovom priečinku aktualizačný skript update.php.
Presný postup tej-ktorej verzie nájdete popísaný v súbore UPGRADE.txt v koreňovom priečinku inštalácie.
Drupal potrebuje pri inštalácii prístup k databáze. Váš databázový užívateľ potrebuje dostatočné práva pre beh Drupalu. ďalšie informácie o právach a krokoch ako vytvoriť databázu pomocou príkazového riadku nájdete v súboroch INSTALL.mysql.txt (pre MySQL) alebo INSTALL.pgsql.txt (pre PostgreSQL).
Ak chcete vytvoriť databázu pomocou PHPMyAdmin(PHPPgAdmin) alebo cez webové adminstračné rozhranie, pozrite si dokumentáciu alebo sa spýtajte poskytovateľa Vášho webhostingu.
Ak databázu vytvorenú už máte, poznačte si meno databázového užívateľa, heslo, názov databázy a hostname (pravdepodobne localhost, ak nie je uvedené inak). Tieto údaje neskôr zadáte behom inštalácie Drupalu.
Drupal obsahuje štandartný konfiguračný súbor default.settings.php v adresári sites/default. Pred spustením inštalácie musíte vytvoriť kópiu tohto súboru v sites/default a pomenovať ju „settings.php.“ (Poznámka: nepremnujte iba štandartný súbor, ale skopírujte ho. Drupal vyžaduje, aby súbor default.settings.php existoval.) Mali by ste mať oba súbory default.settings.php a settings.php v adresári sites/default. Inštalátor Drupalu upraví súbor settings.php podľa údajov zadaných behom inštalácie.
Pokiaľ chcete nainštalovať Drupal na stroj s operačným systémo založeným na UNIXe (drvivá väčšina webhostingov), bude zrejme potrebné zmeniť práva na zápis do konfiguračného súboru.
Po vytvorení nového súboru sa uistite, či je možné do neho zapisovať. Práva na zápis môžete udeliť priíkazom (z inštalačného adresáru): chmod a+w sites/default/settings.php alebo chmod 666 sites/default/settings.php
Drupal by mal zmeniť práva súboru späť po inštalácii. Uistite sa však o tom a sami zmeňte práva ak sa tak nestalo. Môžete použiť podobný, jemne modifikovaný príkaz, ktorým práva na zápis odoberiete:
chmod a-w sites/default/settings.php alebo chmod 444 sites/default/settings.php
Drupal v súčasnosti (december 2009) ponúka viac ako 5000 modulov, ktoré rozširujú možnosti základného systému prakticky donekonečna :)
v skutočnosti však na realizáciu vášho webu pravdepodobne budete potrebovať len niekoľko z nich.
Bez niektorých modulov, ktoré nie sú súčasťou jadra Drupalu, sa jednoducho nezaobídete. Táto stránka slúži ako predstavenie najčastejšie používaných modulov a ich stručné charakteristiky, prípadne odkaz na alternatívy.
Odorúčame vám prezrieť si zoznam aktuálne najpoužívanejších modulov, ktorý nájdete na http://drupal.org/project/usage/
Generuje zoznamy objektov – uzly, užívatelia, termíny taxonómie podľa vami zadaných kritérií a parametrov. Ideálne na vytváranie blokov, stránok, súhrnov, tabuliek.
Umožňuje vkladať do textu na predznačené miesta údaje z databázy. (Od verzie 7 súčasť jadra)
Postavte si vlastný obsahový typ s vlastnou zostavou editovateľných polí. Obsahové typy môžu byť medzi sebou prepojené a vytvárať sieť vzťahov. Pre pole určíte spôsob zadávania(widget), spôsob prezentácie (formatter). (Od verzie 7 súčasť jadra)
Vysoko konfigurovateľné vytváranie ľahko zapamätateľných ciest k obsahu. Namiesto http://drupal.sk/node/385 tak uvidíte napr. http://drupal.sk/…-moduly.html
Náhrada za štandardne dodávaný modul Upload. Je to CCK pole umožňujúce pripájať súbory k uzlom.
Rozšírenie pre FileField, umožnujúce pripájať k uzlom obrázky.
Nastavte si profily pre spracovanie nahratých obázkov. Umožňuje generovať a zobrazovať jeden obrázok do viacerých veľkostí, tvarov, prípadne aj zložitejšie efekty. Dôležitá prerekvizita je modul ImageAPI.
Kompletná sada na vkladanie a zobrazovanie dátumov, časových zón, vlastných formátov, udalostí.
Integrácia analytických nástrojov o návštevnosti stránok.
V prípade že nemáte možnosť využívať cron na vašom webhostingu, tento modul vám poskytne dobré služby namiesto neho. (Od verzie 7 súčasť jadra)
Vytváranie, správa, štatistiky webových formulárov na vypĺňanie návštevníkmi vašich stránok.
Ochráňte svoje formuláre pred nežiadúcimi príspevkami zo spambotov.
API pre používanie wysiwyg editorov na vašich stránkach. Obsahuje podporu pre veľké množstvo editorov – (F)CKEditor, TinyMCE, BUEditor a ďalšie.
Jeden z najpopulárnejšich wysiwyg editorčekov.
Manažér obrízkov a súborov pre redaktorov obsahu. Umožňuje vkladanie obrázkov do textu atď.
Obľúbené js riešenie na prezentáciu obrázkov.
Definovanie kľúčových slov pre každú stránku zvlášť.
Generovanie mapy stránok pre zlepšenie indexovania vo vyhľadávačoch.
Ručné, prípadne automatické vytváranie záloh databázy do priečinka na serveri.
Okrem modulov na budovanie stránky sú tu aj moduly, ktoré uľahčujú prácu vývojárom a správcom stránky.
Pohodlné roletkové menu, používané administrátorom namiesto klasického bloku Navigácia. Šetrí mnoho času, pretože obsahuje mnoho vychytávok spríjemňujúcich prácu.
Sada vývojárskych modulov. Testovanie výkonu, štatistiky, generovanie obsahu, pomôcky pri témovaní, výpise premenných a mnoho ďalšieho.
nie tak celkom modul, skôr sada shell skriptov pre prácu s drupal z príkazového riadku. Ohromne uľahčuje najmä inštaláciu, aktiváciu a deaktiváciu modulov. Na úspešné použitie však potrebujete shell prístup na server.
Skladá sa z modulu pre drupal a Firefox pluginu. Zobrazuje premenné drupalu v konzole rozšírenia Firebug.
Balík pre automatizované testovanie
Na tomto mieste budeme zhromažďovať návody na realizáciu rôznej funkcionality, ktorú zvládnete bez programovania.
Predvčerom mi zákazník poslal e-mailom požiadavku, že chce istý zoznam na jeho webe zoradiť podľa abecedy a pridať k nemu aj abecedný index. Taký, kde je každé písmeno abecedy odkazom za stránku, na ktorej budú zobrazené len tie položky zoznamu, ktoré začínajú na konkrétne písmeno. Vďaka tomu, že jeho web je postavený na Drupale som to mal hotové veľmi rýchlo a odozva to potvrdila. "Nuž, niet nad spokojného zákazníka", vravím si v takých chvíľach. Stále mi však vŕtalo hlavou, či na to riešenie, ktoré som spravil bez použitia na to určeného modulu, predsalen nejaký neexistuje. Existuje. Volá sa Views Alpha Pager a jeho jedinou chybou je, že pre Drupal 6, resp. pre Views 2 neexistuje vydanie. A tak bolo pravdepodobne moje riešenie asi jediným možným (i keď variácií naň môže byť viacero). Tak sa na to poďme pozrieť:Celý trik je v tom, že písmeno abecedy budeme Drupalu podsúvať v URI, teda v odkaze. Takže všetky články začínajúce na A budú mať adresu www.nasweb.sk/clanky/a. Takýto parameter predávaný v URI sa vo Views terminológii volá argument. Jeden si teda v našom view aj hneď pridáme a nastavíme ho zhruba podľa priloženého obrázku.
Kľúčovým nastavením je v ňom tzv. Glossary mode, ktorý zaručí práve to, že si budeme môcť nastaviť limit pre počet písmen v argumente. My kontrolujeme len prvé, takže limit bude celkom logicky 1. Toto je tá jednoduchšia, klikacia časť. Ak chceme pridať nad view aj abecedný index tak nás čaká aj trošku písania kódu, i keď je to kód veľmi primitívny a väčšinu čas budeme aj tak používať len CTRL+C a CTRL+V. Tento kód bude vyzerať nejako takto: <div class="abeceda"> <a href="http://www.nasweb.sk/clanky/a">a</a> <a href="http://www.nasweb.sk/clanky/b">b</a> <a href="http://www.nasweb.sk/clanky/c">c</a> a tak ďalej až po Z. A napíšeme ho, samozrejme, do hlavičky view. Nezabudnite zvoliť príslušný vstupný formát tak, aby akceptoval všetky HTML tagy, ktoré ste použili, pretože ako som už naznačil, variácií na tento nápad môže byť viac a možno prídete na niečo iné, čo by sa vám ešte zišlo. Ja vám pre tentokrát môžem sľúbiť len to že ak sa mi podarí zistiť ako nastaviť variabilnú dĺžku argumentu, napíšem ešte lepší návod. Totižto, jediným problémom s ktorým si zatiaľ neviem rady je nastavenie view tak aby bral do úvahy argumenty o rôznej dĺžke. To znamená, že článok začínajúci napríklad slovom Drupal sa objaví na stránke www.nasweb.sk/clanok/d ale aj www.nasweb.sk/clanok/dru. Zatiaľ som sa dozvedel len toľko, že si na to budem musieť napísať vlastný argument handler. Ak sa mi to podarí, rád sa oň s vami podelím.
Návody na drupal zo serverov tretích strán.
Táto príručka obsahuje informácie o budovaní tém pre drupal.
Hoci je redakčný systém Drupal v súčasnosti považovaný za jedno z najlepších (ak nie vôbec najlepšie) riešení pre realizáciu dynamického webu pomocou voľne dostupných nástrojov, v oblasti ponuky vzhľadov (či tém, ak chcete) zásadne pokrivkáva. Nie je to len môj názor – stretol som sa s ním pri mnohých porovnaniach jednotlivých redakčných sytémov, či dokonca pri stretnutiach s klientami (pričom v oboch prípadoch vždy jasne víťazil WordPress). To, prečo to tak je, mi síce ostáva záhadou, pretože že Drupal má v tomto smere veľmi bohaté možnosti, ale v tomto článku to nechcem ani nebudeme riešiť.
Poďme sa radšej pozrieť na to ako pripravíme grafickú tému pokiaľ nechcem použiť žiadnu z voľne dostupných (teda nechceme aby náš web vyzeral ako ďalšie stovky iných). Dá sa to urobiť tak, že nájdeme voľne dostupnú grafickú tému najviac sa podobajúcej výsledku, ktorý chceme dosiahnúť (napríklad počtom a umiestnením regiónov). Ťažisko celej práce je potom na nekonečnom upravovaní príslušných .css a .tpl súborov za významnej nejakého developer nástroja pre váš prehliadač. Táto možnosť mne osobne pripadá ako najzdĺhavejšia a „najšpinavšia“.
Druhou možnosťou je použitie grafickej témy Zen. Táto sama o sebe žiadnu grafiku neobsahuje – je to skôr balík podrobne zdokumentovaných súborov pre vytvorenie novej témy. Ak ste náhodou o nej nevedeli, odporúčam aspoň vyskúšať. Pre jednoduchý template je to však ako ísť s tankom na zajace a ja osobne som sa často cítil ako Alenka v ríši divov.
Tretia možnosť, a tu sa konečne dostávame k niečomu konkrétnemu, je grafickú tému vytvoriť. V tomto prípade pôjdeme úplne opačným smerom – nebudeme upravovať žiadnu existujúcu tému, ale vytvoríme si svoju vlastnú na zelenej lúke a do nej neskôr pridáme Drupal. Skôr, než začneme, znovu si pripomeňme že ide o návod ako vytvoriť grafický vzhľad pre veľmi jednoduchý web – taký, v ktorého prípade by predchádzajúce dve možnosti znamenali množstvo nadbytočného HTML/CSS kódu.
Najprv povedzme Drupalu niečo o našej novej téme. Nech má hlavičku, pod ňou menu a pod ním tradičný trojstĺpcový layout s fixnou šírkou. V adresári sites/default/themes vytvoríme nový podadresár a pomenujeme ho napríklad test_theme. V ňom ako prvý vytvoríme súbor test_theme.info a vložíme doň tieto informácie:
name = Testovacia téma
description = Téma pre účely článku
version = 1.0
core = 6.x
engine = phptemplate
regions[menu] = "Menu"
regions[content] = "Hlavný obsah"
regions[left] = "Vľavo"
regions[right] = "Vpravo"
V prvých piatoch riadkoch sme postupne definovali názov tejto témy (zobrazený v admin rozhraní na stránke so zoznamom vzhľadov), jej popis (tamtiež), verziu, ďalej verziu Drupalu s ktorou je téma kompatibilná a engine, ktorý bude táto téma používať. Štandardný PHPtemplate je fajn.
V ďalších štyroch riadkoch sme definovali regióny, do ktorých budeme umiestňovať jednotlivé časti obsahu. Ak nechcete používať iné časti webu ako left, right, content, header, footer, tak ich nemusíte definovať vôbec – tieto vymenované predpokladá Drupal automaticky (a počnúc Drupalom 7 aj región help).
Čas tejto akcie: 5 minút.
Aby sme mali pekný zoznam tém na stránke ich administrácie, vytvorme z nášho grafického návrhu súbor screenshot.png a nakopírujeme ho do tohto adresára. Dodržte rozmer 150*90 pixelov.
Čas tejto akcie: 1 minúta.
Teraz sa pozrieme na samotné html. Náš čistý návrh bude vyzerať takto nejako:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sk" lang="sk">
<head>
<title>Názov webu</title>
</head>
<body>
<div id="wrapper">
<div id="header"></div>
<div id="menu">Menu</div>
<div id="left">Stĺpec vľavo</div>
<div id="content">
Obsah
</div>
<div id="right">Stĺpec vpravo</div>
</div>
</body>
</html>
Tento zdrojový kód treba umiestniť do súboru ktorý sa volá page.tpl.php a hovorí Drupalu ako bude vyzerať layout stránky. Nie je ešte finálny – budeme ho upravovať.
Čas tejto akcie: 5 minút.
Analogicky k nemu bude css vyzerať podobne tomuto:
body {margin:0px;padding:0px;font-family: Arial, "MS Trebuchet", sans-serif;color:#333;}
#wrapper {width:1024;margin-left:auto;margin-right:auto;}
#header {height:200px;background-image:url('images/header.jpg');}
#menu {height:30px;}
#left {width:212px;float:left;padding:0px;margin:0px;}
#right {width:212px;float:left;padding:0px;margin:0px;}
#content {width:600px;float:left;padding:0px;margin:0px;}
Pomenujeme ho style.css a uložíme do adresára k ostatným súborom. CSS súbor s týmto názvom prečíta Drupal automaticky. Ak vám nekontrolovane nabobtná a budete ho chcieť rozdeliť na viac css súborov, budete to Drupalu musieť povedať v súbore .info pomocou kľúča stylesheets. Všimnite si, že obrázok pre hlavičku webu „ťahám“ z adresára images – je to podadresár v adresári našej témy. Toto je, samozrejme, to úplne najnutnejšie css. Vy budete pravdepodobne chcieť iné rozmery jednotlivých častí webu, iný typ písma, pridať farbu pozadia alebo obrázok, atď. V tomto konkrétnom prípade bude napríklad pomocou css prerobiť menu na horizontálne, aby sa nám tam vmestilo.
Čas tejto akcie: 5 minút.
Poďme teraz späť k nášmu súboru HTML. Toto je ten moment, kedy téma prestane byť len statickou HTML stránkou pretože k nej pridáme „motor“ z Drupalu. Robím sa to pomocou premenných, ktoré obsahujú Drupalom dynamicky vygenerovaný obsah. Pozrime sa najprv na hlavičku HTML. V nej budeme určite chcieť zahrnúť naše CSS a neskôr prípadne i javascriptové súbory. Môžme to urobiť tak, že tam príslušné tagy napíšeme „natvrdo“, ale prečo si komplikovať život – nech to Drupal urobí za nás.
Miesto textu v tagu title teda napíšeme <?php print $head_title; ?> a Drupal nám do hlavičky bude automaticky generovať text podľa aktuálne zobrazenej stránky. Pod tento tag môžme vložiť ďalšie tri premenné:
<?php print $head; ?>
<?php print $styles; ?>
<?php print $scripts; ?>
Prvá z nich obsahuje meta tagy, kľúčové slová a podobne, ostatné dve sú celkom zrejmé – jedná sa o odkazy k CSS štýlom a skriptom.
Keď miesto textu Menu pridáme do div#menu podobným spôsobom premennú $menu, tak všetko, čo v administrácii blokov pridáte do regiónu s rovnakým názvom, sa v ňom automaticky objaví. V našom prípade tam pôjdu pravdepodobne primárne alebo sekundárne odkazy – nezabudnite vhodne upraviť CSS, ako som už naznačil vyššie.
Do div#content pôjde teda celkom analogicky premenná $content, ale neukvapujte sa ešte. Nezabudnite na veľmi dôležité premenné $tabs, $help, $messages. Zatiaľčo absencia posledných dvoch by na vás uvalila len isté informačné embargo (obsahujú nápovedu a hlášky o výsledku jednotlivých akcií na webe), chýbajúca premenná $tabs by vás odstrihla od charakteristických Drupalovských záložiek, veľmi užitočných napríklad pre úpravy článkov, či konfiguráciu webu všeobecne. Keďže tieto premenné nie vždy niečo obsahujú, zobrazme ich len ak áno.
<?php if ($tabs): print '<div class="tabs">'.$tabs.'</div>'; endif; ?>
<?php if ($help) { ?><div class="help"><?php print $help ?></div><?php } ?>
<?php if ($messages) { ?><div class="messages"><?php print $messages ?></div><?php } ?>
<?php print $content; ?>
Do div#left, div#right pôjdu teda celkom pochopiteľne premenné $left, $right. Výsledný page.tpl.php bude teda vyzerať takto:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sk" lang="sk">
<head>
<title><?php print $head_title; ?></title>
<?php print $head; ?>
<?php print $styles; ?>
<?php print $scripts; ?>
</head>
<body>
<div id="wrapper">
<div id="header"></div>
<div id="menu"><?php print $menu; ?></div>
<div id="left"><?php print $left; ?></div>
<div id="content">
<?php if ($tabs): print '<div class="tabs">'.$tabs.'</div>'; endif; ?>
<?php if ($help) { ?><div class="help"><?php print $help ?></div><?php } ?>
<?php if ($messages) { ?><div class="messages"><?php print $messages ?></div><?php } ?>
<?php print $content; ?>
</div>
<div id="right"><?php print $right; ?></div>
</div>
</body>
</html>
Čas tejto akcie: 5 minút.
A tým je vaša téma hotová. Je to, pochopiteľne, veľmi jednoduchá grafická téma, ale vytvorili ste ju úplne sami a za menej ako polhodinku, pričom ste sa nemuseli hrabať v niekoho iného HTML a CSS súboroch ale máte solídny základ pre ďalšie jej úpravy. Pravdepodobne budete pridávať ďalšie regióny – chýba nám napríklad pätička stránky. Neskôr budete chcieť pomocou súborov block.tpl.php, node.tpl.php, comment.tpl.php upraviť vzhľad blokov, článkov či komentárov. To už je na vás a na vašom štúdiu možností Drupalu, ktorú sú, ako som už bol býval naznačil v úvode, veľmi široké.
Na tomto návode som chcel hlavne ukázať že sa dá ísť aj opačným smerom ako upravovať vzhľad pre Drupal. Dá sa totiž, ako ste videli, vkladať Drupal do hotového vzhľadu. Pri jednoduchých stránkach je to podľa mňa tá najrýchlejšia a najčistejšia cesta.
Doporučená literatúra:Na tejto stránke časom nájdete rady ako začať s vývojom vlastných modulov. Zatiaľ len niekoľko odkazov v anglickom jazyku: – http://drupal.org/…butors-guide – Príručka pre vývojárov modulov – http://api.drupal.org – vynikajúca dukumentácia jadra, funkcií a APIs – http://drupalcontrib.org – dokumentácia API komunitných modulov – http://views.doc.logrus.com – Views 2 API manuál – …
Sem môžete pridávať rôzne rady a tipy týkajúce sa napríkla PHP, Drupal API, Javscriptu a jQuery, o ktorých si myslíte, že by sa mohli ďalším vývojárom pri ich tvorbe zísť.
Základnou funkciou na spúštanie databázových dotazov je db_query() Človek neznalý problematiky by mohol napísať SQL dotaz nasledovne
db_query("SELECT title FR OM node WHERE uid=".$_GET['uid']);
Takto napísaný dotaz je však náchylný na SQL injection – útok, pomocou ktorého je možné sa dostať k ľubovoľným dátam v databáze. Útočník by mohol správnym podsunutím vstupu (ako parameter uid pošle reťazec ‚1 UNION SELECT sid FR OM sessions‘) dosiahnuť aby sa vykonal napríklad dotaz:
SELECT title FR OM node WHERE uid=1 UNION SELECT sid FR OM sessions
čím získa session id všetkých prihlásených užívateľov a môže sa za prihlásiť na účet ľubovoľného z nich (napríklad aj admina ak mal záznam v tabuľke sessions)
Obrana proti SQL injection je overenie či je vstup požadovaného formátu a pri reťazcoch escapovanie znakov so špeciálnym významom (napríklad apostrofy). Toto vie aj spomínaná funkcia db_query(), len ju treba používať správnym a to nasledovným spôsobom: Namiesto vstupných premenných treba písať:
pričom vstupné premenné budú ďalšími parametrami funkcie db_query() . Napríklad:
db_query("SELECT title FR OM node WHERE uid=%d", $_GET['uid']);
Pokiaľ je vstupných premenných v dotaze viac, každú nahradíme príslušným kódom (%x) a samotné premenné budú druhým, tretím, švrtým atď. parametrom funkcie db_query() . Tá okrem iného pri použití takejto syntaxe vyskladá databázový dotaz tak, aby SQL injection nebol možný.
Pokiaľ potrebujte na dvojazyčnom webe CCK pole s výberom štátu ktoré sa zmení podľa vybraného jazyka môžete použiť nasledujúci kúsok kódu:
// jazyk
global $language;
// anglicke nazvy statov
$countries['en']['AF'] = "Afghanistan";
$countries['en']['AX'] = "Ĺland Islands";
$countries['en']['AL'] = "Albania";
$countries['en']['DZ'] = "Algeria";
$countries['en']['AS'] = "American Samoa";
$countries['en']['AD'] = "Andorra";
$countries['en']['AO'] = "Angola";
$countries['en']['AI'] = "Anguilla";
$countries['en']['AQ'] = "Antarctica";
$countries['en']['AG'] = "Antigua And Barbuda";
$countries['en']['AR'] = "Argentina";
$countries['en']['AM'] = "Armenia";
$countries['en']['AW'] = "Aruba";
$countries['en']['AU'] = "Australia";
$countries['en']['AT'] = "Austria";
$countries['en']['AZ'] = "Azerbaijan";
$countries['en']['BS'] = "Bahamas";
$countries['en']['BH'] = "Bahrain";
$countries['en']['BD'] = "Bangladesh";
$countries['en']['BB'] = "Barbados";
$countries['en']['BY'] = "Belarus";
$countries['en']['BE'] = "Belgium";
$countries['en']['BZ'] = "Belize";
$countries['en']['BJ'] = "Benin";
$countries['en']['BM'] = "Bermuda";
$countries['en']['BT'] = "Bhutan";
$countries['en']['BO'] = "Bolivia";
$countries['en']['BA'] = "Bosnia And Herzegovina";
$countries['en']['BW'] = "Botswana";
$countries['en']['BV'] = "Bouvet Island";
$countries['en']['BR'] = "Brazil";
$countries['en']['IO'] = "British Indian Ocean Territory";
$countries['en']['BN'] = "Brunei Darussalam";
$countries['en']['BG'] = "Bulgaria";
$countries['en']['BF'] = "Burkina Faso";
$countries['en']['BI'] = "Burundi";
$countries['en']['KH'] = "Cambodia";
$countries['en']['CM'] = "Cameroon";
$countries['en']['CA'] = "Canada";
$countries['en']['CV'] = "Cape Verde";
$countries['en']['KY'] = "Cayman Islands";
$countries['en']['CF'] = "Central African Republic";
$countries['en']['TD'] = "Chad";
$countries['en']['CL'] = "Chile";
$countries['en']['CN'] = "China";
$countries['en']['CX'] = "Christmas Island";
$countries['en']['CC'] = "Cocos (Keeling) Islands";
$countries['en']['CO'] = "Colombia";
$countries['en']['KM'] = "Comoros";
$countries['en']['CG'] = "Congo";
$countries['en']['CD'] = "Congo, The Democratic Republic Of The";
$countries['en']['CK'] = "Cook Islands";
$countries['en']['CR'] = "Costa Rica";
$countries['en']['CI'] = "Côte D'ivoire";
$countries['en']['HR'] = "Croatia";
$countries['en']['CU'] = "Cuba";
$countries['en']['CY'] = "Cyprus";
$countries['en']['CZ'] = "Czech Republic";
$countries['en']['DK'] = "Denmark";
$countries['en']['DJ'] = "Djibouti";
$countries['en']['DM'] = "Dominica";
$countries['en']['DO'] = "Dominican Republic";
$countries['en']['EC'] = "Ecuador";
$countries['en']['EG'] = "Egypt";
$countries['en']['SV'] = "El Salvador";
$countries['en']['GQ'] = "Equatorial Guinea";
$countries['en']['ER'] = "Eritrea";
$countries['en']['EE'] = "Estonia";
$countries['en']['ET'] = "Ethiopia";
$countries['en']['FK'] = "Falkland Islands (Malvinas)";
$countries['en']['FO'] = "Faroe Islands";
$countries['en']['FJ'] = "Fiji";
$countries['en']['FI'] = "Finland";
$countries['en']['FR'] = "France";
$countries['en']['GF'] = "French Guiana";
$countries['en']['PF'] = "French Polynesia";
$countries['en']['TF'] = "French Southern Territories";
$countries['en']['GA'] = "Gabon";
$countries['en']['GM'] = "Gambia";
$countries['en']['GE'] = "Georgia";
$countries['en']['DE'] = "Germany";
$countries['en']['GH'] = "Ghana";
$countries['en']['GI'] = "Gibraltar";
$countries['en']['GR'] = "Greece";
$countries['en']['GL'] = "Greenland";
$countries['en']['GD'] = "Grenada";
$countries['en']['GP'] = "Guadeloupe";
$countries['en']['GU'] = "Guam";
$countries['en']['GT'] = "Guatemala";
$countries['en']['GG'] = "Guernsey";
$countries['en']['GN'] = "Guinea";
$countries['en']['GW'] = "Guinea-Bissau";
$countries['en']['GY'] = "Guyana";
$countries['en']['HT'] = "Haiti";
$countries['en']['HM'] = "Heard Island And Mcdonald Islands";
$countries['en']['VA'] = "Holy See (Vatican City State)";
$countries['en']['HN'] = "Honduras";
$countries['en']['HK'] = "Hong Kong";
$countries['en']['HU'] = "Hungary";
$countries['en']['IS'] = "Iceland";
$countries['en']['IN'] = "India";
$countries['en']['ID'] = "Indonesia";
$countries['en']['IR'] = "Iran, Islamic Republic Of";
$countries['en']['IQ'] = "Iraq";
$countries['en']['IE'] = "Ireland";
$countries['en']['IM'] = "Isle Of Man";
$countries['en']['IL'] = "Israel";
$countries['en']['IT'] = "Italy";
$countries['en']['JM'] = "Jamaica";
$countries['en']['JP'] = "Japan";
$countries['en']['JE'] = "Jersey";
$countries['en']['JO'] = "Jordan";
$countries['en']['KZ'] = "Kazakhstan";
$countries['en']['KE'] = "Kenya";
$countries['en']['KI'] = "Kiribati";
$countries['en']['KP'] = "Korea, Democratic People's Republic Of";
$countries['en']['KR'] = "Korea, Republic Of";
$countries['en']['KW'] = "Kuwait";
$countries['en']['KG'] = "Kyrgyzstan";
$countries['en']['LA'] = "Lao People's Democratic Republic";
$countries['en']['LV'] = "Latvia";
$countries['en']['LB'] = "Lebanon";
$countries['en']['LS'] = "Lesotho";
$countries['en']['LR'] = "Liberia";
$countries['en']['LY'] = "Libyan Arab Jamahiriya";
$countries['en']['LI'] = "Liechtenstein";
$countries['en']['LT'] = "Lithuania";
$countries['en']['LU'] = "Luxembourg";
$countries['en']['MO'] = "Macao";
$countries['en']['MK'] = "Macedonia, The Former Yugoslav Republic Of";
$countries['en']['MG'] = "Madagascar";
$countries['en']['MW'] = "Malawi";
$countries['en']['MY'] = "Malaysia";
$countries['en']['MV'] = "Maldives";
$countries['en']['ML'] = "Mali";
$countries['en']['MT'] = "Malta";
$countries['en']['MH'] = "Marshall Islands";
$countries['en']['MQ'] = "Martinique";
$countries['en']['MR'] = "Mauritania";
$countries['en']['MU'] = "Mauritius";
$countries['en']['YT'] = "Mayotte";
$countries['en']['MX'] = "Mexico";
$countries['en']['FM'] = "Micronesia, Federated States Of";
$countries['en']['MD'] = "Moldova, Republic Of";
$countries['en']['MC'] = "Monaco";
$countries['en']['MN'] = "Mongolia";
$countries['en']['ME'] = "Montenegro";
$countries['en']['MS'] = "Montserrat";
$countries['en']['MA'] = "Morocco";
$countries['en']['MZ'] = "Mozambique";
$countries['en']['MM'] = "Myanmar";
$countries['en']['NA'] = "Namibia";
$countries['en']['NR'] = "Nauru";
$countries['en']['NP'] = "Nepal";
$countries['en']['NL'] = "Netherlands";
$countries['en']['AN'] = "Netherlands Antilles";
$countries['en']['NC'] = "New Caledonia";
$countries['en']['NZ'] = "New Zealand";
$countries['en']['NI'] = "Nicaragua";
$countries['en']['NE'] = "Niger";
$countries['en']['NG'] = "Nigeria";
$countries['en']['NU'] = "Niue";
$countries['en']['NF'] = "Norfolk Island";
$countries['en']['MP'] = "Northern Mariana Islands";
$countries['en']['NO'] = "Norway";
$countries['en']['OM'] = "Oman";
$countries['en']['PK'] = "Pakistan";
$countries['en']['PW'] = "Palau";
$countries['en']['PS'] = "Palestinian Territory, Occupied";
$countries['en']['PA'] = "Panama";
$countries['en']['PG'] = "Papua New Guinea";
$countries['en']['PY'] = "Paraguay";
$countries['en']['PE'] = "Peru";
$countries['en']['PH'] = "Philippines";
$countries['en']['PN'] = "Pitcairn";
$countries['en']['PL'] = "Poland";
$countries['en']['PT'] = "Portugal";
$countries['en']['PR'] = "Puerto Rico";
$countries['en']['QA'] = "Qatar";
$countries['en']['RE'] = "Réunion";
$countries['en']['RO'] = "Romania";
$countries['en']['RU'] = "Russian Federation";
$countries['en']['RW'] = "Rwanda";
$countries['en']['BL'] = "Saint Barthélemy";
$countries['en']['SH'] = "Saint Helena";
$countries['en']['KN'] = "Saint Kitts And Nevis";
$countries['en']['LC'] = "Saint Lucia";
$countries['en']['MF'] = "Saint Martin";
$countries['en']['PM'] = "Saint Pierre And Miquelon";
$countries['en']['VC'] = "Saint Vincent And The Grenadines";
$countries['en']['WS'] = "Samoa";
$countries['en']['SM'] = "San Marino";
$countries['en']['ST'] = "Sao Tome And Principe";
$countries['en']['SA'] = "Saudi Arabia";
$countries['en']['SN'] = "Senegal";
$countries['en']['RS'] = "Serbia";
$countries['en']['SC'] = "Seychelles";
$countries['en']['SL'] = "Sierra Leone";
$countries['en']['SG'] = "Singapore";
$countries['en']['SK'] = "Slovakia";
$countries['en']['SI'] = "Slovenia";
$countries['en']['SB'] = "Solomon Islands";
$countries['en']['SO'] = "Somalia";
$countries['en']['ZA'] = "South Africa";
$countries['en']['GS'] = "South Georgia And The South Sandwich Islands";
$countries['en']['ES'] = "Spain";
$countries['en']['LK'] = "Sri Lanka";
$countries['en']['SD'] = "Sudan";
$countries['en']['SR'] = "Suriname";
$countries['en']['SJ'] = "Svalbard And Jan Mayen";
$countries['en']['SZ'] = "Swaziland";
$countries['en']['SE'] = "Sweden";
$countries['en']['CH'] = "Switzerland";
$countries['en']['SY'] = "Syrian Arab Republic";
$countries['en']['TW'] = "Taiwan, Province Of China";
$countries['en']['TJ'] = "Tajikistan";
$countries['en']['TZ'] = "Tanzania, United Republic Of";
$countries['en']['TH'] = "Thailand";
$countries['en']['TL'] = "Timor-Leste";
$countries['en']['TG'] = "Togo";
$countries['en']['TK'] = "Tokelau";
$countries['en']['TO'] = "Tonga";
$countries['en']['TT'] = "Trinidad And Tobago";
$countries['en']['TN'] = "Tunisia";
$countries['en']['TR'] = "Turkey";
$countries['en']['TM'] = "Turkmenistan";
$countries['en']['TC'] = "Turks And Caicos Islands";
$countries['en']['TV'] = "Tuvalu";
$countries['en']['UG'] = "Uganda";
$countries['en']['UA'] = "Ukraine";
$countries['en']['AE'] = "United Arab Emirates";
$countries['en']['GB'] = "United Kingdom";
$countries['en']['US'] = "United States";
$countries['en']['UM'] = "United States Minor Outlying Islands";
$countries['en']['UY'] = "Uruguay";
$countries['en']['UZ'] = "Uzbekistan";
$countries['en']['VU'] = "Vanuatu";
$countries['en']['VE'] = "Venezuela";
$countries['en']['VN'] = "Viet Nam";
$countries['en']['VG'] = "Virgin Islands, British";
$countries['en']['VI'] = "Virgin Islands, U.S.";
$countries['en']['WF'] = "Wallis And Futuna";
$countries['en']['EH'] = "Western Sahara";
$countries['en']['YE'] = "Yemen";
$countries['en']['ZM'] = "Zambia";
$countries['en']['ZW'] = "Zimbabwe";
// slovenske nazvy statov
$countries['sk']['AF'] = "Afganistan";
$countries['sk']['AX'] = "Alandy";
$countries['sk']['AL'] = "Albánsko";
$countries['sk']['DZ'] = "Alžírsko";
$countries['sk']['AS'] = "Americká Samoa";
$countries['sk']['AD'] = "Andorra";
$countries['sk']['AO'] = "Angola";
$countries['sk']['AI'] = "Anguilla";
$countries['sk']['AQ'] = "Antarktída";
$countries['sk']['AG'] = "Antigua a Barbuda";
$countries['sk']['AR'] = "Argentína";
$countries['sk']['AM'] = "Arménsko";
$countries['sk']['AW'] = "Aruba";
$countries['sk']['AU'] = "Austrália";
$countries['sk']['AT'] = "Rakúsko";
$countries['sk']['AZ'] = "Azerbajdžan";
$countries['sk']['BS'] = "Bahamy";
$countries['sk']['BH'] = "Bahrajn";
$countries['sk']['BD'] = "Bangladéš";
$countries['sk']['BB'] = "Barbados";
$countries['sk']['BY'] = "Bielorusko";
$countries['sk']['BE'] = "Belgicko";
$countries['sk']['BZ'] = "Belize";
$countries['sk']['BJ'] = "Benin";
$countries['sk']['BM'] = "Bermudy";
$countries['sk']['BT'] = "Bhután";
$countries['sk']['BO'] = "Bolívia";
$countries['sk']['BA'] = "Bosna a Hercegovina";
$countries['sk']['BW'] = "Botswana";
$countries['sk']['BV'] = "Bouvetov ostrov";
$countries['sk']['BR'] = "Brazília";
$countries['sk']['IO'] = "Britské indickooceánske územie";
$countries['sk']['BN'] = "Brunej";
$countries['sk']['BG'] = "Bulharsko";
$countries['sk']['BF'] = "Burkina";
$countries['sk']['BI'] = "Burundi";
$countries['sk']['KH'] = "Kambodža";
$countries['sk']['CM'] = "Kamerun";
$countries['sk']['CA'] = "Kanada";
$countries['sk']['CV'] = "Kapverdy";
$countries['sk']['KY'] = "Kajmanie ostrovy";
$countries['sk']['CF'] = "Stredoafrická republika";
$countries['sk']['TD'] = "Čad";
$countries['sk']['CL'] = "Čile";
$countries['sk']['CN'] = "Čína";
$countries['sk']['CX'] = "Vianočný ostrov";
$countries['sk']['CC'] = "Kokosové ostrovy";
$countries['sk']['CO'] = "Kolumbia";
$countries['sk']['KM'] = "Komory";
$countries['sk']['CG'] = "Kongo";
$countries['sk']['CD'] = "Kongo (býv. Zair)";
$countries['sk']['CK'] = "Cookove ostrovy";
$countries['sk']['CR'] = "Kostarika";
$countries['sk']['CI'] = "Pobrežie Slonoviny";
$countries['sk']['HR'] = "Chorvátsko";
$countries['sk']['CU'] = "Kuba";
$countries['sk']['CY'] = "Cyprus";
$countries['sk']['CZ'] = "Česko";
$countries['sk']['ME'] = "Čierna Hora";
$countries['sk']['DK'] = "Dánsko";
$countries['sk']['DJ'] = "Džibutsko";
$countries['sk']['DM'] = "Dominika";
$countries['sk']['DO'] = "Dominikánska republika";
$countries['sk']['EC'] = "Ekvádor";
$countries['sk']['EG'] = "Egypt";
$countries['sk']['SV'] = "Salvádor";
$countries['sk']['GQ'] = "Rovníková Guinea";
$countries['sk']['ER'] = "Eritrea";
$countries['sk']['EE'] = "Estónsko";
$countries['sk']['ET'] = "Etiópia";
$countries['sk']['EU'] = "Európska únia";
$countries['sk']['FK'] = "Falklandy";
$countries['sk']['FO'] = "Faerské ostrovy";
$countries['sk']['FJ'] = "Fidži";
$countries['sk']['FI'] = "Fínsko";
$countries['sk']['FR'] = "Francúzsko";
$countries['sk']['GF'] = "Francúzska Guyana";
$countries['sk']['PF'] = "Francúzska Polynézia";
$countries['sk']['TF'] = "Francúzske južné územia";
$countries['sk']['GA'] = "Gabon";
$countries['sk']['GM'] = "Gambia";
$countries['sk']['GE'] = "Gruzínsko";
$countries['sk']['DE'] = "Nemecko";
$countries['sk']['GH'] = "Ghana";
$countries['sk']['GI'] = "Gibraltár";
$countries['sk']['GR'] = "Grécko";
$countries['sk']['GL'] = "Grónsko";
$countries['sk']['GD'] = "Grenada";
$countries['sk']['GP'] = "Guadeloupe";
$countries['sk']['GU'] = "Guam";
$countries['sk']['GT'] = "Guatemala";
$countries['sk']['GG'] = "Guernsey";
$countries['sk']['GN'] = "Guinea";
$countries['sk']['GW'] = "Guinea-Bissau";
$countries['sk']['GY'] = "Guyana";
$countries['sk']['HT'] = "Haiti";
$countries['sk']['HM'] = "Heardov ostrov";
$countries['sk']['HN'] = "Honduras";
$countries['sk']['HK'] = "Hongkong";
$countries['sk']['HU'] = "Maďarsko";
$countries['sk']['IS'] = "Island";
$countries['sk']['IN'] = "India";
$countries['sk']['ID'] = "Indonézia";
$countries['sk']['IR'] = "Irán";
$countries['sk']['IQ'] = "Irak";
$countries['sk']['IE'] = "Írsko";
$countries['sk']['IM'] = "Ostrov Man";
$countries['sk']['IL'] = "Izrael";
$countries['sk']['IT'] = "Taliansko";
$countries['sk']['JM'] = "Jamajka";
$countries['sk']['JP'] = "Japonsko";
$countries['sk']['JE'] = "Jersey";
$countries['sk']['JO'] = "Jordánsko";
$countries['sk']['KZ'] = "Kazachstan";
$countries['sk']['KE'] = "Keňa";
$countries['sk']['KI'] = "Kiribati";
$countries['sk']['KP'] = "Kórejská ľudovodemokratická republika";
$countries['sk']['KR'] = "Kórejská republika";
$countries['sk']['KW'] = "Kuvajt";
$countries['sk']['KG'] = "Kirgizsko";
$countries['sk']['LA'] = "Laos";
$countries['sk']['LV'] = "Lotyšsko";
$countries['sk']['LB'] = "Libanon";
$countries['sk']['LS'] = "Lesotho";
$countries['sk']['LR'] = "Libéria";
$countries['sk']['LY'] = "Líbya";
$countries['sk']['LI'] = "Lichtenštajnsko";
$countries['sk']['LT'] = "Litva";
$countries['sk']['LU'] = "Luxembursko";
$countries['sk']['MO'] = "Macao";
$countries['sk']['MK'] = "Macedónsko";
$countries['sk']['MG'] = "Madagaskar";
$countries['sk']['MW'] = "Malawi";
$countries['sk']['MY'] = "Malajzia";
$countries['sk']['MV'] = "Maldivy";
$countries['sk']['ML'] = "Mali";
$countries['sk']['MT'] = "Malta";
$countries['sk']['MH'] = "Marshallove ostrovy";
$countries['sk']['MQ'] = "Martinik";
$countries['sk']['MR'] = "Mauritánia";
$countries['sk']['MU'] = "Maurícius";
$countries['sk']['YT'] = "Mayotte";
$countries['sk']['MX'] = "Mexiko";
$countries['sk']['FM'] = "Mikronézia";
$countries['sk']['MD'] = "Moldavsko";
$countries['sk']['MC'] = "Monako";
$countries['sk']['MN'] = "Mongolsko";
$countries['sk']['MS'] = "Montserrat";
$countries['sk']['MA'] = "Maroko";
$countries['sk']['MZ'] = "Mozambik";
$countries['sk']['MM'] = "Mjanmarsko";
$countries['sk']['NA'] = "Namíbia";
$countries['sk']['NR'] = "Nauru";
$countries['sk']['NP'] = "Nepál";
$countries['sk']['NL'] = "Holandsko";
$countries['sk']['AN'] = "Holandské Antily";
$countries['sk']['NC'] = "Nová Kaledónia";
$countries['sk']['NZ'] = "Nový Zéland";
$countries['sk']['NI'] = "Nikaragua";
$countries['sk']['NE'] = "Niger";
$countries['sk']['NG'] = "Nigéria";
$countries['sk']['NU'] = "Niue";
$countries['sk']['NF'] = "Norfolk";
$countries['sk']['MP'] = "Severné Mariány";
$countries['sk']['NO'] = "Nórsko";
$countries['sk']['OM'] = "Omán";
$countries['sk']['PK'] = "Pakistan";
$countries['sk']['PW'] = "Palau";
$countries['sk']['PS'] = "Palestína";
$countries['sk']['PA'] = "Panama";
$countries['sk']['PG'] = "Papua-Nová Guinea";
$countries['sk']['PY'] = "Paraguaj";
$countries['sk']['PE'] = "Peru";
$countries['sk']['PH'] = "Filipíny";
$countries['sk']['PN'] = "Pitcairnove ostrovy";
$countries['sk']['PL'] = "Poľsko";
$countries['sk']['PT'] = "Portugalsko";
$countries['sk']['PR'] = "Portoriko";
$countries['sk']['QA'] = "Katar";
$countries['sk']['RE'] = "Réunion";
$countries['sk']['RO'] = "Rumunsko";
$countries['sk']['RU'] = "Rusko";
$countries['sk']['RW'] = "Rwanda";
$countries['sk']['BL'] = "Svätý Bartolomej";
$countries['sk']['SH'] = "Svätá Helena";
$countries['sk']['KN'] = "Svätý Krištof a Nevis";
$countries['sk']['LC'] = "Svätá Lucia";
$countries['sk']['PM'] = "Svätý Peter a Michal";
$countries['sk']['VC'] = "Svätý Vincent a Grenadíny";
$countries['sk']['WS'] = "Samoa";
$countries['sk']['SM'] = "San Maríno";
$countries['sk']['ST'] = "Svätý Tomáš a Princov ostrov";
$countries['sk']['SA'] = "Saudská Arábia";
$countries['sk']['SN'] = "Senegal";
$countries['sk']['RS'] = "Srbsko";
$countries['sk']['SC'] = "Seychely";
$countries['sk']['SL'] = "Sierra Leone";
$countries['sk']['SG'] = "Singapur";
$countries['sk']['SK'] = "Slovensko";
$countries['sk']['SI'] = "Slovinsko";
$countries['sk']['SB'] = "Šalamúnove ostrovy";
$countries['sk']['SO'] = "Somálsko";
$countries['sk']['ZA'] = "Južná Afrika";
$countries['sk']['GS'] = "Južná Georgia a Južné Sandwichove ostrovy";
$countries['sk']['ES'] = "Španielsko";
$countries['sk']['LK'] = "Srí Lanka";
$countries['sk']['SD'] = "Sudán";
$countries['sk']['SR'] = "Surinam";
$countries['sk']['SJ'] = "Špicbergy a Jan Mayen";
$countries['sk']['SZ'] = "Svazijsko";
$countries['sk']['SE'] = "Švédsko";
$countries['sk']['CH'] = "Švajčiarsko";
$countries['sk']['SY'] = "Sýria";
$countries['sk']['TW'] = "Taiwan";
$countries['sk']['TJ'] = "Tadžikistan";
$countries['sk']['TZ'] = "Tanzánia";
$countries['sk']['TH'] = "Thajsko";
$countries['sk']['TL'] = "Východný Timor";
$countries['sk']['TG'] = "Togo";
$countries['sk']['TK'] = "Tokelau";
$countries['sk']['TO'] = "Tonga";
$countries['sk']['TT'] = "Trinidad a Tobago";
$countries['sk']['TN'] = "Tunisko";
$countries['sk']['TR'] = "Turecko";
$countries['sk']['TM'] = "Turkménsko";
$countries['sk']['TC'] = "Turks a Caicos";
$countries['sk']['TV'] = "Tuvalu";
$countries['sk']['UG'] = "Uganda";
$countries['sk']['UA'] = "Ukrajina";
$countries['sk']['AE'] = "Spojené arabské emiráty";
$countries['sk']['GB'] = "Spojené kráľovstvo";
$countries['sk']['US'] = "Spojené štáty";
$countries['sk']['UM'] = "Menšie odľahlé ostrovy USA";
$countries['sk']['UY'] = "Uruguaj";
$countries['sk']['UZ'] = "Uzbekistan";
$countries['sk']['VU'] = "Vanuatu";
$countries['sk']['VA'] = "Vatikán";
$countries['sk']['VE'] = "Venezuela";
$countries['sk']['VN'] = "Vietnam";
$countries['sk']['VG'] = "Britské Panenské ostrovy";
$countries['sk']['VI'] = "Americké Panenské ostrovy";
$countries['sk']['WF'] = "Wallis a Futuna";
$countries['sk']['EH'] = "Západná Sahara";
$countries['sk']['YE'] = "Jemen";
$countries['sk']['ZM'] = "Zambia";
$countries['sk']['ZW'] = "Zimbabwe";
// vratime iba nazvy statov ktore mame v poli
if (in_array($language->language, array('sk', 'en'))) {
return $countries[$language->language];
}
// inak vratime default anglicke nazvy
return $countries['en'];
Použitie:
K napísaniu tohto príspevku ma motivoval posledný post používateľa jasom s názvom Semantic views: Drupal video návod od Jasom.net. Niekedy pred skroo troma rokmi som v rámci našich labákových seminárov začal robiť sériu ľahkých developerských vzdelávacích seminárov, z ktorých nakoniec vznikli len dva ;) Jedná sa o úvod do vývoja modulov v Drupal-e. V tom čase sa jednalo o verziu 5.x, čo je už dnes neaktuálne, ale čo sa modulov týka, tak až taká veľká zmena sa neudiala a teda minimálne ako odrazový mostík tieto dva príspevky niekomu môžu poslúžiť. Kvalita prého príspevku nie je valná, ale druhý je už úplne v pohode.
Inštalácia, úvod do CCK a Views
Úvod do tvorby vlastných modulov, post spracovanie odoslaných informácií z formulára vytvoreného pomocou CCK (validácia e-mailu, odoslanie potvrdzujúceho e-mailu)
Pôvodný zdroj je umiestnený na stránkach www.videoserver.cnl.sk/
Hladam „Drupalistu“, ktory by mi pomohol optimalizovat stranky www.nanicmama.sk, www.artmama.sk a www.tortyodmamy.sk, stranky maju spolu okolo 3 500 000 zobrazeni mesacne, vo vecernej spicke vyskakuje load aj na 40. Dve stranky, su predovsetkym o prezerani obrazkov, tam bude zrejme najvacsi problem.
* Optimalizácia Drupalu pre rozsiahle weby (anglicky): http://2bits.com/…b-sites.html