मैं एक दृश्य में प्रत्येक पद के लिए नवीनतम पदों में से केवल 3 कैसे दिखाऊं?


13

एक अन्य प्रश्न की सहायता से: दृश्य में प्रत्येक वर्गीकरण के शब्द के लिए नवीनतम नोड्स दिखाएं मैं अपनी आवश्यकता के अनुसार दृश्य बनाने में सक्षम हूं, सिवाय इसके कि यह प्रत्येक पद के लिए सभी पदों को प्रदर्शित करता है (शब्द द्वारा समूहीकृत)? मैं अपने नवीनतम पदों में से केवल 3 को प्रदर्शित करने के लिए प्रत्येक शब्द को कैसे सीमित करता हूं।

जैसे

टर्म 1
- पोस्ट 1
- पोस्ट 2
- पोस्ट 3

टर्म 2
- पोस्ट 1
- पोस्ट 2
- पोस्ट 3

टर्म 3
- पोस्ट 1
- पोस्ट 2
- पोस्ट 3

जवाबों:


9

यदि आपको केवल एक नोड की आवश्यकता है तो आप "प्रतिनिधि नोड" संबंध का उपयोग कर सकते हैं। लेकिन अगर आपको प्रत्येक शब्द के लिए तीन नोड्स की आवश्यकता है, तो व्यू फील्ड व्यू जैसी किसी चीज़ का उपयोग करें ।

1) सामग्री के लिए "बच्चे" दृश्य बनाएं। कुछ इस तरह: यहाँ छवि विवरण दर्ज करें

वर्गीकरण अवधि तर्क, पेजर सीमा, छँटाई और आदि जोड़ें: यहाँ छवि विवरण दर्ज करें

अब आप इस दृश्य को दूसरे से जोड़ सकते हैं।

2) बनाएँ वर्गीकरण देखें: यहाँ छवि विवरण दर्ज करें

छिपा हुआ शब्द आईडी फ़ील्ड जोड़ें और फिर "ग्लोबल: व्यू" फ़ील्ड जोड़ें: यहाँ छवि विवरण दर्ज करें

कैशिंग कॉन्फ़िगर करने के लिए मत भूलना। से दृश्य फील्ड देखें पेज:

यह कैशिंग दृश्य के साथ संयोजन में इस मॉड्यूल का उपयोग करने के लिए अत्यधिक अनुशंसित है। दृश्य सामग्री कैश और कैश क्रियाएँ कैशिंग दृश्य के अच्छे तरीके हैं।


धन्यवाद कलाब्रो आपका दृष्टिकोण भी सही है। मैं मूल रूप से इस मार्ग पर जा रहा था, लेकिन यह देखना चाहता था कि क्या एक टन दृश्य बनाने की तुलना में बेहतर तरीका है और फिर दृश्य के बाद दृश्य एम्बेड करें।
निगेल वाटर्स

2
यह एक टन नहीं है, @NigelWaters। यह केवल दो है: एक नोड के लिए और एक शर्तों के लिए। यह समाधान काफी स्थिर है और मैं इसे गैर-मानक विचारों की सूची के लिए उपयोग करता हूं।
कलाब्रो

मेरी गलतफहमी। मुझे लगा कि मुझे प्रत्येक समूह के लिए एक दृश्य बनाने की आवश्यकता है।
निगेल वाटर्स

यह मेरे उपयोग के मामले के लिए लगभग सही है। मेरा एकमात्र मुद्दा बच्चे के दृश्य के लिए "अधिक" लिंक है, उसी दृश्य के लिंक हैं, और अभी भी केवल सीमित संख्या में तत्वों को प्रदर्शित करता है! मूल दृश्य से शीर्षक उस वर्गीकरण को लिंक करता है जो वांछित है।
मार्क

अहा - मैंने अपने बच्चे के दृश्य के लिए एक ब्लॉक डिस्प्ले बनाया जिसमें केवल पहले n आइटम दिखाए गए हैं, और एक अधिक लिंक है। अधिक लिंक पेज डिस्प्ले पर नेविगेट करता है, और यह पेजर के साथ सभी आइटम प्रदर्शित करता है। महान! अब एकमात्र मुद्दा हेडर है (मास्टर व्यू में) टैक्सोनॉमी टर्म के लिए लिंक, लेकिन मैं या तो इसे अनलिंक कर सकता हूं, या चाइल्ड व्यू के पेज डिस्प्ले को उसी URL में बदल सकता हूं।
मार्क

7

आगे की जांच पर, ऐसा लगता है कि पीक सारांश वास्तव में वही हो सकता है जो आप चाहते हैं। प्रलेखन पर स्क्रीनशॉट Drupal 6 के लिए हैं, और यह Drupal 7 में थोड़ा अलग है, इसलिए मैंने कुछ अपडेट किए गए स्क्रीनशॉट संलग्न किए हैं।

  • 'प्रासंगिक फ़िल्टर'> 'से फ़िल्टर सारांश चुनें जब URL में फ़िल्टर मान नहीं है'> 'सारांश प्रदर्शित करें'> 'स्वरूप'

'प्रासंगिक फ़िल्टर'> 'से फ़िल्टर सारांश चुनें जब URL में फ़िल्टर मान नहीं है'> 'सारांश प्रदर्शित करें'> 'स्वरूप'

  • आपको उप-विचारों का एक दृश्य दिखाई देगा। जिस समूह को आप सीमित करना चाहते हैं, उसके लिए पेजर के बगल में स्थित गियर पर क्लिक करें।

पेजर प्राथमिकताएँ आइकन पर क्लिक करें

  • पेजर विकल्पों पर प्रदर्शित करने के लिए अधिकतम आइटम दर्ज करें।

पेजर विकल्प के तहत पहला क्षेत्र

आपको प्रत्येक समूह के लिए पेजर को संपादित करना होगा जिसे आप सीमित करना चाहते हैं, जो दुर्भाग्यपूर्ण है।जब आप पेजर को एक समूह के लिए संपादित करते हैं, तो यह सभी समूहों के लिए सेटिंग्स बदल देता है। यदि आप समूह की कुल संख्या की तुलना में प्रति समूह कई नोड्स प्रदर्शित करना चाहते हैं, तो इसे 'संदर्भ फ़िल्टर' (बैंगनी रंग में पहले स्क्रीनशॉट पर) के तहत 'प्रारूप' सेटिंग में ओवरराइड करें।

इसमें [n] समूहों के लिए अनिवार्य रूप से [n] विचार बनाने का नुकसान है, जो आपके पास कितने समूहों के आधार पर प्रदर्शन का मुद्दा हो सकता है, लेकिन यह क्वेरी को केवल प्रदर्शित करने के लिए निर्धारित संख्या तक सीमित करता है। यह आपके उपयोग के मामले के आधार पर, आपके प्रदर्शन को बेहतर बना सकता है। हमेशा की तरह, कैश जिम्मेदारी से।


ऐसा प्रतीत होता है कि किसी पेजर को प्रति समूह ओवरराइड नहीं किया जा सकता है। एक समूह में पेजर पर एडिटिंग हिट करना, मास्टर पेजर सेटिंग्स को खींचता है। जब तक मुझे कुछ याद नहीं आ रहा है?
निगेल वाटर्स

आह, ठीक है तुम। खैर, यह एकदम सही है। आप एक बार में उन सभी को सीमित कर पाएंगे।
beth

दुर्भाग्य से इसका मतलब है कि पेजर दिखाए गए समूहों की संख्या को भी प्रभावित करता है। मुझे लगता है कि मेरी मूल पोस्ट भ्रामक है क्योंकि उदाहरण केवल तीन पदों के साथ प्रत्येक तीन पदों को दिखाता है। मुझे एक पृष्ठ पर प्रति शब्द 3 पदों के साथ 10 या अधिक शब्द दिखाने की आवश्यकता है। इतना करीब :(
निगेल वाटर्स

मैं कुछ भी नहीं करने के लिए "ओवरराइड आइटम को प्रदर्शित करने" के बारे में गलत था। यह निर्धारित करने के लिए कि कितने समूहों को दिखाना है। '0' दर्ज करने से आपको अनंत समूह मिलते हैं।
beth

2

कोड में इसे सीमित करने का एक तरीका निम्नलिखित होगा जैसे कि एक कस्टम मॉड्यूल के लिए कुछ:

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 पेज मैनेजर जैसी किसी चीज़ का उपयोग करें ताकि आप भारी क्वेरी नहीं चला रहे हैं।

हमेशा की तरह, आप इस सामान को उत्पादन पर कैश करना चाहते हैं।


2
मेरे लिंग पर टिप्पणी करने की वास्तव में कोई आवश्यकता नहीं है। यह काफी नुकसानदायक है। t.co/i1dKE8hQ t.co/ATfV3mBG वैसे भी, Hook_views_pre_build()या hook_build_pre_execute()कुछ इस तरह के लिए उपयोग करने योग्य हो सकता है जो प्रदर्शन हिट को कम करता है, लेकिन मैं उन लोगों से परिचित नहीं हूं। या आप इस सवाल का जवाब पहले पसंद कर सकते हैं ।
beth

अपडेट: मेरे पास यह अच्छा अधिकार है (Crell और stevector) कि "आप प्रत्येक समूह को अलग-अलग एक क्वेरी में सीमित नहीं कर सकते। आपको इसे रेंडरिंग चरण में करना होगा। SQL ऐसा नहीं कर सकता, दुख की बात है।" उन्होंने यह भी कहा "सर्वश्रेष्ठ आप कर सकते हैं संघ प्रश्नों की एक श्रृंखला है" लेकिन उन्हें नहीं लगता कि दृश्य भी ऐसा कर सकते हैं।
beth

आह, मैंने आपको ओपी के लिए गलत समझा। किसी भी घटना में, पीक सारांश मॉड्यूल इस मामले में उपयोगी हो सकता है, हालांकि यह अपने स्वयं के प्रदर्शन के मुद्दों को प्रस्तुत करता है। इसके निर्माता चेतावनी देते हैं कि यह "सकल की तरह है, लेकिन अच्छा है।"
beth
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.