PHP kód ve stránce NODE

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

Profile picture for user Jan Polzer

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.

návštěvník

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 :-)))

Profile picture for user Jan Polzer

<?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ě, .......");

}

?>

návštěvník

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 ;-)

Odpovědět

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru