it-swarm-eu.dev

Odkaz na nabídku „Uživatelský účet“ se nezobrazuje anonymním uživatelům

Když je uživatel přihlášen v nabídce Uživatel, zobrazí se odkaz „Můj účet“ a „Odhlásit se“. Po odhlášení však nabídka zmizí.

Jak vytvořím odkaz nabídky na přihlašovací stránku uživatele, která se zobrazuje pouze pro anonymní uživatele v nabídce uživatele?


Kdyby Trey zveřejnil svůj komentář jako odpověď, zkontroloval bych to. Blokovací modul jsem zakázal od doby, kdy používám kontext. Vytvořil jsem druhý celostátní kontext, který je spuštěn rolí anonymního uživatele a umístil blok nabídky s odkazem na přihlašovací stránku v uživatelské oblasti. Funguje to.

Stále bych rád viděl, že se to podaří v kódu. Pokusil jsem se získat přístup k proměnným pomocí funkcí předběžného zpracování, ale odkazy na menu jsou již vykresleny do té doby.

2
Adam S

To je vlastnost. Anonymní uživatel nemá účet ani se nemůže odhlásit, proč by na tyto stránky měly být odkazy?

Možná budete chtít aktualizovat svůj dotaz, aby lépe vysvětlil, co vlastně chcete, místo toho, aby vysvětlil, jak to funguje právě teď :)

ÚPRAVA: Chcete-li mít odkaz na přihlašovací stránku, vytvořte pouze položku nabídky, která ukazuje na/user/login. Stejně jako/user/logout se tento odkaz zobrazí, pouze pokud se přihlásíte můžete (což znamená, že ještě nejste přihlášeni).

7
Berdir

Podívejte se na modul logintoboggan ; poskytuje blok přihlášení, který funguje více podle očekávání.

Nebo jen přejděte do svých bloků, vytvořte nový blok a jako tělo bloku použijte následující kód:

<a href="/user">Sign In</a>

Viditelnost bloku určete pomocí následujícího kódu PHP):

<?php global $user; return($user->uid == 0); ?> 
1
Trey

Přihlašovací odkazy by se měly objevit, když uživatel není přihlášen. Pokud přejdete na http://drupal.org a nejste přihlášeni, zobrazí se přihlašovací odkaz; Po přihlášení se odkaz pro přihlášení nahradí odkazem pro odhlášení.

Ve skutečnosti se pro zpětná volání nabídky „uživatel/přihlášení“ a „uživatel/odhlášení“ používají následující definice:

  $items['user/login'] = array(
    'title' => 'Log in', 
    'access callback' => 'user_is_anonymous', 
    'type' => MENU_DEFAULT_LOCAL_TASK,
  );

  $items['user/logout'] = array(
    'title' => 'Log out', 
    'access callback' => 'user_is_logged_in', 
    'page callback' => 'user_logout', 
    'weight' => 10, 
    'menu_name' => 'user-menu', 
    'file' => 'user.pages.inc',
  );

Zpětné volání první nabídky není viditelné, když se uživatel přihlásí; zpětné volání druhé nabídky není viditelné, když uživatel není přihlášen.

Podobné definice jsou použity v Drupal 6:

  $items['user/login'] = array(
    'title' => 'Log in', 
    'access callback' => 'user_is_anonymous', 
    'type' => MENU_DEFAULT_LOCAL_TASK,
  );

  $items['logout'] = array(
    'title' => 'Log out', 
    'access callback' => 'user_is_logged_in', 
    'page callback' => 'user_logout', 
    'weight' => 10, 
    'file' => 'user.pages.inc',
  );

V obou případech, pouze když zpětné volání přístupu vrátí TRUE, je odkaz přístupný uživateli; Když se zpětné volání přístupu vrátí FALSE, odkaz není uživateli viditelný.

0
kiamlaluno

Není to tak složité, pokud se o to pokoušíte v Drupal 7 pomocí Bartikova tématu).

Vytvořte položku nabídky uživatele a zavolejte ji Přihlášení. Dejte mu odkaz, uživatel/přihlášení. Automaticky se zobrazí pro anonymní uživatele a zmizí pro přihlášené uživatele.

Pokud s tím máte problémy, možná budete muset znovu vytvořit oprávnění (na stránce správce/přehledy/stav)

0
Louis