web-gelistirme-sc.com

İzne dayalı bir bağlantı nasıl gösterilir / gizlenir?

Geçerli kullanıcının belirli bir izni varsa ana menüden bir bağlantı gizlemek/göstermek için bir yol arıyorum. Menü öğesi zaten oluşturuldu ve menü öğesi hook_node_access () tarafından kontrol edilen bir düğüme bağlanıyor.

7
Camsoft

Varsayılan olarak, Drupal kullanıcının erişimi olmayan tüm menü öğelerini gizleyecektir, bu nedenle yapılacak en kolay şey, menü öğesinin bağlandığı sayfa için seçilen erişimi gerektirmesi için.

4
googletorp

Yapabileceğiniz şey, hook_menu_alter () kullanarak "düğüm /% düğümü" ile ilişkili erişim geri aramasını değiştirmek ve daha sonra node_access ( ) . Hala node_access() gibi işlemek istediğiniz belirli durumlar vardır; örneğin, "düğüm erişimini atla" iznine sahip kullanıcılar her zaman düğüme erişebilir.

function mymodule_menu_alter(&$items) {
  if (isset($items['node/%node'])) {
    $items['node/%node']['access callback'] = 'mymodule_node_access';
  }
}

Erişim geri aramasının, bağlantıyı kimlerin görebildiğine ve kullanıcı URL'yi doğrudan tarayıcı adres çubuğuna yazdığında bir sayfaya kimin erişebileceğine karar verdiğini düşünün.

2
kiamlaluno

drupal modül menu_item_visibility

Proje sayfasını alıntılamak için:

Örneğin,/kullanıcıyı işaret eden bir 'Hesabım' bağlantısı oluşturmak istiyorsanız, hem anonim hem de kayıtlı kullanıcılar/kullanıcı yoluna erişebilir, bu nedenle anonim kullanıcıların teknik olarak bir hesabı olmasa bile her ikisi de bağlantıyı görür . Bu modülü kullanmak, yalnızca 'Hesabım' bağlantınızın kayıtlı kullanıcılar tarafından görülmesini ve anonim kullanıcılardan gizlenmesini sağlar.

Modül, aşinalık için blok görünürlük ayarları için kullanılan arayüzün aynısını kullanır.

Veya menu_views modül - hangi menü üretimi için Views tabanlı bir yaklaşım sağlar (ki bu kullanıcı dayalı içerir düşünüyorum)

1
therobyouknow