Görüntüleme modunu programlı olarak nasıl değiştirebilirim?


11

Düğümün görüntüleme modunu programlı olarak değiştirmek istiyorum. hook_preprocess_node(&$vars)Görüntüleme modunu kullandım ve ayarladım:

function moduleName_preprocess_node(&$vars) {
      // if conditions to apply particular view mode
      $vars['view_mode'] = 'teaser';
      $vars['elements']['#view_mode'] = 'teaser';
}

Ancak bu beklendiği gibi çalışmıyor. Burada bir şey mi eksik?


Bunu incelemeyi denedin mi? drupal.org/node/1334206
chrisjlee

Yanıtlar:


13

Önişleme işlevinde görüntüleme modunu değiştirmek çok geç yapıyor.
Görünüm modülünü değiştirmenin doğru yolu , varlık içeriği oluşturulmadan önce çağrılan hook_entity_view_mode_alter () yöntemini uygulamaktır . Örneğin, node_view () öğesinde bu kanca, çağrılan ilk işlev olan node_build_content () öğesinden çağrılır node_view().

  if (!isset($langcode)) {
    $langcode = $GLOBALS['language_content']->language;
  }

  // Populate $node->content with a render() array.
  node_build_content($node, $view_mode, $langcode);

4
Teşekkür ederim. Bu kanca drupal gerektirir lütfen dikkat = = 7.17
cissharp

6

Sadece belirli sayfalar için değiştirmeniz gerekirse, Görüntüleme Modu Sayfasını öneririm . Oldukça kullanışlı ve kullanımı basit.


Teşekkür ederim. Ama farklı bir senaryom var. Aynı içerik türüne sahip düğümler için farklı görünüm modu kullanmak istiyorum. Düğümde kullandığım sınıflandırmada görünüm modunu değiştirmek istiyorum. Yani düğümler aynı URL kalıplarına sahip olacak.
cissharp
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.