لقد قمت بإنشاء طريقة عرض أقوم فيها بعرض عنوان العقدة وشعار (حقل cck). لقد مررت في الحجج اسم مصطلح التصنيف.
في النتيجة يتم عرض العقدة 2 أو 3 مرات ؛ لقد قمت بالفعل بتحديد خانة الاختيار المميزة في إعدادات الاستعلام ولكن هذا لا يعمل أيضًا. لقد استخدمت الفرز العشوائي ، الذي يبدو أنه يسبب التكرارات ؛ عندما أزيل الفرز العشوائي ، فإنه يعمل بشكل جيد.
كيف يمكنني تجنب التكرارات دون تعطيل الفرز العشوائي؟
يمكنك تطبيق GROUP BY أو DISTINCT من خلال تمكين إعدادات تجميع المشاهدات لإزالة السجلات المكررة.
1. اذهب وتعديل طريقة العرض الخاصة بك
2. في متقدم "آخر القسم بتمكين استخدم التجميع: نعم
3. في الحقول أو FILTER CRITERIA القسم ، حدد وتطبيق إعدادات التجميع للحقول التي تريد تجميعها بها أو مميزة.
إن الطريقة البسيطة لتحقيق القيم المميزة في طريقة العرض هي القيام بما يلي:
إن الطريقة البسيطة لتحقيق القيم المميزة باستخدام طرق العرض هي القيام بما يلي:
يمكنك تطبيق GROUP BY أو DISTINCT من خلال تمكين إعدادات تجميع المشاهدات لإزالة السجلات المكررة.
أعرف أن هذا السؤال قد تمت الإجابة عليه بالفعل ، ولكن لبعض هذه الاستخدامات لا تعمل هذه الحلول. ومع ذلك ، بعد إجراء بعض الأبحاث ، وجدت حلًا يناسب احتياجاتي.
لقد وجدت حلاً مفيدًا للغاية سمح لي بإصلاح هذا. لقد نشرت مقتطف الشفرة إلى DropBucket. بشكل أساسي ، تقوم بتطبيق Drupal 7 ربط تغيير الاستعلام الذي يتحقق من جميع استعلامات طرق العرض لتعليقات الاستعلام التي تحدد بند وحقل Groupby. ثم تضيف تلك المجموعة إلى استعلام SQL.
/**
* Found this trick on theoleschool.com.
*
* Description: Allows the view developer to specify the query
* group by action in the query comments. Great way to force the
* removal of duplicates.
*
* Just go into your query comments and type in "groupby:" with
* that colon followed by the field you want to group by.
*
* Examples...
* groupby:node.nid
* groupby:file_managed_file_usage.fid
*
* Ref-Comment: http://theoleschool.com/comment/496#comment-496
* Ref-Article: http://theoleschool.com/blog/using-hookviewsalter-add-group-statement
*/
function mymodule_query_alter(QueryAlterableInterface $query) {
if ($query->hasTag('views')) {
static $count;
$view =& $query->getMetaData('view');
if (strstr($groupby = $view->query->options['query_comment'], 'groupby')) {
list($action, $field) = explode(':', $groupby);
if (strlen($field) > 0) {
$query->groupBy($field);
}
}
}
}
مرجع المصدر موجود في التعليقات على الصفحة.
كان لي نفس المشكلة. في النهاية قمت بحلها عن طريق تثبيت طرق عرض مميزة .
غالبًا ما تنتج العلاقات أو الصلات الأخرى في طرق العرض نتائج "مكررة". على سبيل المثال ، قد تظهر العقدة التي تحتوي على حقل يحتوي على قيم متعددة في العرض مرة واحدة لكل قيمة في الحقل متعدد القيم. إنه أمر محبط ، ولا يحل خيار استعلام SQL "DISTINCT" في واجهة مستخدم طرق العرض بالفعل المشكلة لأن صف النتيجة مميز من الناحية الفنية. تهدف طرق عرض Distinct إلى إعطاء أسلوب GUI بسيط لإزالة أو تجميع هذه الصفوف "المكررة".
لدي عدة Date fields
وأريد الفرز حسب بداية FIRST date
... إليك كيف عملت: في Views->advanced->Other: use aggregation: YES
وثم: SORT CRITERIA->Aggregation settings->Aggregation type: COUNT
توقعت أن يعطيني count
الرقم بدلاً من المثيل ، لكنه جعل النتيجة مميزة ...
واجهت مشاكل في حقول التاريخ متعددة القيم. تم عرض العناصر كلما تم إدخال التاريخ. لم يعمل أي من الحلول المذكورة هنا بالنسبة لي. ولكن بعد ذلك وجدت حل D6 لا يزال يعمل في D7 هناك .
hook_views_pre_render(&$view)
الكلمة السحرية. في المثال ، يقتصر العرض على عرض معين معين لعرض واحد فقط. آمل أن يساعد.
function MYMODULE_views_pre_render(&$view) {
$used_nids = array();
if ($view->name == 'events') {
if ($view->current_display == 'page_2') {
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;
}
}
}
تحرير: للأسف هذا يطرح عدد العناصر المكررة من العرض إذا تم تعيين حد. إذا وجد شخص ما حلًا لهذا ، فيرجى التعليق!
لم تنجح أي من هذه الطرق الأخرى بالنسبة لي ، ولكن آراء البذور العشوائية الوحدة في الواقع خدعت. على الرغم من أن مشكلاتي كانت أكثر ارتباطًا باستخدام جهاز النداء. هنا اقتباس من صفحة مشروع تلك الوحدة:
يضيف معالج ترتيب عشوائي مع البذور. إذا تم تحديد وسيطة عدد صحيح ثابت N في دالة sql Rand () ، يتم استخدامه كقيمة أساسية ، والتي تنتج تسلسلًا متكررًا لقيم الأعمدة. هذا يجعل من الممكن أن يكون الترحيل وعدم ظهور العناصر مرتين. من الممكن أيضًا حساب بذرة مخصصة باستخدام PHP ، مما يسمح لك بإنشاء أرقام Randud pseudo استنادًا إلى متغيرات مثل تاريخ اليوم.
ليس لإيقاظ سلسلة رسائل قديمة ، ولكن الإجابة (إذا كنت تستخدم Drupal 7 وفلتر بحث مكشوف) هو التحقق من "إزالة نقاط البحث" ضمن "البحث: مصطلحات البحث".
تحت "معايير التصفية"
إضافة "بحث: مصطلحات البحث"
حدد "إزالة نتيجة البحث"
انقر فوق "تطبيق (جميع العروض)"
انقر حفظ