मैं फिर से लिखे गए क्षेत्र के आधार पर एक दृश्य को कैसे सॉर्ट कर सकता हूं?


10

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

मैंने अपना शोध किया है और केवल पुराने, कुछ हद तक संबंधित, मृत-सिरों वाले धागे पाए हैं।

फिर से लिखे गए क्षेत्र द्वारा छाँटे गए विचार?

तालिका पुन: लिखित फ़ील्ड पर नहीं, बल्कि मूल फ़ील्ड पर सॉर्ट होती है

दृश्य: सॉर्ट मापदंड के लिए कस्टम फ़ील्ड

वैश्विक द्वारा क्रमबद्ध: कस्टम पाठ। क्या यह संभव है?

मैं उम्मीद कर रहा था कि ऐसा होने का एक नया या डरपोक तरीका है।


क्या कोई कारण है जो आप मर्लिनोफैकोस के उत्तर का उपयोग नहीं कर सकते हैं? drupal.org/node/1260160#comment-4907526
कारी वैष्णवन

वह वास्तव में गणना किए गए फ़ील्ड का उपयोग करने के तरीके के बारे में जवाब नहीं देता है। वह सिर्फ इसका इस्तेमाल करने की सलाह देता है। मुझे इसकी कोशिश करने में कोई आपत्ति नहीं है लेकिन मुझे नहीं पता कि मॉड्यूल के साथ क्या करना है। मैं भी आशा व्यक्त की कुछ के बाद से है कि 2 साल पहले हो गया था और Drupal 6. के लिए प्रयास करने के लिए नया हो सकता है कि
निगेल वाटर्स

हाँ, यह एक छोटा जवाब था। सिद्धांत हालांकि अभी भी वही है। मेरा जवाब देखिए।
कारी वैष्णिन

आप उन दिनांक फ़ील्ड के साथ क्या करना चाहते हैं? आने वाली अगली तारीख चुनें?
कारी कौशलिन

मैं आरोही क्रम में दो दिनांक फ़ील्ड द्वारा ईवेंट सामग्री प्रकार को सॉर्ट करना चाहता हूं।
निगेल वाटर्स

जवाबों:


4

यदि आप मॉड्यूल मार्ग के लिए नहीं जाना चाहते हैं, तो यह एक विकल्प है:

1) कम्प्यूटेड फील्ड मॉड्यूल स्थापित करें
2)
क्षेत्र सेटिंग्स में अपने कंटेंट टाइप 3 में एक कंप्यूटेड फील्ड जोड़ें, कंप्यूटेड कोड (PHP) टेक्सटेरिया में, आप फील्ड डेटा एक्सेस कर सकते हैं।

एक चर के लिए अपने वर्तमान भाषा में अपनी तिथि फ़ील्ड प्राप्त करें।

$repeating_dates = field_get_items($entity_type, $entity, 'field_repeating_date_example');
$multidates = field_get_items($entity_type, $entity, 'field_multidate_example');

अब आपकी तिथि मानों में मिल सकती है

$repeating_dates[0]['value'],
$repeating_dates[1]['value'],
$repeating_dates[2]['value'], etc.

$multidates[0]['value'],
$multidates[1]['value'],
$multidates[2]['value'], etc.

अपने दिनांक फ़ील्ड के साथ आपको जो भी तर्क की आवश्यकता है उसे करें और परिणाम को असाइन करें

$entity_field[0]['value']

अब आपके पास एक छांटे जाने योग्य क्षेत्र है जिसे आप दृश्यों में उपयोग कर सकते हैं, लेकिन पहले आपको सभी नोड्स को अपडेट करना होगा क्योंकि गणना किए गए फ़ील्ड को केवल गणना की जाएगी और नोड बचाने के लिए डेटाबेस में सहेजा जाएगा। ऐसा करने के कई तरीके हैं, एक तो व्यू बल्क ऑपरेशंस का उपयोग किया जाता है, यह आपको व्यवस्थापक / सामग्री पर नोड्स को फिर से सहेजने का विकल्प देता है।


मुझे यकीन नहीं है कि यह एक तारीख फ़ील्ड को दोहराने की तारीखों के साथ और किसी अन्य फ़ील्ड के साथ एकल दिनांक (असीमित सेटिंग के साथ) के साथ काम करेगा। यह उस स्थिति में काम कर सकता है जहां दोनों क्षेत्र एक ही मूल्य हैं।
निगेल वाटर्स

मैंने उन मामलों को कवर करते हुए अपना जवाब संपादित किया। Dpm ($ संस्था) का उपयोग करके आप देख सकते हैं कि आपके दिनांक फ़ील्ड की संरचना क्या है। dpm डेवेल मॉड्यूल के साथ आता है।
कारी कौशलिन

कृपया [und]सिंटैक्स की अनुशंसा न करें । इसके बजाय field_get_items का उपयोग करें।
लेटेरियन

1

मुझे लगता है कि आप इसे व्यू नेचुरल सॉर्ट के साथ कर सकते हैं । इसके पास फ़ील्ड को सॉर्ट करने का विकल्प है - विशिष्ट फ़ील्ड के लिए सॉर्टिंग सक्षम करें । यदि आप इस ट्यूटोरियल का अनुसरण करते हैं तो आपको एक विचार मिलेगा !!


drupal.org/project/partial_date के पास विचारों के साथ एकीकरण करने का विकल्प है
Bala

0

इसे बनाने का एकमात्र तरीका यह है कि यदि आप पृष्ठांकन का उपयोग नहीं करते हैं, तो आप एक कस्टम क्वेरी ओवरराइड में PHP सॉर्टिंग का उपयोग कर सकते हैं जो डेटाबेस पर भरोसा नहीं करता है।

स्टीवेक्टर के अनुसार ,

पेजिनेशन वह है जो हमें गणना किए गए क्षेत्रों द्वारा छँटाई करने से रोकता है क्योंकि आम तौर पर हमें "डेटाबेस प्राप्त करने की आवश्यकता होती है! मुझे नीड कॉलम द्वारा छांटने पर परिणाम 21-30 प्राप्त होते हैं"।

तो अगर आप db को पता नहीं है कि (कैसे एक परिकलित क्षेत्र के मामले में) को परिभाषित नहीं किया जाता है, तो आप db से परिणाम प्राप्त नहीं कर सकते।

तो सबसे व्यावहारिक और विश्वसनीय समाधान है कि कारी Kääriäinen द्वारा उल्लिखित गणना क्षेत्र का उपयोग करना।


ऐसा लगता है कि संस्करण संख्या निर्दिष्ट करने और कॉपी पेस्ट त्रुटि निर्धारित करने के बाद किसी ने मुझे नीचा दिखाया। क्या इस जवाब में कुछ गड़बड़ है?
beth

मैंने मॉड्यूल दृष्टिकोण के लिए पहले upvott किया था, लेकिन बाद में डाउनवोट कर दिया गया क्योंकि यह, किसी भी अन्य की तरह, मेरा भी शामिल है, एक उपयोगी जवाब नहीं है क्योंकि प्रश्न अभी भी अस्पष्ट है, कम से कम मेरे लिए।
कारी कौशलिन

प्रश्न मुझे स्पष्ट लगता है। मैं अपने उत्तर में कुछ स्पष्टीकरण दूंगा।
beth

कोई बात नहीं, मुझे एहसास हुआ कि दृश्य बिल्कुल वैसा व्यवहार नहीं करता है जैसा मैं करता हूं।
beth

0

यह ऐसा करने के लिए थोड़ा आसान तरीका है, लेकिन यह काम करता है और आपको किसी अतिरिक्त मॉड्यूल की आवश्यकता नहीं है।

उस फ़ील्ड के लिए एक लेबल बनाएं जिसे आप सॉर्ट करना चाहते हैं और इसे प्रदर्शन से बाहर न करें। इसके बजाय, एक रिक्त HTML <!---->टिप्पणी को फिर से लिखना मान के रूप में जोड़कर "रिक्त" के रूप में प्रदर्शन को फिर से लिखना। फिर इस कॉलम के बच्चे के रूप में अपने अन्य php / rewritten फ़ील्ड जोड़ें।

यह सॉर्ट करने के लिए सही कॉलम के लिए टेबल हेडर प्रदर्शित करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.