Score:0

บันทึกจำนวนคำของ textarea โดยทางโปรแกรม

ธง cn

ฉันกำลังพยายามนับจำนวนคำในชุดของฟิลด์ข้อความยาว เท่าที่ฉันเห็นมีหลายตัวเลือก:

  1. สร้างมุมมองและเพิ่ม php ลงในเทมเพลตที่กำหนดเองซึ่งสร้างจำนวนคำ โซลูชันส่วนใหญ่ที่ฉันพบดูเหมือนจะอ้างอิงกลับไปด้วย ฉบับปี 2548 นี้ซึ่งล้าสมัยไปมากแล้ว

นี่จะเป็นวิธีแก้ปัญหาที่ใช้การได้ ยกเว้นไม่มีตัวเลือกรหัสใดที่แสดงรายการไว้ และฉันไม่เข้าใจ php หรือ jquery มากพอที่จะอัปเดตเป็น D7 ด้วยตัวเอง ฉันได้ลองสิ่งนี้แล้ว:

<?php $wordcount = " | ".count(explode(" ", strip_tags(trim($content))))." words" ; ?>

แต่ฉันได้รับข้อผิดพลาดของตัวแปรที่ไม่ถูกต้อง

  1. ที่ด้านล่างของปัญหาเดียวกันนั้น มีโซลูชัน D6 ที่บันทึกจำนวนคำทุกครั้งที่บันทึกโหนด:
ฟังก์ชัน od_tweaks_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($op == "insert") { // บันทึกจำนวนคำ
    $body = $node->body;
    $word_count = นับ(ระเบิด(" ", strip_tags(ตัดแต่ง($body))));
    $nid = $node->nid;
    db_query("INSERT INTO {od_tweaks} (nid, wordcount) VALUES ($nid, $word_count)");
  } อื่นถ้า ($op == "อัปเดต") {
    $body = $node->body;
    $word_count = นับ(ระเบิด(" ", strip_tags(ตัดแต่ง($body))));
    $nid = $node->nid;
    db_query("UPDATE {od_tweaks} SET wordcount = $word_count WHERE nid = $nid");
  }
}
  1. ใช้โมดูลซึ่งฉันต้องการหลีกเลี่ยง นอกจากนี้ โมดูลการนับคำ D7 ส่วนใหญ่ล้าสมัยแล้ว การนับจำนวนคำ ดูเหมือนจะทำอะไรไม่ได้มากและไม่มีเอกสารประกอบ การตรวจสอบฟิลด์ ต้องใช้หลายโมดูลและค่อนข้างยุ่งยาก ดูเหมือนว่าจะเป็นวิธีแก้ปัญหาหนักสำหรับสิ่งที่ควรเป็นปัญหารหัสเบา โซลูชันอื่นๆ ที่ฉันพบส่วนใหญ่จะสร้างจำนวนคำที่ทำงานอยู่สำหรับฟิลด์ที่ใช้งานอยู่ แต่จะไม่บันทึกหรือรวมเข้าด้วยกัน

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

ดูเหมือนว่าตัวเลือก 2 จะเป็นทิศทางที่ถูกต้อง แต่โค้ดนั้นล้าสมัยแล้ว มีวิธีที่ดีกว่านี้ใน D7 หรือไม่

cn flag
"ชุดของช่องข้อความยาว" ทั้งหมดนี้อยู่ในเอนทิตีเดียวกันหรือไม่ หรือมีการแพร่กระจายในหลาย ๆ เอนทิตีที่เชื่อมโยงโดยการอ้างอิงเอนทิตีหรือคล้ายกัน นอกจากนี้ การนับจำนวนคำต้องมีความแม่นยำเพียงใด
cn flag
ประเภทเอนทิตีเดียวกันและชื่อฟิลด์เดียวกัน แต่ถูกดึงออกจากชุดข้อมูลที่ส่งโดยผู้ใช้ ตัวอย่างเช่น หากผู้ใช้ส่งบล็อกโพสต์ชุดหนึ่ง ฉันต้องสามารถนับจำนวนคำและแสดงจำนวนคำสำหรับแต่ละชุด รวมถึงทั้งชุดด้วย มีโครงสร้างการจ่ายเงินต่อคำที่เชื่อมโยงกับสิ่งนี้ ดังนั้นจึงมีความถูกต้อง
in flag
คุณอาจต้องการดูที่ https://www.drupal.org/project/computed_field โมดูลอนุญาตให้เพิ่มฟิลด์ที่ซ่อนอยู่ ซึ่งค่าที่บันทึกไว้จะถูกคำนวณโดยทางโปรแกรมด้วยรหัสที่คุณกำหนดไว้ จากตรงนั้นสามารถใช้สนามที่อื่นได้เหมือนสนามทั่วไป หรืออีกวิธีหนึ่ง Drupal มีวิธีสร้างฟิลด์ที่คำนวณได้ในตัว แม้ว่าคุณจะต้องเจาะลึกเพิ่มเติมอีกเล็กน้อย ดู https://www.drupal.org/docs/drupal-apis/entity-api/dynamicvirtual-field-values-using-computed-field-property-classes
cn flag
ขอบคุณ. ฉันคิดว่าฉันกำลังมุ่งหน้าไปทางนั้นแล้ว ฉันเกือบจะไปถึงที่นั่นโดยใช้ https://www.drupal.org/project/read_time/ แต่รองรับเฉพาะโหนดเนื้อหาเท่านั้น และฉันต้องรับข้อความจากแบบฟอร์มเอนทิตี

โพสต์คำตอบ

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