web-gelistirme-sc.com

Belirli görünüm modu için şablon nasıl sağlanır?

Arama sonucu görüntüleme modunu bir şablonla temalamak istiyorum.

Kafamda bir şablon dosyası düğümü - makale - arama-sonuç.tpl.php isimlendirmenin hile yapacağını söyledim, ama açıkçası bu konuda yanılıyorum.

Düğüm - article.tpl.php ve bu onay $ view_mode içinde yapabileceğimi biliyorum, ama bu şablon istemiyorum diğer tüm görünüm modları ile garip.

Fikirler?

47
artfulrobot

Düğüm önişleme işlevine tema kanca önerileri eklemek hile yapmalıdır:

function MYMODULE_preprocess_node(&$vars) {
  if ($vars['node']->type == 'article' && $vars['view_mode'] == 'search_result') {
    $vars['theme_hook_suggestions'][] = 'node__article__search_result';
  }
}

Önbellekleri temizledikten sonra şablon dosya adınız için düğüm - makale - arama-sonuç.tpl.php kullanabilmeniz gerekir.

NB. Bunu, bunun yerine MYTHEME_preprocess_node() işlevini çağırarak temanızın template.php dosyasında da yapabilirsiniz.

46
Clive

Varlık görüntüleme modları modülü bu şablon önerilerini otomatik olarak ekler

Yöneticilerin varlıklar için özel görünüm modları tanımlamasına olanak tanıyan Drupal 7 halefi Derleme modları . Özel varlıklar hook_entity_info_alter () aracılığıyla varlık kaydına eklenir Bir varlığa görünüm modlarının bir listesini sağlamak için entity_get_info () kullanan herhangi bir kod için kullanılabilir.Bu, düğüm ve kullanıcı referans alanları, Görünümler vb.

3
Bas

Dinamik olarak yenilerini eklemenizi sağlayan bir işlev. Ayrıca, bildirilmiş bir tane varsa, ilgili önişleme işlevini çağırır.

Ardından çalışmasını sağlamak için drush cache-clear theme-registry.

Kullanmak için THEME'yi temanızın adıyla değiştirin ve temalar template.php dosyanıza yerleştirin.

örneğin. Droid adlı bir tema için buna droid_preprocess_node(&$variables, $hook) { diyeceksiniz ...

function THEME_preprocess_node(&$variables, $hook) {
  $view_mode = $variables['view_mode'];
  $content_type = $variables['type'];
  $variables['theme_hook_suggestions'][] = 'node__' . $view_mode;
  $variables['theme_hook_suggestions'][] = 'node__' . $view_mode . '_' . $content_type;

  $view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode . '_' . $content_type;
  if (function_exists($view_mode_preprocess)) {
    $view_mode_preprocess($variables, $hook);
  }

  $view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode;
  if (function_exists($view_mode_preprocess)) {
    $view_mode_preprocess($variables, $hook);
  }
}
2
Elijah Lynn