2011-11-10 36 views
7

Tôi đã thêm trường tùy chỉnh được gọi là 'field_header' vào loại nội dung trang cơ bản. Làm cách nào để truy cập trường này trên mẫu page.tpl.php để tôi có thể hiển thị ở bất cứ nơi nào tôi muốn? Lý tưởng nhất là tôi cũng muốn xóa nó khỏi nội dung $. Cảm ơn!Drupal 7 cách hiển thị trường tùy chỉnh

Trả lời

10

Đừng quên không phải mọi trang đều nhất thiết phải là trang nút, vì vậy bạn thực sự nên cố gắng truy cập trang này trong node.tpl.php, chứ không phải page.tpl.php.

Trong node.tpl.php bạn có thể làm cho lĩnh vực cụ thể như thế này:

echo render($content['field_header']); 
hide($content['field_header']); // This line isn't necessary as the field has already been rendered, but I've left it here to show how to hide part of a render array in general. 

Nếu bạn hoàn toàn phải làm điều này trong page.tpl.php sau đó bạn muốn thực hiện một chức năng preprocess trong mẫu tập tin của bạn để có được những biến bạn cần:

function mymodule_preproces_page(&$vars) { 
    if ($node = menu_get_object() && $node->type == 'page') { 
    $view = node_view($node); 
    $vars['my_header'] = render($view['field_header']); 
    } 
} 

Sau đó, trong page.tpl.php bạn sẽ có quyền truy cập vào biến $my_header mà sẽ chứa trường trả lại đầy đủ của bạn.

+0

Cảm ơn! Tôi cần phải đặt tiêu đề của tôi ở một nơi cụ thể vì vậy tôi đã thử tùy chọn thứ hai của bạn, nhưng tôi không thể làm cho nó hoạt động. May mắn thay bằng cách sử dụng tùy chọn đầu tiên (và một số jQuery), tôi đã có thể giải quyết vấn đề của mình. Tôi tự hỏi tại sao echo $ vars ['my_header] không hoạt động trong trang của tôi.tpl.php – martincho

+0

Bạn sẽ không cần $ vars [' my_header '] trong page.tpl.php trong trường hợp đó, chỉ $ my_header là đủ. – Jasmo

+0

Cảm ơn câu trả lời đơn giản nhưng hiệu quả này. – Drake

1

Trong node.tpl của bạn, bạn phải sử dụng mã sau đây, đối với tên trường ví dụ: field_header

<!-- For Showing only custom field's Value Use below code --> 
<h2 class="title"><?php print $node->field_header['und']['0']['value'];?></h2> 

<!-- ========================= OR ========================= --> 

<!-- For Showing custom field Use below code , which shows custom field's value and title--> 
<h2 class="title"><?php print render(field_view_field('node', $node, 'field_header')); ?></h2> 

<!-- ========================= OR ========================= --> 

<h2 class="title"><?php print render($content['field_header']); ?></h2> 
0

từ page.tpl.php bạn có quyền truy cập vào $ node và vì vậy tất cả các lĩnh vực từ $ node

print ($node->body['und']['0']['value']); 
Các vấn đề liên quan