แสดง field ที่ต้องการใน node.tpl.php ของ drupal 7

drupalTuesday, October 11, 2011 - 22:25

ในส่วนของ node.tpl.php ของ drupal 7 นั่นค่า print render($content); เป็นในส่วนของการแสดงผล field ทั้งหมดของหน้า node นั้นๆออกมาเลย ซึ่งบ้างครั้งเราอาจจะต้องการแยกการแสดงผลของ field ต่างๆออกมาเพื่อจัดรูปแบบได้ตามอิสระที่เราต้องการ

field drupal 7

drupal 7 นั่นสามารถแยกการแสดงผลของ field ได้อย่างอิสระมากครับโดยเราสามารถระบุชื่อ field ออกมาได้เลยใน node.tpl.php เพื่อให้มันแสดงผลเฉพาะ filed นั้นๆออกมา ถ้าดูตามรูปบนสมมติว่าผมสร้าง field ชื่อ Categories และ Tags ไว้นะครับ

วิธีการ print field ใน node.tpl.php ของ drupal 7

  1. อย่างแรกครับถ้าเราต้องการ print field ตัวไหนให้ทำการ hide field ตัวนั้นไปก่อนตัวอย่างโค็ดนะครับ
    <?php
    hide($content['fieldname']);
    print render($content);
    ?>

    * fieldname คือให้เราใส่ชื่อ field นั้นๆลงไป

  2. เราจะรู้ชื่อ field ได้ยังไงให้ไปดูที่ admin/structure/types จากนั้นคลิก manage fields เพื่อเข้าไปดู field ต่างๆใน content type นั้นๆ และสังเกตุตรง NAME ครับให้นำค่าตัวนี้ละครับมาใส่ใน code ด้านบนของเรามันจะเป็นชื่อ field จริงๆ
    field name
  3. จากนั้นถ้าต้องการให้แสดงผลออกมาตรงส่วนไหนของ node.tpl.php ก็ใช้คำสั่ง render ออกมาได้เลยครับเช่น
    <?php print render($content['fieldname']); ?>

ตัวอย่าง

 <span>Post in: <?php print render($content['taxonomy_vocabulary_1']); ?></span>
<?php
                // We hide the comments and links now so that we can render them later.
                hide($content['comments']);
                hide($content['links']);
                hide($content['taxonomy_vocabulary_1']);
                hide($content['taxonomy_vocabulary_2']);
                print render($content);
              ?>
<div class="node-tags"><span>Tags :</span><?php print render($content['taxonomy_vocabulary_2']); ?></div>
<?php print render($content['links']); ?>
<?php print render($content['comments']); ?>

แนะนำให้อ่าน

แสดงความคิดเห็น