जब नोड बनाया जाता है, तो प्रोग्राम अलियास रूप से पथ बनाएं


8

मेरे पास एक कस्टम सामग्री प्रकार है जो एक मॉड्यूल द्वारा बनाया गया है। क्या कोई हुक है जिसका उपयोग मैं अपने कस्टम सामग्री प्रकार के उपनाम को सेट करने के लिए कर सकता हूं जब एक नोड बनाया जाता है?

मेरा एक फ़ील्ड एक अल्फा-न्यूमेरिक कोड है, और मैं इसे पथ में उपयोग करना चाहता हूं। उदा .: 'घटना / myc0d3'

मैंने देखा कि यह फ़ंक्शन ( path_set_alias ) 6 में मौजूद था, लेकिन मुझे 7. के लिए समान नहीं मिल रहा है और मुझे नहीं पता कि मैं इसे कहां कॉल करूंगा।

जवाबों:


10

हुक का उपयोग करने के बजाय, पथौतो मॉड्यूल का उपयोग किया जाना चाहिए जहां आप विशिष्ट पैटर्न को परिभाषित कर सकते हैं कि सामग्री प्रकार (प्रति /admin/config/search/path/patterns) पर एलियास कैसे उत्पन्न होता है । वहाँ आप प्रतिस्थापन पैटर्न का उपयोग कर सकते हैं या अपने स्वयं के कोड बना सकते हैं। यह बहुत क्लीनर दृष्टिकोण है।

अन्यथा आप hook_node_presave($node)सीधे उपनाम बदलने की कोशिश कर सकते हैं:

$node->path['pathauto'] = 0; // Required only if Pathauto is enabled.
$node->path['alias'] = "foo/bar";

या path_save(&$path)सीधे नीचे दिए गए फ़ंक्शन का उपयोग करें:

$path = array('source' => "node/$node->nid", 'alias' => 'foo/bar');
path_save($path);

मेरे लिए केवल संयोजन में दोनों ने काम किया, ताकि अंत में अन्य उपनाम टेक्स्टफील्ड के अंदर सही उपनाम लिखा जाए। केवल path_save () काम कर रहा था, लेकिन फिर मुझे नोड एडिट पर उपनाम पाठ क्षेत्र में गलत उपनाम मिला, इसलिए एक सरल पुनर्विक्रय ने मुझे फिर से गलत उपनाम दिया होगा।
16

9

फ़ंक्शन को अब एक उदाहरण के लिए path_save () , path_taxonomy_term_insert () देखें ।


4
आपको वास्तव में इस उत्तर का विस्तार केवल ऑफसाइट संसाधनों से लिंक करने के लिए नहीं करना चाहिए, हालांकि लिंक, जब तक वे वैध रहते हैं, उपयोगी थे।
22 नवंबर को DrCord

9

हुक_नोड_इन्टर () मेरे मामले में काम नहीं कर रहा था, और कुछ खोजों के साथ मैं इस ब्लॉग पोस्ट के साथ आया । मैंने उसी तरह से presto में hook_insert () लागू किया ।

/**
 * Implements hook_insert().
 */
function mymodule_insert($node) {
    // Set the URL alias
    if (empty($node->path['alias'])) {
        $node->path['alias'] = 'slug/' . $node->nid;
    }
}

2
यह देखने के लिए कि hook_insert()इसका उपयोग केवल तब किया जाता है जब इसे लागू करने वाला मॉड्यूल किसी सामग्री प्रकार को परिभाषित कर रहा हो; हुक का उपयोग किसी अन्य मॉड्यूल से परिभाषित सामग्री प्रकार के लिए नोड पर कार्य करने के लिए नहीं किया जा सकता है।
kiamlaluno

यह वास्तव में यही कारण है कि इसे केवल लेखों तक लिंक करने की अनुशंसा नहीं की जाती है, बल्कि इसके बजाय उत्तर पर विस्तार करने और उन लेखों से मुख्य उपयोगी जानकारी निकालने के लिए - यह कि 'ब्लॉग पोस्ट' लिंक अब मान्य नहीं है और 404 में परिणाम
Titi

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