दृश्यों में नोड रेफ़रेंस संदर्भ फ़िल्टर में नोड आईडी के बजाय नोड शीर्षक या पथ उपनाम का उपयोग कैसे करें?


7

मेरे पास नोड बी के नोड संदर्भ के साथ नोड ए है।

एक दृश्य में मैं सभी नोड्स दिखाता हूं जिनमें विशेष नोड बी संदर्भित है (एनआईडी: 123, शीर्षक: नोड-बी-शीर्षक)।

संदर्भ फ़िल्टर में nid का उपयोग करने के बजाय मैं नोड शीर्षक का उपयोग करना चाहूंगा। उदाहरण के लिए, इसके बजाय:

view-name/123

मैं उपयोग करना चाहूंगा

view-name/node-B-title

ऐसा कैसे किया जा सकता था?

जवाबों:


10

मुझे एक समान समस्या थी और मैंने न केवल इसका समाधान खोजा, बल्कि यह भी देखा कि कैसे काम करता है। मैंने जो सीखा उसे साझा किया और आपकी समस्या का समाधान भी।

जब आप एक या अधिक प्रासंगिक फ़िल्टर के साथ एक दृश्य बना रहे हैं, तो दृश्य को कहीं से उन फ़िल्टर के मान प्राप्त करने होंगे। इसके द्वारा किया जा सकता है -

  1. URL से संदर्भ फ़िल्टर मूल्य (ओं) को चुनना
    • आमतौर पर आपके पास ऐसे उद्देश्यों के लिए एक पृष्ठ दृश्य होगा , जिसमें फ़ॉर्म का URL हो foo/%/barया foo/bar/%एकल संदर्भ फ़िल्टर या फ़ॉर्म का foo/%/bar/%या foo/bar/%/%फ़िल्टर के लिए
    • यदि आपके पास एक से अधिक फ़िल्टर हैं, तो url मान जो पहले दिखाई देता है वह पहले फ़िल्टर के लिए मैप किया जाता है, दूसरे फ़िल्टर के आगे और इसी तरह।
  2. दृश्य आपको यह बताने की अनुमति देते हैं कि यदि URL में फ़िल्टर मान उपलब्ध नहीं हैं तो क्या करें । यह आमतौर पर ब्लॉक व्यू के लिए उपयोग किया जाता है ।
    • आप विभिन्न कार्यों में से चुन सकते हैं और फिर पसंद को भी कॉन्फ़िगर कर सकते हैं। आप विभिन्न कार्यों में से चुन सकते हैं और फिर पसंद को भी कॉन्फ़िगर कर सकते हैं। asdfj kajsdf
  3. एक अन्य बात यह है कि आप यह बता सकते हैं कि फ़िल्टर मानों के साथ क्या करना है यदि वे URL में पाए जाते हैं जैसा कि # 1 में वर्णित है। विशिष्ट उपयोग के मामले हैं - फिल्टर मान, मान्य फ़िल्टर मान आदि के आधार पर गतिशील शीर्षक बनाना।
    • फ़िल्टर मानों को मान्य करते समय, आप मान भी बदल सकते हैं! (यही वह जगह है जहाँ हमारा समाधान btw निहित है)। यह उस तरह से बहुत महत्वपूर्ण है जिस तरह से हम ड्रुपल फॉर्म वैलिडेशन कॉलबैक में $ फॉर्म मूल्यों को बदल सकते हैं। यहां छवि विवरण दर्ज करें

आपकी विशिष्ट समस्या का समाधान उपरोक्त छवि में तीरों द्वारा इंगित अनुभागों में एक समान कोड का उपयोग करने में निहित है।

यह कड़ी मेरे लिए बहुत मददगार साबित हुई। यहाँ इसका एक अंश दिया गया है:

$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
  $handler->argument = $np[1];
  return TRUE;
} else {
  return FALSE;
}

यह मेरे लिए काम नहीं करता था, बल्कि बचत पर दृश्य में अजाक्स त्रुटि का कारण बनता था।
DrCord

1

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

एनआईडी और फिर सेटिंग पर एक प्रासंगिक फिल्टर का उपयोग करें Provide default value > Content ID from URL। फिर अपने पृष्ठ या पृष्ठों के सेट पर विचार ब्लॉक जोड़ें।

यदि आपका संदर्भ आपको नोड पर ही एक व्यू ब्लॉक का उपयोग करने की अनुमति देता है, न कि एक पेज को देखने का तो इससे आपको अपनी इच्छानुसार रास्ता प्राप्त करने में आसानी होगी और आपके द्वारा प्रदर्शित किए जाने वाले विचार प्रदर्शित होंगे।


1

मैंने स्वीकार किए गए उत्तर को संपादित किया, लेकिन यहां वास्तविक कोड जोड़ना चाहता था:

प्रासंगिक फ़िल्टर में सत्यापन विकल्पों के तहत PHP मान्य विकल्प का उपयोग करें।

$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
  $handler->argument = $np[1];
  return TRUE;
} else {
  return FALSE;
}

1

दृश्य तर्क में सामग्री प्रकार का फ़ील्ड संदर्भ होना चाहिए, फिर विकल्प "डिफ़ॉल्ट तर्क प्रदान करें" और विकल्प आईडी नोड (कुछ इस तरह से) की जांच करें।

1) तर्क जोड़ें "X फ़ील्ड संदर्भ" 2) url से आईडी नोड की जाँच करें (डिफ़ॉल्ट तर्क में जोड़ें) 3) सत्यापन अनुभाग में, नोड के प्रकार की जाँच करें, और सेट पर "नोड प्रकार" का चयन करें "नोड आईडी"

और किया जाता है। :)


"URL से सामग्री आईडी" केवल nid देता है। अगर मैं एक शब्द संदर्भ का उपयोग करता हूं तो मेरे पास "सत्यापन मानदंड" का उपयोग "आईडी नाम में परिवर्तित शब्द" के साथ हो सकता है। नोड संदर्भ के लिए शीर्षक का अनुवाद करने के लिए कोई समान विकल्प नहीं है। शायद इसलिए क्योंकि शीर्षक जरूरी नहीं कि अद्वितीय हों।
उवे

हाँ सही है, लेकिन यह आवश्यक है कि तर्क फ़ील्ड संदर्भ (nid) होना चाहिए, यह प्रयास करें।
एलेओ

1) जोड़े तर्क "एक्स क्षेत्र संदर्भ" 2) URL से ID नोड (ऐड डिफ़ॉल्ट तर्क में चेक) 3) सत्यापन अनुभाग में, नोड के सामग्री प्रकार की जाँच करें, और setion पर "नोड प्रकार" का चयन करें "नोड Id"
Eleo

वास्तविक url में nid हो सकता है, और पथ उपनाम अन्य नोड शीर्षक हो सकता है। यह काम नहीं करता है?
एसजीहोश

0

पुराना सवाल है, लेकिन यह Google के माध्यम से मिला और मुझे लगा कि मैं भविष्य में इसे खोजने वाले किसी अन्य व्यक्ति के लिए अपना समाधान साझा करूंगा:

अब एक मॉड्यूल है जिसका नाम सेफवर्ड है जो मूल रूप से वही करता है जो सुमीत पारीक ने सुझाया था: (स्वचालित रूप से) एक URL अनुकूल क्षेत्र बनाता है।


0

मैं विस्तारित पथ उपनाम (path_alias_xt) मॉड्यूल की सिफारिश करूंगा । यह इस समस्या को विशुद्ध रूप से बिना किसी कॉन्फ़िगरेशन के साथ स्थापित करके ठीक करता है, यह मूल रूप से जादू है, जाहिरा तौर पर। : D वास्तव में नहीं है, लेकिन मॉड्यूल पृष्ठ का अंश यह बताता है कि आप इसे कैसे स्थापित करते हैं और यह इस और अन्य समस्याओं को ठीक करता है, लेकिन मॉड्यूल पर्दे के पीछे ऐसा कैसे करता है ... O, ठीक है, हम हमेशा कर सकते हैं कोड पढ़ें: D इसमें विशेष रूप से दृश्य पथों को ठीक करने का उल्लेख नहीं है, लेकिन मैंने ऐसा करने के लिए इसका उपयोग किया है और यह पूरी तरह से काम करता है।

मॉड्यूल पृष्ठ से इसे हल करने वाली समस्याओं की सूची:

  • क्या आपने कभी सोचा है कि क्यों, नोड / 123 के बारे में हमारे जैसे एक उपनाम को परिभाषित करने के बाद, आपके पृष्ठ अभी भी उन बदसूरत मशीन-जनित टैब और लिंक जैसे / नोड / 123 / संपादित, नोड / 123 / रिवाइज आदि के साथ लिंक किए गए हैं। ।?
  • इसी तरह / टैक्सोनॉमी / टर्म /% और / यूजर /% लिंक के लिए: क्या आपने / dries / track को देखने की अपेक्षा की थी लेकिन मिला / user / 5 / track?
  • क्या आप पाते हैं कि आपका ब्राउज़र पता बार आपके उपनामों के बजाय उन बदसूरत संख्याओं को भी दिखाता है?
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.