Hodnocení 2.4/5 (17 hlasů) Zobrazení článkú, správa obsahu
MosIf Conditional je bot pro CMS Joomla!, který sqěle řídí zobrazování stránek a článkú v závislosti na jméně návštěvníka, skupině čtenářú, skupině správcú, času, datumu, dne v týdnu, jazyka návštěvníka, IP adresy, autora, prohlížeče a počasí. Obsahuje podmínku IF-THEN-ELSE, vyhodnocuje zástupné znaky "*" a "?" a umí operátory "=", "!=", "<", ">", "!<" a "!>" (rovno, nerovno, menší, větší, větší nebo rovno, menší nebo rovno); podmínky lze vnořovat.
MosIf rozšiřuje schopnosti Joomla! při zobrazování článkú → samotná Joomla umí pouze 2 části článku: "intro text" a "main text" a přístupové úrovně "public", "registered" a "special". Přičemž pro články s úrovní přístupu "registered" se zobrazí "intro" sice všem (skupina public; toto zobrazování článkú pro registrované lze nastavit v Global Configuration → Site → Show UnAuthorized Links Yes/No), ale zobrazí se pouze na stránce s náhledy, tedy na stránce s intro textem všech článkú (např. Blog - Content Section, tedy výpis úvodu článkú všech nebo jenom nějaké sekce/kategorie). Po kliknutí na nadpis článku se pak zobrazí pouze text "Zbytek článku je pouze pro registrované" → po otevření článku se již intro text nezobrazí!
Joomla rozšíření, nastavení zobrazení stránek a článků, placený přístup do časopisu.
Lépe by to bylo tak, že na stránce s náhledy článkú se zobrazí pouze intro článku a po kliknutí na článek se zobrazí intro + nějaký další text + upozornění "Celý článek je pouze pro registrované", noa registrovaným by se zobrazil celý článek - toto je přesně to, co tento bot umí; v akci jej múžete vidět na těchto stránkách → předplatitelé uvidí vše, ostatní pouze část daného článku, což je BTW přesně to, co jsem chtěl.
-- Začátek překladu púvodní dokumentace --
Úvod do MosIf
MosIf je mambot, jenž umožňuje zobrazovat články podle nějakých podmínek. Hodí se to pro omezený přístup k částem stránek nebo článkú některým čtenářúm nebo skupinám čtenářú, také lze filtrovat obsah podle data, času nebo IP adresy. Například když uzavřete nějaký obsah MosIf příkazy a omezíte přístup na svou vlastní IP adresu - pak múžete pracovat na stránkách a testovat tyto podmínky při vědomí, že pouze vy tento obsah múžete vidět. Také lze nastavit cookies a následně zobrazovat tento obsah podle jejich hodnot. MosIf tak činí snadno
udělatelnými jednoduché stránky s více jazykovým obsahem, nebo např. múžete zobrazovat ceny s nebo bez DPH.
Když publikujete (zveřejňujete) nějaký obsah v Joomla, múžete si vybrat, jaký druh čtenářú má povoleno tento obsah vidět. Múžete si vybrat mezi skupinou "public" (t.j. všichni, tedy "kolemjdoucí"), registrovaní (všichni přihlášení uživatelé) nebo "special", to jsou administrátoři apod.
Toto je často přesně to co potřebujete, je to volba "ber nebo nech být". Buď uvidíte vše, nebo neuvidíte nic. Naproti tomu MosIf neumožňuje pouze přesně řídit, jakou část dokumentu lidé uvidí, jak ukazuje následující příklad:
{mosif username=john,batman,whirley}
Ahoy, je pěkné vás opět vidět.
{else}
Ahoy cizinče.
{endif}
Uživatelé (registrovaní a přihlášení čtenáři) john, batman and whirley uvidí text "Ahoy, je pěkné vás opět vidět.", zatímco všichni (pozor: všichni včetně registrovaných) ostatní uvidí "Ahoy cizinče.".
MosIf je podmínkový plugin (doplněk - mambot), jenž vám povoluje dynamicky řídit co lidé uvidí. Když něco publikujete v Joomla!, vše co múžete ovládat, je jaký druh uživatele má povoleno vidět daný článek - múžete si vybrat mezi skupinami "public", "registered" a "special". Jestliže potřebujete větší možnost ovládání než jen toto, MosIf je vám schopen poskytnout mnohem jemnější ovládání obsahu. Například, předchozí kód zobrazil uživatelúm john, batman and whirley pozdrav pouze pro ně, zatímco ostatní uvidí běžný pozdrav.
V tomto příkladě jsme ovládali pouze čistý text, ale mohou to být obrázky, HTML kód nebo dokonce další plugin (tedy vše, co je v článku povoleno).
Typy podmínek a operátorú
V současné verzi rozeznáváme tyto podmínky:
- jméno autora
MosIf výraz: author
hodnoty: jméno autora článku {if author=batman}
- jméno čtenáře (uživatele)
MosIf výraz: username
hodnoty: jakékoliv přihlašovací jméno, např. john, batmat, whirley apod.
- skupina uživatele
MosIf výraz: usergroup
hodnoty: public, registered, special
- typ uživatele
MosIf výraz: usertype
hodnoty: registered, author, editor, publisher, manager, administrator, super administrator
- jazyk stránek
MosIf výraz: language
hodnoty: en, cs, da, no, it apod.
- IP adresa
MosIf výraz: ip
hodnoty: 127.0.0.1, 212.230.221.7 apod.
- cookies
MosIf výraz: jakýkoliv cookie s prefixem cookie_, tedy cookie_jméno, např.: cookie_language pro cookie jménem "language". Cookie nastavuji javasriptem takto: Vybrat jazyk stránek: <a href="javascript:document.cookie='language=cs;
path=/';location.reload(1); >česky</a>
hodnoty: jakékoliv jméno
- prohlížeč
MosIf výraz: browser
hodnoty: typ a verze prohlížeče čtenáře {if browser=mozilla firefox*}
- datum
MosIf výraz: date
hodnoty: současné datum ve tvaru yyyy.mm.dd
- čas
MosIf výraz: time
hodnoty: současný čas ve formátu hh.mm.ss (24-hodin formát)
- datum a čas
MosIf výraz: datetime
hodnoty: současné datum a čas ve formátech podmínek "date" a "time";
- den v týdnu
MosIf výraz: weekday
hodnoty: den týdne anglicky (monday, tuesday, wednesday, thursday, friday, saturday, sunday)
MosIf umí tyto operátory "=", "!=", "<", ">", (rovno, nerovno, menší, větší, ). Zástupné (metaznaky) znaky hodnoty jsou také dva: "*" (jakékoliv množství znakú včetně nulového počtu) a "?" (pouze jeden libovolný znak); tyto metaznaky činí podmínky extrémně přizpúsobivé.
Místo znakú "<" a ">" múžete použít textové označení "lt" a "gt". Není operátor pro "menší nebo rovno" nebo "větší nebo rovno", ale použitím negace podmínky znakem "!" dosáhnete téhož:
{if time !lt 14.30}
Tento text se zobrazí, pokud je čas 14:30
nebo více (tedy později).
{endif}
Povšimněte si, že metaznaky "*" a "?" v těchto operátorech nelze použít, pouze u operátorú rovnosti "=" a "!=".
Použití
Bot se používá velice snadno: požadovaný obsah uzavřete do podmínky a tuto podmínku definujete.
{mosif <parametr><operator><seznam hodnot>}
nějaký obsah
{else}
jiný obsah
{endif}
<parametr> : username | usergroup | usertype | ip | language | author
| cookie_<jméno> | date | time | browser | datetime | weekday
<operator> : = | != | < | > | !< | !>
<hodnota> : text[, text]
- MosIf podmínky mohou být rozděleny na několik řádkú.
- Podmínky a jména jsou necitlivá na velikost znakú - jsou case insensitive.
- Před a za čárky oddělující hodnoty v podmínkách múžete přidat mezery, tím bude text příkazú lépe čitelný.
- MosIf podmínky nemohou být součástí podprogramu. Existuje jedno staré androidí rčení, je to nějak takto: "pokud neodskočíš z cyklu programu, nikdy nebudeš v podprogramu…". (^_^)
Příklady použití
A nyní je čas na to, ukázat si několik dalších příkladú dokládajících sílu MosIf.
Text článku, který uvidí všichni - úvod.
{mosif usergroup=registered}
Zde bude nějaký text, který se zobrazí pouze registrovaným.
{else}
Zbytek článku je pouze pro předplatitele - toto se zobrazí
všem kromě registrovaných návštěvníkú.
{endif}
Závěr dokumentu, to také uvidí všichni.
{mosif usergroup=public}
Ke čtení tohoto článku se musíte zaregistrovat.
Článek je v placeném obsahu, ke čtení potřebujete předplatné.
{endif}
{mosif usertype=publisher,*administrator}
Zvláštní obsah pro zveřejňovače, administrátory
a super administrátory.
{endif}
Všimněte si, že metaznak "*" obsahuje (zastupuje) správce a současně i super-správce (root).
Cena
{mosif cookie_vat=0}
bez DPH je 100 Kč
{else}
včetně DPH je 125 Kč.
{endif}
{mosif ip=127.0.0.1}
Obsah, jenž se zobrazí pouze na localhostu
(t.j. místní Apache server).
{endif}
{mosif ip=88.100.*}
Čauky všichni uživatelé ADSL od O2.
{else}
Kdo je tvúj ISP?
{endif}
{if date !lt 2007.12.24}
Zde bude text, jenž se zobrazí o Vánocích 2007 a později.
{endif}
{if time gt 08.30}
Je čas vstávat!
{else}
Ještě jsi mohl spát.
{endif}
{if datetime gt 2007.12.31 23.59}
Toto se zobrazí od Silvestra 2007.
{endif}
{if weekday=saturday,sunday}
Hurá, zase je víkend!!!!
{else}
Xakru, zpátky do práce.
{endif}
Rada: test IP je dobrý pro testování obsahu na stránkách. Prostě tam napište svou IP adresu a pouze vy uvidíte daný obsah, bez ohledu na to, jste+li přihlášení nebo ne!
Výběr jazyka angličtina/čeština: cookie je nastaveno javascriptem takto: javascript:document.cookie='lang=en;path=/';location.reload(1); a v MosIf je tato podmínková klauzule:
{mosif cookie_lang=en}
Good Morning!
{else}
Dobré ráno!
{endif}
Varování ohledně cacheování v Joomla: když čelíte problémúm s MosIf, obzláště když v podmínkách máte cookies, zkontrolujte si, jestli máte zapnuté cache stránek v Global Configuration. Zjistil jsem, po upgrade na Joomla 1.0.9, že příklady na této stránce už dál nefungovaly. Dúvod je ten, že Joomla zobrazovala staré stránky z cache serveru místo zobrazování "čerstvých" stránek. Takže jsem vypnul cacheování stránek a tyto příklady začaly fungovat tak, jak měly.
Naneštěstí nejsou mamboti vykonáváni, když kliknete na PDF ikonu, abyste měli stránku v PDF. Rovněž moduly ignorují mamboty. To nemá co dělat s MosIf, jen že je problém v tom, že čtenář by mohl vidět citlivé informace, jenž byly zamýšleny pro uživatele s vyššími právy přístupu.
Pokud nepoužíváte PDF (jako já) nebo nepoužíváte MosIf v modulech, múžete spát klidně - je to bezpečné. Jinak pokud chcete používat boty v PDF pohledu, měli byste použít hack, jenž jsem vytvořil, do souboru includes/pdf.php. Tento upravený soubor je v archívu mosif.zip, ovšem ten se během instalace bota neinstaluje (nenahrává do Joomla instalace). Tento soubor musíte pomocí protokolu FTP na server nahrát ručně. Rada: pokud se "hrabete" v souborech Joomla, vždy púvodní soubory zálohujte!
A zde je postup, jak uvolnit mamboty v modulech: no tak od verze Joomla! 1.0.10 jsou boti v modulech spouštěni automaticky, takže žádná oprava není potřeba.
Novinky ve verzy MosIf 1.11
- Opraven problém, když je mosif podmínka rozdělena na více řádek.
- Múžete použít příkaz "if" jako kratší verzi příkazu "mosif".
- Nyní múžete klauzule IF vnořovat do sebe a rozlišovat je pojmenováním:
{mosif username=batman}
Nazdar Batmane, je
{mosif.a time gt 23}
dost pozdě.
{else.a}
né tak moc pozdě.
{endif.a}
{else}
Tebe neznám!
{endif}
Toto označení (qalifikátor příkazu) musíte použít pro všechny příkazy v celé podmínce, tedy včetně části {else}.
- A je tu jedna šikovná ladící možnost, jež vám zobrazí současné hodnoty podporovaných parametrú (pozor, nemá ukončovací příkaz):
{mosif debug}.
Výstup {mosif debug} vypadá takto: CURRENT MOSIF VALUES ARE: ip: 38.107.179.220 browser: Unknown author: Administrátor username: usergroup: public usertype: language: cz weekday: Sunday date: 2012.02.05 time: 03.41.20 datetime: 2012.02.05 03.41.20 (Cookie values are not shown)
Další příklady použití MosIf
S podmínkou "rovná se":
{mosif username=john}
Ahoy Honzo, toto je text pouze pro tebe.
{endif}
{mosif usertype=*administrator}
Obsah pouze pro adminy a super adminy.
{endif}
{mosif usergroup=registered}
Jste zaregistrovaný a přihlášený do těchto stránek.
{endif}
{mosif ip=10.0.0.?}
Pouze pro IP adresy v rozsahu 10.0.0.0-10.0.0.9
Všimněte si, že "?" zastupuje právě jeden znak.
{endif}
{mosif language=de}
Wie gehts?
{endif}
{mosif language=en}
How are you?
{endif}
{mosif language=cs}
Jaxe máš?
{endif}
S podmínkou "nerovná se":
{mosif username!=john}
Toto uvidí každý kromě Honzy, dobře mu tak…
{endif}
{mosif language!=en}
Omlouváme se, ale tento dokument je pouze v angličtině.
Toto by mohlo být použitelné místo JoomFish.
{endif}
S větvením podmínky {else}:
Ahoy
{mosif username=john, peter, sam}
tak jaxe máte dneska?
{else}
Cizinče, a ty co pohledáváš tu?
{endif}
Užijte si to! Copyright © Martin Larsen 2005, domácí stránka bota.
-- Konec překladu púvodní dokumentace --
Praktické zkušenosti
Takže zkušenosti velice dobré: chodí to přesně tak, jaxe v dokumentaci píše - chodí to spolehlivě a je to opravdu šikovná věcička.
Takto to používám na těchto stránkách: neregistrovaní uvidí "intro text" a část "main text" včetně upozornění na placený obsah článku, registrovaní uvidí celý článek bez tohoto upozornění.
intro: toto je náhled článku, uvidí to všichni
main: hlavní část článku
úvod článku: uvidí to všichni,
část článku, pár odstavcú
začátek seznamu apod.
{mosif usergroup=registered}
toto uvidí pouze předplatitelé,
hlavní část článku,
prostředek seznamu
{else} text pouze pro neregistrované,
"Tento článek je zařazen do placeného
obsahu, pro čtení celého článku
musíte mít předplatné."
{endif}
konec článku: konec seznamu, konec stránky.
Tak to zobrazování stránek podle počasí MosIf neumí ^_^
3 Komentáře
1Komentář dne: Středa, 26 březen 2008 18:26
Dobrý den, našel jsem odkaz na tuto stranku na strankach Joomlaportal.cz. Potrebuji poradit, mozna mi pomuzete i prave timto mambotem, sam jsem vsak na to maly. Pouzivam komponentu Easy book jako jakysi poptavkovy system, kde nahodny uzivatel muze zadat svoji poptavku. Potrebuji, aby kontakty na poptavajiciho videli pouze registrovane firmy. Jak to mam udelat, aby se nad poptavkou nezobrazovaly kontaktni udaje? Potrebuji, aby se zobrazovaly az po prihlaseni. Diky moc za pomoc. Dan
2Komentář dne: Neděle, 30 březen 2008 17:29
Easy book je jako poptávkový systém absolutně nevhodná, je to kniha návštěv a nic jiného neumí. Nelze ji nastavit, aby část textu viděli pouze registrovaní návštěvníci - buď všichni nebo nikdo. Muselo by se zasáhnout do zdrojového kódu kompenenty a potlačit zobrazování kontaktních údajů zákazníka - to by šlo, správci systému by si pak potřebné údaje přečetli přímo z Easy Book v její administrátorské části. Vy ale chcete vědět, jestli by toto šlo vyřešit botem MosIf, moje odpověď zní: nevím, ještě jsem to nezkoušel. Podle dokumentace by to jít mělo. Takže jsou na výběr 4 možnosti: a, skrýt zobrazování kontaktních informací pro všechny b, použít MosIf - nemám s tím zkušenosti a nedoporučuji to c, použít formulář d, použít VirtueMart Zbytek emailem.
3Komentář dne: Sobota, 02 květen 2009 09:00
Reaguji na text "Lépe by to bylo tak, že na stránce s náhledy článkú se zobrazí pouze intro článku a po kliknutí na článek se zobrazí intro + nějaký další text + upozornění "Celý článek je pouze pro registrované", noa registrovaným by se zobrazil celý článek - toto je přesně to, co tento bot umí; v akci jej múžete vidět na těchto stránkách". Takových článků je na tomto serveru 20 (duben 09) a vyhledají se fultextem přes text "pouze předplatitelúm". To jen kdyby to hledal někdo další, tak v tomto článku to není použito ahoj ;-) Petr Říha, Hradec Králové
Odeslat komentář
|