ฉันจะสร้างต้นไม้แบบซ้อนด้วยคำ & โหนดด้วย Views 3 ได้อย่างไร


22

ฉันต้องการสร้างสิ่งที่คล้ายกันนี้:

สี (คำศัพท์)

  • สีแดง (คำ)
    • มืด (คำ)
      • โหนด 1
      • โหนด 2
    • แสง (ระยะ)
      • โหนด 3
      • โหนด 4
  • น้ำเงิน (คำ)
    • โหนด 5
    • โหนด 6
  • สีเขียว (คำ)
    • โหนด 7
    • โหนด 8

(กระสุนเป็นจุดเยื้อง)
มีวิธีทำเช่นนี้กับ Drupal 7 และมุมมอง 3 หรือไม่? ถ้าไม่มีวิธีอื่นในการทำเช่นนี้หรือไม่


เพื่อชี้แจง - อย่างที่ฉันอาจเข้าใจผิดคำถามของคุณ - คุณต้องการแสดงโครงสร้างเช่นนี้ในหน้าเดียว?
Maciej Zgadzaj

ใช่เพียง 1 หน้า
iStryker

คำตอบ:


15

ขอบคุณ refino ฉันพบวิธีแก้ปัญหาที่ดีโดยใช้โมดูลต่อไปนี้:

ด้านล่างคุณจะพบคำอธิบาย:

  1. ขั้นแรกสร้าง Taxonomy ใหม่ (เรียกว่า "โฟลเดอร์")
  2. จากนั้นสร้างประเภทเนื้อหาใหม่ (เรียกว่า "องค์ประกอบ") ด้วยฟิลด์การอ้างอิงคำศัพท์ไปยัง taxonomy "Folder"
  3. สร้างมุมมอง "เนื้อหา" ใหม่ (เรียกว่า "มุมมององค์ประกอบ")
  4. เลือกการแสดงฟิลด์
  5. เพิ่มตัวกรองตามบริบทให้กับฟิลด์คำอ้างอิง
  6. สร้างมุมมอง "Taxonomy" ใหม่ (เรียกกันว่า "โฟลเดอร์ทรี")
  7. เพิ่ม 2 ฟิลด์ (ชื่อคำและรหัสคำ) ฟิลด์ที่สองสามารถแยกออกจากการแสดงผลได้
  8. ในความสัมพันธ์: เพิ่ม "คำหลัก"
  9. เพิ่มฟิลด์ที่สาม (รหัสคำศัพท์) และกำหนดให้กับความสัมพันธ์หลักของคุณ ฟิลด์นี้สามารถแยกออกจากการแสดงผลได้
  10. เลือกรูปแบบ "ทรี (โมเดล Adjacency)" และเลือกในพารามิเตอร์: รายการสั่งซื้อ + ฟิลด์หลัก (รหัสแรกของคุณ), เขตข้อมูลผู้ปกครอง (รหัสที่คุณกำหนดให้กับความสัมพันธ์ผู้ปกครอง) ตอนนี้คุณควรมีต้นไม้ที่ดีพร้อมคำศัพท์ทั้งหมดของคุณซ้อนกัน
  11. เพิ่มฟิลด์ที่ 4 "ทั่วโลก: มุมมอง" (ซึ่งมาพร้อมกับมุมมองฟิลด์มุมมอง) แล้วเลือก "มุมมององค์ประกอบ" ของคุณ, แสดงต้นแบบเพิ่ม [tid] ในฟิลด์ข้อความอาร์กิวเมนต์

หวังว่าความช่วยเหลือนี้

ไชโย

แก้ไขโดยiStryker : นี่คือสิ่งที่ฉันได้รับ สิ่งเดียวที่ฉันเปลี่ยนคือทำให้มุมมององค์ประกอบดูตารางและลบคลาสเริ่มต้น (แถว & แถบ)

รูปภาพของผลิตภัณฑ์ขั้นสุดท้ายโดย iStryker


ความช่วยเหลือที่ดีจากความคิดเห็นนี้ เพียงบันทึกย่อ: คุณอาจต้องการเปลี่ยนชื่อเขตข้อมูล (ชื่อผู้ดูแลระบบ) เนื่องจากในรายการแบบหล่นลงของการตั้งค่า VT ทั้งฟิลด์ "รหัสประจำตัว" จะแยกไม่ออก
อาร์เทอร์

คำตอบนี้ทำให้ฉันได้ 90% ฉันต้องการลบคลาสเริ่มต้นในแต่ละฟิลด์ ลบคลาสของตารางในมุมมอง 'มุมมององค์ประกอบ' Theme a little
iStryker

ฉันได้เพิ่มขั้นตอนหนึ่งเพื่อลดรายการซ้ำในมุมมองเนื้อหา นอกจากนี้ฟิลด์ "ข้อโต้แย้ง" ในทั่วโลก: มุมมองตอนนี้มีข้อความว่า "ตัวกรองตามบริบท" และโทเค็นที่จะใช้คือ "[! tid]"
othermachines

เป็นไปได้ไหมที่จะทำเช่นนี้ แต่กับกลุ่มออร์แกนิกแทน Taxonomy?
IamOnStage

14

ฉันสร้างมุมมองสามมุมใน Drupal 7.8 และมุมมองมุมมอง 3 + มุมมองซ้อนมุมมองหนึ่งไปยังมุมมองอื่นโดยใช้มุมมองรวมและฉันได้รับผลลัพธ์ (แนบ) ป้อนคำอธิบายรูปภาพที่นี่

ทีละขั้นตอนวิธีการทำ:

  1. สร้างคำศัพท์ "สี" และเติมด้วยแท็ก

  2. สร้างมุมมองใหม่ของโหนดอนุกรมวิธานสี - ฉันเรียกว่า "โหนดของสี"

2.1 ตารางรูปแบบ, การตั้งค่า: ฟิลด์การจัดกลุ่ม: คำศัพท์อนุกรมวิธาน: ชื่อ

2.2 ตัวกรองตามบริบทขั้นสูง: คำศัพท์ทางภาษี: คำหลัก

2.3 ความสัมพันธ์ขั้นสูง: คำศัพท์ทางอนุกรมวิธาน: เนื้อหาที่ใช้สี

2.4 กำหนดเขตข้อมูล: คำศัพท์อนุกรมวิธาน: ID คำศัพท์, คำศัพท์อนุกรมวิธาน: ชื่อ, (field_color) เนื้อหา: ชื่อเรื่อง

2.5 เกณฑ์การกรอง: คำศัพท์อนุกรมวิธาน: คำศัพท์ (= สี)

2.6 ถ้าคุณต้องการคุณยังสามารถตั้งค่า "แยกออกจากการแสดงผล" สำหรับรหัสประจำตัวระยะเทอมภาษี:

2.7 กำหนดเส้นทาง: / nodes-of-colours /%

2.8 ตั้งค่าลักษณะการทำงานของผลลัพธ์: ทั่วโลก: พื้นที่ดู (เราจะกลับมาที่นี่ในภายหลัง) 2.9 บันทึก

3. สร้างมุมมองใหม่ของโหนด taxonomy Colors - ฉันเรียกมันว่า "Nodes of Colors 2"

3.1 ตารางรูปแบบ, การตั้งค่า: ฟิลด์การจัดกลุ่ม: ไม่มี

3.2 ตัวกรองตามบริบทขั้นสูง: คำศัพท์ทางภาษี: รหัสประจำตัว

3.3 ความสัมพันธ์ขั้นสูง: คำศัพท์ทางอนุกรมวิธาน: เนื้อหาที่ใช้สี

3.4 ตั้งค่าฟิลด์: คำศัพท์อนุกรมวิธาน: ID คำศัพท์, คำศัพท์อนุกรมวิธาน: ชื่อ, (field_color) เนื้อหา: ชื่อเรื่อง

3.5 เกณฑ์การกรอง: คำศัพท์อนุกรมวิธาน: คำศัพท์ (= สี)

3.6 หากคุณต้องการคุณยังสามารถตั้งค่า "แยกออกจากการแสดงผล" สำหรับรหัสประจำตัวเทอมระยะเวลา Taxonomy: ชื่อ

3.7 กำหนดเส้นทาง: / nodes-of-colours-2 /%

3.8 ตั้งค่าลักษณะการทำงานของผลลัพธ์: ทั่วโลก: ไม่มี

3.9 บันทึก

ย้อนกลับไปและแก้ไข "โหนดสี" อีกครั้ง

4.1 ไปที่ตั้งค่าลักษณะการทำงานของผลลัพธ์: ทั่วโลก: พื้นที่ดู

4.2 ตั้งค่ามุมมองเป็นแทรก: มุมมอง: nodes_of_colors2 จอแสดงผล: หน้า

4.3 ตั้งค่าสืบทอดตัวกรองตามบริบท

4.4 บันทึก

5 กลับไปที่ Views อีกครั้ง (Type Term)

5.1 สร้างมุมมองใหม่ของโหนดอนุกรมวิธานสี - ฉันเรียกว่า "ต้นไม้สี"

5.1 ตารางรูปแบบ, การตั้งค่า: ฟิลด์การจัดกลุ่ม: ไม่มี

5.2 ตัวกรองตามบริบทขั้นสูง: ไม่มี

5.3 ความสัมพันธ์ขั้นสูง: เทอมอนุกรมวิธาน: เทอมผู้ปกครอง

5.4 ตั้งค่าฟิลด์: คำศัพท์อนุกรมวิธาน: ID คำศัพท์, คำศัพท์อนุกรมวิธาน: ID คำศัพท์, คำศัพท์อนุกรมวิธาน: ชื่อ, มุมมอง: มุมมองรวม (มุมมองรวม)

5.5 เงื่อนไขการกรอง (1): คำศัพท์อนุกรมวิธาน: คำศัพท์ (= สี)

5.6 เกณฑ์การกรอง (2): (ผู้ปกครอง) ระยะเวลา Taxonomy: Term

5.7 หากคุณต้องการคุณยังสามารถตั้งค่า "แยกออกจากการแสดงผล" สำหรับ Term ID และป้ายกำกับของมุมมองรวม

5.8 กำหนดเส้นทาง: / colours-tree

5.9 ตั้งค่าลักษณะการทำงานของผลลัพธ์: ไม่มี

5.10 บันทึก

... และนี่ควรเป็นอย่างนี้ในที่สุด


คุณสามารถอธิบาย "5.4 ตั้งค่าเขตข้อมูล ... มุมมอง: รวมมุมมอง" อีกเล็กน้อย ฉันไม่เห็นตัวเลือกสำหรับสิ่งนั้น ขอบคุณ
Uwe

ฉันขอโทษฉันไม่ได้เขียนฉันใช้ Views 7.x-3.0-rc1 + Views
Viewss

โอเคขอบคุณ. ฉันทำตามคำแนะนำในคิวปัญหาของพวกเขาเช่นกันdrupal.org/node/1171604
uwe

ว้าวคำตอบนี้ได้รับการโหวตอย่างมากในรอบ 7 วัน มีใครทดสอบเรื่องนี้บ้างหรือคุณ / พวกเขาเพิ่งจะถอนตัวเพราะ @Refineo ให้คำตอบที่ละเอียดที่สุด?
iStryker

ฉันลองคำแนะนำนี้อีกครั้งและไม่ได้ผล ฉันเกลียดทุกคนที่โหวตคำถามนี้เมื่อสัปดาห์ที่แล้วโดยไม่มีการทดสอบ
iStryker

4

ฉันไม่ได้ลองรุ่น D6 หรือ D7 ของตัวเอง แต่ฉันคิดว่าฉันจะพูดถึงมันในกรณีที่เป็นสิ่งที่คุณกำลังมองหา: Views Tree Module - D7 progress

แก้ไข : ขณะนี้มีรุ่น D7 แล้วเช็คเอาต์หน้าแรกของโมดูลมุมมองต้นไม้


3

หากคุณต้องการรับ vid จาก URL ให้ใช้รหัสต่อไปนี้

$vid = $_GET['vid'];
$tid = 0;
$level = 0;
print taxonomy_tree($vid, $tid, $level);
function taxonomy_tree($vid, $tid = 0, $level) {
  $children = taxonomy_get_children($tid, $vid);
  $output = '';
  if ($children) {
    $output .= '<ul>'; 
    foreach ($children as $child) {
      $level++;
      $output .= '<li class="taxonomy-tree-lvl' . $level . ' ">'; 
print $level;
      $output .= l($child->name, 'taxonomy/term/'. $child->tid) . '(' . taxonomy_term_count_nodes($child->tid) . ')'; 
      $output .= taxonomy_tree($vid, $child->tid, $level);
      $output .= '</li>';

      $level--; 
    }
    $output .= '</ul>'; 
  }

  return $output;

}

หรือใช้รหัสต่อไปนี้

$vocabulary = taxonomy_vocabulary_load(2);//Here pass the vid
print $vocabulary->name;
$vid1 = $_GET['vid'];
if(!$vid1) {
$vid1 = 2;
print 'empty';
}
$vid = 2;
$parent = 0;
print get_child_terms($parent, $vid1);
 function get_child_terms($parent, $vid) {
      $sql = "SELECT td.tid, td.vid, td.name"
         . "  FROM {term_data} td"
         . "  JOIN {term_hierarchy} th on th.tid = td.tid"
         . " WHERE th.parent = %d"
         . "   AND td.vid = %d"
         . " ORDER BY td.weight, td.name";
    $terms = db_query($sql, $parent, $vid);
    $output = "";
    while ($aterm = db_fetch_object($terms)) {
        $output .= "<li>";
        $output .= l("$aterm->name", "taxonomy/term/$aterm->tid/all") . " ("
                .  taxonomy_term_count_nodes($aterm->tid) . ")</li>\n"
                .  get_child_terms($aterm->tid, $vid);
    }
    return ($output != "") ? "<ul style='list-style-type: none;
  margin: 0px 0px 0px 20px;
  padding: 0px;'>\n". $output ."</ul>\n" : "";
  }

2

แน่นอนมี:

  1. ตั้งค่าคำศัพท์ลำดับชั้นของคุณ
  2. เพิ่มลงในประเภทเนื้อหาที่เลือก
  3. สร้างมุมมองรายการโหนดจากประเภทเนื้อหานั้นด้วยตัวกรองเชิงบริบท :

    • "เนื้อหา: มีคำว่า taxonomy ID" - หากคุณต้องการแสดงเฉพาะโหนดที่กำหนดให้กับคำเฉพาะ
    • หรือ "เนื้อหา: มี ID คำศัพท์อนุกรมวิธาน (มีความลึก)" - หากคุณต้องการแสดงรายการโหนดที่กำหนดให้กับคำเฉพาะรวมถึงข้อกำหนดย่อย

      ในกรณีนี้ในการกำหนดค่าตัวกรองคุณต้องตั้งค่าความลึก - กี่ระดับด้านล่าง (หรือสูงกว่า) ที่คุณต้องการให้ตัวกรองนี้ทำงาน

จากนั้นสมมติว่า URL ของมุมมองของคุณคือhttp://mysite.com/myviewและ 'Red' tid = 1 หากคุณไปที่http://mysite.com/myview/1มันจะแสดงรายการโหนดทั้งหมดที่คุณกำหนดให้กับหนึ่งใน คำว่า 'แดง', 'มืด' และ / หรือ 'แสง'


ฉันไม่ได้กำลังหาคำตอบสำหรับคำเฉพาะ ฉันกำลังมองหาคำศัพท์ทั้งหมด
iStryker

และนั่นคือสิ่งที่ฉันอธิบาย
Maciej Zgadzaj

2

คุณสามารถใช้โมดูลเมนู Taxonomy นี่คือคำพูดเกี่ยวกับมัน (จากหน้าโครงการของโมดูล):

แปลงคำศัพท์ทางอนุกรมวิธานของคุณเป็นเมนูได้อย่างง่ายดาย!

คุณสมบัติ:

  • เมนูกำหนดเองต่อคำศัพท์
  • ใช้เส้นทางคำศัพท์อนุกรมวิธานเริ่มต้นหรือเส้นทางที่กำหนดเอง
  • ผสานรวมกับ Views
  • รวมเข้ากับ Pathauto: ใช้ชื่อแทน URL / พา ธ
  • ห้ามรบกวนโมดูลเมนูอื่น

ยินดีต้อนรับสู่ Drupal SE! taxonomy_menu เป็นโครงการที่ยอดเยี่ยมและสามารถทำสิ่งนี้ได้อย่างดี OP ต้องการทำใน Views
AyeshK

0

ฉันพยายามทำแบบเดียวกัน แต่ไม่พบว่ามีอยู่ใน D7 โมดูลTaxonomy Blocksทำในบล็อก - ไม่ใช่มุมมอง


0

ฉันเชื่อว่าฉันได้พบวิธีอื่นในการแก้ปัญหานี้แล้วและฉันคิดว่ามันง่ายกว่าโซลูชันอื่น ๆ ที่เหลือ มันไม่เกี่ยวข้องกับโมดูลพิเศษใด ๆ และคุณต้องการเพียงหนึ่งมุมมอง

สมมติว่าคุณได้สร้างคำศัพท์ลำดับขั้นสองระดับ (สี) และประเภทเนื้อหาที่มีคำอ้างอิงถึงคำศัพท์นั้นให้ทำดังต่อไปนี้:

  1. สร้างมุมมองใหม่และกรองตาม "คำศัพท์อนุกรมวิธาน: ชื่อเครื่อง (= สี)"
  2. เพิ่มความสัมพันธ์: (1) Taxonomy term: Content using Colorและ (2)Taxonomy term: Parent term
  3. เพิ่มเขตข้อมูลลงในมุมมอง: (1) Title(เลือกfield_colorใน "ความสัมพันธ์" และต้องการความสัมพันธ์นี้ ), (2) Taxonomy term name(อย่าใช้ความสัมพันธ์และแยกออกจากการแสดง) (3) Taxonomy term name(ใช่อีกครั้งคราวนี้เลือกParentสำหรับความสัมพันธ์และยกเว้น จากจอแสดงผล)
  4. ตอนนี้จัดกลุ่มได้โดยคลิกที่การตั้งค่าของรูปแบบ: (1) การจัดกลุ่ม 1:, (Parent) Taxonomy term: Name(2)Taxonomy term: Name

เสร็จสิ้น หากคุณมีมากกว่าสองระดับเพียงเพิ่มความสัมพันธ์อื่นของผู้ปกครองโดยใช้ผู้ปกครองเป็นความสัมพันธ์ของความสัมพันธ์

แก้ไข: หากคุณไม่ต้องการความสัมพันธ์คุณจะต้องจบด้วยการหลอก ผู้ปกครองจะถูกระบุไว้สองครั้งหากพวกเขามีเงื่อนไขย่อยที่อ้างอิงโดยโหนด ดังนั้นสิ่งนี้ จำกัด คำตอบเล็กน้อยในคำศัพท์ระดับบนสุดโดยไม่มีโหนดที่อ้างอิงมันจะไม่แสดง นอกจากนี้เนื่องจากการเรียงลำดับอาจมีความสำคัญการมีเนื้อหาใด ๆ ที่อ้างอิงคำศัพท์ระดับสูงสุดอาจทำให้เกิดปัญหาสำหรับคุณขึ้นอยู่กับความต้องการในการแสดงผล


ไม่มีตัวกรอง "คำศัพท์อนุกรมวิธาน: ชื่อเครื่อง (= สี)" จนกระทั่งเพิ่มความสัมพันธ์ ฉันสงสัยว่าขั้นตอนแรกจะเป็นที่สอง นอกจากนี้ฉันไม่เข้าใจวิธีเพิ่มชื่อฟิลด์เมื่อเลือก field_color ใน "ความสัมพันธ์"
Dimetry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.