İçerik türüne veya kullanıcı rolüne göre dikey sekmeleri devre dışı bırakma


10

Bazı kullanıcılar yalnızca düğüm düzenleme formundaki dikey sekmelerde gösterilen alan kümelerinden birini düzenleme olanağına sahip olabilir. Bu durumda, aralarından seçim yapabileceğiniz tek bir dikey sekme olduğundan dikey sekmeler kullanmak oldukça aptalca görünür. Ekran görüntüsüne bakın:

ekran görüntüsü

Peki, dikey sekmeleri kullanıcı rolüne göre devre dışı bırakmak mümkün mü? Veya bunu engellemek, belirli içerik türleri için bunları tamamen devre dışı bırakmak mı? Kullanım durumum için Konum'un dikey sekmelerde gösterilmemesini istiyorum.

Renderable Fields ve Field Group'u birlikte denedim ama formu yanlış yönetiyorlardı (buggy, sanırım). Alanları Düzenle, Dikey Sekmeleri ayıramaz.


Bunu hiç düzelttin mi? Aynı şeyi ubercart ürün sekmesi ile yapmaya çalışıyorum.
Dee

Yanıtlar:


7

Bunu yapmanın birkaç yolu vardır:

  1. Yenilenebilir Öğeler modülünü kullanabilirsiniz (yukarıda belirtildiği gibi). Kurulumunuza herhangi bir yapı parçasını kaydetmenizi ve ekranı Alan Arabirimi aracılığıyla yönetmenizi sağlar. Formları / görüntüleme ekranlarında mevcut varlıkların (ek) öğelerini kullanılabilir hale getirir veya örneğin iletişim formunu kaydedebilir ve alanları Alan Arabirimi aracılığıyla yeniden düzenleyebilirsiniz. Şu anda formlarda iyi çalışıyor, diğerine destek ikinci bir yinelemede geliyor.

  2. Veya özel modülünüze aşağıdakileri ekleyin:

    $config['yourcontenttype_node_form'] = FALSE;
    variable_set('vertical_tabs_forms', $config);
  3. Dikey sekmeleri devre dışı bırakan bir sanal alan modülü

İşte buna değinen bu temel sorun .


Soruda söylediğim gibi, Yenilenebilir Öğeler benim için çalışmıyor. Hala alfa aşamasında ve Location ile ilgili bilinen bir hata var. Yani benim durumum için işe yaramıyor. Aksi takdirde, evet, bence bu işe yarar. Gelecekte bu hata giderilirse, Yenilenebilir Öğeler muhtemelen bu konuda en iyi yoldur.
Jay

üzgünüm sadece sorunuzu gözden kaçırdım ve yenilenebilir elemanlar modülüne olan referansınızı tamamen kaçırdım. Olduğu söyleniyor, dev sürümü bir cazibe gibi çalışır. Bir şans ver.

Hmm tamam. Başka alternatif yoksa dev sürümünü kullanmayı deneyeceğim. Bunu şimdilik açık bırakıyorum.
Jay

Yukarıdaki cevabımı daha fazla seçenekle değiştirdim.

1
Haklısın. Sadece denedim ve bu D7'de D6'da olduğu gibi çalışmıyor. Ne yazık ki, yenilenebilir öğeler çalışmıyorsa ve kendi modülünüzle veya sanal alan modülünü kullanarak rahat değilseniz, başka ne olduğundan emin değilim.

6

İnsanların dikey sekmeleri görmesini engellemek için #access denetimini de kullanabilirsiniz.

$form['additional_settings']['#access'] = FALSE;

Bunu, bir kanca formuna değiştirerek veya bir formun yüklenmesi ve oluşturulması arasında eklemeniz yeterlidir. Bundan sonra, işaretlemeyi almak için render ($ form) öğesini çağırabilirsiniz.


2

Daha önce bahsedilen konuya basit bir olası çözüm yazdım: https://drupal.org/node/1048644#comment-7822687 . Kolaylık olması için buraya yapıştıracağım.

Bir formda dikey sekmeleri devre dışı bırakmanın basit bir yolu vardır, eğer $form['additional_settings']['#type']değişken eşitse hook_form_alter () veya hook_form_FORM_ID_alter ()'fieldset' uygulamasında olarak değiştirilir . Erişim ayarlarını değiştirmeniz veya tüm diziyi tekrar tekrar yürütmeniz gerekmez, ikincisi gereksiz yere çok fazla kaynak tüketir. (Drupal 7.23'te test edilmiştir .)'vertical_tabs'
$form

/**
 * Disable Vertical tabs on a form with simply changing the value of $form['additional_settings']['#type']
 * @see https://drupal.org/node/1048644
 */
function form_disable_vertical_tabs(&$form){
  // originally $form['additional_settings']['#type'] equals to 'vertical_tabs'
  if(isset($form['additional_settings']['#type']) && ($form['additional_settings']['#type'] === 'vertical_tabs')){
    $form['additional_settings']['#type'] = 'fieldset';
  }
}

/**
 * Implements hook_form_alter().
 */
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {

  if($form_id == 'my_form_id'){
    // disable vertical tabs for this form
    form_disable_vertical_tabs($form);
  }
}

Hepsi bu, tabii ki, yerineMYMODULEORTHEMENAME kendi modülü en veya temanın ismi (bir de ikincisine template.phpdosyası), vemy_form_id sizin formun kimliği.


Dikey alanları yalnızca yönetici rolüne sahip OLMAYAN kullanıcılar için devre dışı bırakabilirsiniz :

/**
 * Implements hook_form_alter().
 */
function MYMODULEORTHEMENAME_form_alter(&$form, &$form_state, $form_id) {

  global $user;
  $is_administrator = in_array('administrator', array_values($user->roles));

  if($form_id == 'my_form_id'){
    // if $user does NOT have the administrator role.
    if (!$is_administrator) {
      // disable vertical tabs for this form
      form_disable_vertical_tabs($form);
    }
  }
}

Vaka birisi ilgileniyor, ben (yukarıdaki ile aynı yapar) bir yama ekli Dripman 'ın sanal modülü: # 2080739: basitleştirin sadece değişen Dikey sekmeleri devre dışı bırakma yöntemi $form['additional_settings']['#type']için'fieldset' .


Mükemmel çözüm, @ Sk8erPeter. '#Access' = YANLIŞ ayarı yapmadan ek ayarları gizlemenin muhtemel olup olmadığını merak ediyorum, çünkü bu url takma adı ve yayınlanmış durumu gibi varsayılan ayarlarla ayarlanacak değerleri kaybediyor.
Jav

0

İşlenebilen öğeler şu anda desteklenmemektedir ve proje sayfasında diğer bazı katkıda bulunan modüllerle çakıştığını kabul eder, bu nedenle üretim siteleri için ona güvenmem.

Dikey sekmelerin tamamen nasıl devre dışı bırakılacağı sorusu bu iş parçacığında ele alınmıştır .

Dripman, dikey sekmeleri tamamen devre dışı bırakmak için basit bir sanal alan modülü oluşturdu .

Kodlama ile istediğiniz etkileşim düzeyine bağlı olarak, Dripman'ın modülü alan / rol bazında seçici olacak şekilde kolayca özelleştirilebilir olmalıdır.

@Nicoz tarafından kısa ve öz bir cevapla özür dileriz


0

Dikey Sekmeler Görünürlüğü modülünü kullanabilirsiniz .

Bu modül, içerik türü ekleme / düzenleme formlarındaki dikey sekmelerin görünürlüğünü yönetmeye yardımcı olur.

İçerik ekleme / düzenleme formlarında dikey sekmelerin görünürlüğünü yönetmek için. /admin/config/user-interface/vertical-tabs-visibility sayfayı ziyaret edin ve içerik türlerini seçin. İşaretlenen içerik türleri için düğüm ekleme / düzenleme formundaki dikey sekmeler devre dışı bırakılır.

Şu anda modül korumalı alanda


0

Kullanım durumum için , bir düğüm düzenleme formundaki Yayınlama seçenekleri bölümünde uygulanan dikey sekmeleri devre dışı bırakmaya çalışıyordum (çünkü bu, belirli bir kullanıcı kümesinin erişebileceği tek alan kümesiydi):

// Place somewhere in MYMODULE_form_alter()...
$form['additional_settings']['#type'] = 'fieldset';
$form['additional_settings']['#collapsible'] = FALSE;
$form['options']['#collapsible'] = FALSE;

additional_settings #collapsibleAçıklığa kavuşturmak için yalnızca YANLIŞ olarak ayarlamanız gerekmez , içindeki öğelerin de # collapsible set toFALSE , in my case that was theoptions` öğesi olmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.