Bunu kodda sınırlamanın bir yolu, özel bir modüle aşağıdakine benzer bir şey eklemek olacaktır:
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;
}
Bu, bir ilişki yoluyla düğümlere bağlanan sınıflandırma terimlerinin bir görünümü içindir. Düğümlerin yalnızca bir görünümü varsa, kilometreniz değişebilir.
Her terim için 3'ten fazla görüntülemeyi engellemesine rağmen, bu, sorgunun her terim için tüm sonuçları döndürmesini engellemez, bu nedenle SQL performansını hiç iyileştirmez. Her terim için çok sayıda sonucunuz varsa , ayrı görünüm paneli ekranları oluşturmak ve CTools Sayfa Yöneticisi gibi bir şeyi kullanarak hepsini tek bir bölgeye koymak, böylece büyük sorgular çalıştırmamanız.
Her zaman olduğu gibi, bunları üretimde önbelleğe almak isteyeceksiniz.