9 July 2010

Drupal views arguments

เป้าหมาย: ต้องการดึงข้อมูล content type มาแสดง โดยมีเงื่อนไขว่ารายการที่แสดงจะต้องเป็นเฉพาะของคนๆนั้น ในหน้า node — แสดงเนื้อหาย้อนหลังของ user ที่เป็นเจ้าของ node ที่กำลังเปิด

โดยพื้นฐานแล้ว Drupal จะมี block ชื่อ "Recent blog posts" ที่เอาไว้สำหรับแสดงข้อมูลล่าสุดของ content type ประเภท "blog" แต่เป็นการแสดงแบบรวม user ทุกคน

แล้วถ้าต้องการจะให้แสดงเฉพาะ user ก็ต้องใช้ Module Views และกำหนด arguments ในการดึงข้อมูล

ขั้นตอน: เริ่มด้วยการกำหนดค่า field, style, filters อะไรต่างๆ ให้เรียบร้อย จากนั้นสร้างเงื่อนไข arguments

  • Argument -> User: uid
  • Action to... -> Provide default argument
  • Default argument... -> PHP Code
  • PHP argument code ->
    if (arg(0) == 'node') {
       $node = node_load(arg(1));
       return $node->uid;
    }

เท่านี้ก็เรียบร้อย สามารถดึง block ไปวางในหน้า node ได้เลย, ขอบคุณ gumara ที่เว็บไซต์ drupal.in.th