ฉันกำลังพยายามนับจำนวนคำในชุดของฟิลด์ข้อความยาว เท่าที่ฉันเห็นมีหลายตัวเลือก:
- สร้างมุมมองและเพิ่ม php ลงในเทมเพลตที่กำหนดเองซึ่งสร้างจำนวนคำ โซลูชันส่วนใหญ่ที่ฉันพบดูเหมือนจะอ้างอิงกลับไปด้วย ฉบับปี 2548 นี้ซึ่งล้าสมัยไปมากแล้ว
นี่จะเป็นวิธีแก้ปัญหาที่ใช้การได้ ยกเว้นไม่มีตัวเลือกรหัสใดที่แสดงรายการไว้ และฉันไม่เข้าใจ php หรือ jquery มากพอที่จะอัปเดตเป็น D7 ด้วยตัวเอง ฉันได้ลองสิ่งนี้แล้ว:
<?php $wordcount = " | ".count(explode(" ", strip_tags(trim($content))))." words" ; ?>
แต่ฉันได้รับข้อผิดพลาดของตัวแปรที่ไม่ถูกต้อง
- ที่ด้านล่างของปัญหาเดียวกันนั้น มีโซลูชัน 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");
}
}
- ใช้โมดูลซึ่งฉันต้องการหลีกเลี่ยง นอกจากนี้ โมดูลการนับคำ D7 ส่วนใหญ่ล้าสมัยแล้ว การนับจำนวนคำ ดูเหมือนจะทำอะไรไม่ได้มากและไม่มีเอกสารประกอบ การตรวจสอบฟิลด์ ต้องใช้หลายโมดูลและค่อนข้างยุ่งยาก ดูเหมือนว่าจะเป็นวิธีแก้ปัญหาหนักสำหรับสิ่งที่ควรเป็นปัญหารหัสเบา โซลูชันอื่นๆ ที่ฉันพบส่วนใหญ่จะสร้างจำนวนคำที่ทำงานอยู่สำหรับฟิลด์ที่ใช้งานอยู่ แต่จะไม่บันทึกหรือรวมเข้าด้วยกัน
ฟิลด์ที่เป็นปัญหาอาจอัปเดตพร้อมกับโหนดทั้งหมด หรืออัปเดตผ่านฟิลด์ที่แก้ไขได้ ดังนั้นฉันคิดว่าวิธีที่ดีที่สุดคือ hook หรือ jquery ที่นับคำใหม่ทุกครั้งที่ฟิลด์นั้นอัปเดต จากนั้นบันทึกค่านั้นลงใน สนามใหม่ จากกรณีการใช้งานของฉัน สิ่งนี้จะทำให้ฉันมีความยืดหยุ่นในการเพิ่มและรวมค่าจำนวนคำในรูปแบบต่างๆ
ดูเหมือนว่าตัวเลือก 2 จะเป็นทิศทางที่ถูกต้อง แต่โค้ดนั้นล้าสมัยแล้ว มีวิธีที่ดีกว่านี้ใน D7 หรือไม่