วิธีที่จะ จำกัด สิ่งนี้ในรหัสคือการเพิ่มสิ่งต่อไปนี้ในโมดูลที่กำหนดเอง:
function custom_views_pre_render(&$view) {
//get the rows from the view just before render
$results = $view->result;
//create a counter
$count = '';
//we're going to built up a new $result array
$new_results = array();
//iterate through each view row
foreach($results as $result) {
//find the taxonomy term
$term = $result->taxonomy_term_data_name;
//add the term to a string of all the terms we've seen so far
$count .= $term;
//make sure to separate them with spaces to make them easier to count
$count .= ' ' ;
//count how many rows have the same term as the current one
$term_count = array_count_values(str_word_count($count, 1));
if($term_count[$term] <= 3){
//if this is the third or fewer row with this term, add it to the new result array
$new_results[] = $result;
}
}
//instead of the normal view output, only show the results we put in our array.
$view->result = $new_results;
}
นี่เป็นมุมมองของคำศัพท์อนุกรมวิธานที่เชื่อมต่อกับโหนดผ่านทางความสัมพันธ์ หากคุณมีมุมมองของโหนดระยะทางของคุณอาจแตกต่างกันไป
แม้ว่าจะป้องกันการแสดงผลเกิน 3 ต่อเทอม แต่จะไม่ป้องกันการค้นหาที่ส่งคืนผลลัพธ์ทั้งหมดสำหรับแต่ละเทอมดังนั้นจึงไม่ปรับปรุงประสิทธิภาพการทำงานของ SQL เลย หากคุณมีผลลัพธ์จำนวนมากสำหรับแต่ละคำการทำให้แผงมุมมองแยกแสดงขึ้นและวางทั้งหมดในที่เดียวโดยใช้บางอย่างเช่นCTools Page Managerดังนั้นคุณจึงไม่ได้ใช้ข้อความค้นหาจำนวนมาก
เช่นเคยคุณจะต้องการแคชสิ่งนี้ในการผลิต