|
26 Duben 2009
Posted in
Články -
Tipy a triky
V Joomle lze pomocí nastavení ukrývat položky směrem opačným, tzn určit, že se má něco zobrazit pouze registrovaným a speciál uživatelům, nebo jenom speciál uživatelům, ale ne naopak, v tomto článku si ukážeme jak na to pomocí úpravy šablony.
Joomla API nám k tomu naštěstí nabízí potřebné funkce. Nejprve si musíme získat objekt uživatele:
$user=JFactory::getUser();
A tento objekt nám nabízí dvě pro nás užitečné položky - gid a id, které získáme metodou get(). První jmenovaný nám zpřístupní číslo skupiny, do které uživatel patří a druhý id uživatele. Seznam přiřazení čísla ke skupině uživatele najdeme v tabulce s poněkud komplikovaným názvem jos_core_acl_aro_groups:
+----+-----------+---------------------+-----+-----+---------------------+
| id | parent_id | name | lft | rgt | value |
+----+-----------+---------------------+-----+-----+---------------------+
| 17 | 0 | ROOT | 1 | 22 | ROOT |
| 28 | 17 | USERS | 2 | 21 | USERS |
| 29 | 28 | Public Frontend | 3 | 12 | Public Frontend |
| 18 | 29 | Registered | 4 | 11 | Registered |
| 19 | 18 | Author | 5 | 10 | Author |
| 20 | 19 | Editor | 6 | 9 | Editor |
| 21 | 20 | Publisher | 7 | 8 | Publisher |
| 30 | 28 | Public Backend | 13 | 20 | Public Backend |
| 23 | 30 | Manager | 14 | 19 | Manager |
| 24 | 23 | Administrator | 15 | 18 | Administrator |
| 25 | 24 | Super Administrator | 16 | 17 | Super Administrator |
+----+-----------+---------------------+-----+-----+---------------------+
Z této tabulky nás zajímají hlavně sloupce id a name. Jediné co zbývá upřesnit je jak zjistit jestli je uživatel příhlášen. Vězte je to jednoduché, nepřihlášený uživatel má id rovné 0.
Pokud tedy chceme zobrazit nějaký modul, nebo třeba menu pouze pro nepřihlášeného uživatele stačí před jeho defnici v šabloně uvést:
<?php
if($user->get('id')==0) {
?>
<jdoc:include type="modules" name="left_noreg" style="rounded" />
A do této pozice pak daný modul umístit.
Stejné je to i s parametrem gid. Pokud chceme, aby se jeden modul zobrazoval jinak pro uživatele ve skupině Registered a jinak pro Author a Editor, provedeme to následovně:
<jdoc:include type="modules" name="left_reg" style="rounded" />
<jdoc:include type="modules" name="left_auth_ed" style="rounded" />
<?php
}
?>
Stejný princip lze použít i u modulů, které umožňují přímo vkládání PHP kódu.
Články


