เทมเพลตคำแนะนำสำหรับโหมดมุมมอง 'ทีเซอร์' ของโหนดคืออะไร


37

node - [type | nodeid] .tpl.phpกำหนดเป้าหมายเป็นโหมดมุมมองเริ่มต้นของโหนด อย่างไรก็ตามฉันต้องการแทนที่เทมเพลตสำหรับโหมดมุมมองทีเซอร์

อะไรคือคำแนะนำเทมเพลต (ไฟล์. tpl.php) สำหรับโหมดมุมมอง 'ทีเซอร์'

คำตอบ:


57

ฉันไม่คิดว่าจะมีหนึ่งโดยค่าเริ่มต้น แต่คุณสามารถเพิ่มได้อย่างง่ายดายในไฟล์ template.php ของคุณ:

function MYTHEME_preprocess_node(&$vars) {
  if($vars['view_mode'] == 'teaser') {
    $vars['theme_hook_suggestions'][] = 'node__' . $vars['node']->type . '__teaser';   
    $vars['theme_hook_suggestions'][] = 'node__' . $vars['node']->nid . '__teaser';
  }
}

ที่จะให้คุณใช้ไฟล์เทมเพลตเช่น: node--[type|nodeid]--teaser.tpl.php


3
คุณสามารถดึงตัวแปรจากอาเรย์แทนการอ้างอิงวัตถุโหนดได้เช่นกัน ...
shaneonabike

1

มีวิธีที่ง่ายกว่าในการทำสิ่งนี้ผ่านโมดูลโหมดมุมมองเอนทิตี

https://www.drupal.org/project/entity_view_mode

The Drupal 7 successor to Build modes which will allow administrators to 
define custom view modes for entities. Custom entities are added to the 
entity registry via hook_entity_info_alter() so they are available to any code
that uses entity_get_info() to provide a list of view modes for an entity. 
This includes node and user reference fields, Views, etc.

It also ensures consistency for template suggestions for all entity types, 
so that you can use any of the template patterns, in order of most specific 
to least specific:

entity-type__id__view-mode
entity-type__id
entity-type__bundle__view-mode
entity-type__bundle
entity-type

1

คำแนะนำแม่แบบสำหรับโหมดมุมมอง "ทีเซอร์" คือ:

node--[type]--teaser.tpl.php

โดยค่าเริ่มต้นโหมดดู "ทีเซอร์" จะใช้node.tpl.phpเทมเพลตปกติดังนั้นคุณสามารถคัดลอกไฟล์นั้นเพื่อเริ่มต้น

คุณสามารถดูคำแนะนำเทมเพลตทั้งหมดได้โดยเปิดtheme_debugโหมดhttps://www.drupal.org/node/223440#theme-debug

เมื่อคุณดูแหล่งที่มา:บนหน้าคุณควรเห็นความคิดเห็น HTML ที่แสดงรายการคำแนะนำเทมเพลตทั้งหมดที่ Drupal พิจารณา


0

โซลูชันของคลีฟนั้นถูกต้อง แต่ถ้าคุณต้องการให้มีการประเมินคำแนะนำใหม่หลังจากคำแนะนำเริ่มต้นคุณต้องเพิ่มคำแนะนำเหล่านั้นในตำแหน่งสุดท้ายของอาร์เรย์:

function MYTHEME_preprocess_node(&$vars) {
  if($vars['view_mode'] == 'teaser') {
    array_unshift($vars['theme_hook_suggestions'], 'node__' . $vars['node']->type . '__teaser');
    array_unshift($vars['theme_hook_suggestions'], 'node__' . $vars['node']->nid . '__teaser');
  }
}

ด้วยวิธีนี้คุณหลีกเลี่ยงว่าโหนดทีเซอร์ของคุณจับคู่ (และใช้ถ้ามี) โหนด - [type] .tpl.php ก่อนโหนด - [ประเภท] - teaser.tpl.php

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.