Views: जब फ़ील्ड में एक से अधिक मान होते हैं, तब नोड्स के डुप्लिकेट्स कैसे हटाएँ
हाल ही में मैंने Views के माध्यम से कंपनियों की एक सूची प्रदर्शित की, लेकिन किसी कारणवश Views प्रत्येक कंपनी को 1 से 3 बार दोहरा रहा था — जो कि काफी अजीब था। मैंने फिल्टर और सॉर्टिंग हटाकर भी देखा, लेकिन फिर भी डुप्लिकेट दिखाई देते रहे। समस्या यह थी कि इन नोड्स में तिथि (date) फ़ील्ड एक बहु-मूल्य (multiple values) वाला फ़ील्ड था, और इसी कारण Views परिणामों में नोड्स को दोहरा रहा था। नीचे मेरे (और शायद आपके) Views में डुप्लिकेशन की समस्या का समाधान दिया गया है:
एक नया मॉड्यूल बनाएं, उदाहरण के लिए मेरा मॉड्यूल sitemade कहलाएगा। फ़ाइल sitemade.info की सामग्री इस प्रकार होगी:
name = Views Remove Duplicates
description = Removes duplicate nodes. Requires editing the module file
to identify the views you want to affect.
package = "Views"
core = 6.x
dependencies[] = views
इसके बाद sitemade.module फ़ाइल बनाएं:
<?php
function sitemade_views_pre_render(&$view){
$used_nids = array();
if ($view->name == 'companies'){
if ($view->current_display == 'page_1'){
foreach ($view->result as $row){
if (!in_array($row->nid, $used_nids)){
$new_view_result[] = $row;
$used_nids[] = $row->nid;
}
}
$view->result = $new_view_result;
}
}
}
यहाँ 'companies' आपके View का नाम है, और 'page_1' उस View के पेज डिस्प्ले का नाम है। इस कोड को जोड़ने के बाद, मेरे View में नोड्स का डुप्लिकेशन पूरी तरह से समाप्त हो गया।
इस समाधान का अंग्रेज़ी संस्करण और इसी समस्या के अन्य समाधान आप यहाँ पा सकते हैं: