Dobrý den
bohužel nejsem dobrý v PHP a tak bych potřeboval poradit s jedním zápisem kódu v těle nodu.
Jedná se mi o následující situaci:
Když na stránku přijde uživatel s určenou rolí (rolemi) zobrazí se mu text a jmenovité přivítání zapsaný v "IF", pokud přijde anonym nebo registrovaný bez další přiřazené role zobrazí se mu text zapsaný v "ELSE" (možná by bylo dokonalejší kdyby byla ještě jedna vnořená podmínka v "ELSE IF" pro registrované bez další role a "ELSE" jen pro anonyma)
Na internetu jsem zatím vyčetl a použil tento fragment kodu:
<code>
<?php
global $user;
$approved_roles = array('člen cechu', 'vedení cechu', 'administrator');
if ($user->uid && (is_array($user->roles))) {
if (count(array_intersect($user->roles, $approved_roles)) > 0) {
print t('Vítej poutníče, slovutný(á) @name zpět na stránky cechu.', array('@name' => format_username($user)));
}
} else {
print t("Vítej cizinče, jestli pak víš, že se nacházíš v zapovězeném místě, .......");
}
?>
</code>
Tento kód funguje pro registrované s přiřazenou rolí, pro anonyma ale uživateli bez další přiřazené role se nezobrazí žádný text.
Děkuji za každou i sebemenší radu a jsem s pozdravem
Diky moc ... funguje to bezvadne.
A pokud bych mohl mit jeste prozbycku ... jak by to vypadalo kdybych chtel mit jeste jednu vlozenou funkci pro pouze registrovane ale bez urceni nejake dalsi role.
IF - pro vyse urcene role
ELSE IF - pro registrovane bez roli
ELSE - pro neregistrovane anonymi
pujde uz asi jen o urceni podminky pro registrovane, ale nejak se mi to nedari nasimulovat.
Jinak dekuji a preji veseleho silvestra a stastny novy rok :-)))
<?php
global $user;
$approved_roles = array('člen cechu', 'vedení cechu', 'administrator');
if (user_is_logged_in()){
if (count(array_intersect($user->roles, $approved_roles)) > 0) {
// přihlášený a v nějaké roli
} else{
// jenom normálně přihlášený
}
}
else {
print t("Vítej cizinče, jestli pak víš, že se nacházíš v zapovězeném místě, .......");
}
?>
Jeje děkuji mocekrát ... jste zlatej, na drupal.cz jsem se za nějakých 14 dni odpovědi nedočkal
pokud vás budu moci (po novem roce) ještě zeužít ohledně vědomosti s wedosem budu rád ... zatím jsem spiš zklamaný zakazník než ten který jim provolává slávu ;-)
Bez testování bych to zkusil upravit takto, píšu naslepo:
<?php
global $user;
$approved_roles = array('člen cechu', 'vedení cechu', 'administrator');
if (count(array_intersect($user->roles, $approved_roles)) > 0) {
print t('Vítej poutníče, slovutný(á) @name zpět na stránky cechu.', array('@name' => format_username($user)));
} else {
print t("Vítej cizinče, jestli pak víš, že se nacházíš v zapovězeném místě, .......");
}
?>
Není třeba zjišťovat, jestli je uživatel přihlášen a pak následně jeho role, stačí rovnou kouknout na ty role.