माइग्रेट मॉड्यूल के साथ बनाए गए नोड्स के लिए पैथातो को अक्षम करें


14

मैं माइग्रेट का उपयोग नोड्स का एक गुच्छा आयात करने के लिए कर रहा हूं और मैं माइग्रेशन के दौरान पथ उपनाम सेट करना चाहता हूं। मैं ठीक इसी तरह से पथ उर्फ ​​आयात करने में सक्षम हूं:

$this->addFieldMapping('path', 'url_alias');

जब मैं आयातित नोड्स को देखता हूं तो मुझे pathफ़ील्ड में सही रास्ता दिखाई देता है , लेकिन Generate automatic URL aliasचेकबॉक्स को अभी भी चेक किया गया है जिसका मतलब है कि सेटिंग को अनदेखा किया जा रहा है।

मैं माइग्रेशन के दौरान नोड पर उस सेटिंग को कैसे अक्षम कर सकता हूं?

जवाबों:


10

आपको मूल रूप से यह सुनिश्चित करने की आवश्यकता होती है कि $nodeऑब्जेक्ट pathautoसहेजे जाने पर सेट के साथ गलत में पारित हो जाए।

आपके प्रवासन वर्ग में:

function prepare(&$row) {
  $row->path['pathauto'] = 0;
}

मैंने कोशिश की है, लेकिन Generate automatic URL aliasअभी भी जाँच की है।
केनी वायलैंड

लेकिन मैंने तैयारी () के बजाय तैयारी () विधि में आपके सुझाव की कोशिश की और यह काम कर गया! यदि आप अपनी पोस्ट को संपादित करते हैं तो मैं इसे उत्तर के रूप में स्वीकार करूंगा। धन्यवाद!
केनी वायलैंड

संपादित - गलत तरीके से पहली बार मिला :)
jhedstrom

8
$this->addFieldMapping('pathauto')->defaultValue(0);

मेरे लिये कार्य करता है। पथौतो: प्रदर्शन के दौरान उर्फ ​​पीढ़ी को रोकने के लिए अलियासिंग (0 से 0 पर सेट करें) अपने विवरण के लिए 'ड्रश मा' + नाम देखें


0

यदि आप कभी-कभी आते हैं, लेकिन आपके पास हमेशा आने वाला मार्ग उपनाम नहीं होता है, तो यहां बताया गया है कि आप केवल जब आपने कोई अन्य सेट नहीं किया है, तो आप pathauto को कैसे ट्रिगर कर सकते हैं।

सबसे पहले, कंस्ट्रक्टर में, नक्शा pathऔर pathauto:

$this->addFieldMapping('path', 'path');
$this->addFieldMapping('pathauto', 'pathauto');

फिर, आने वाले मूल्य के आधार पर संपत्ति ::prepareRow()सेट करें :pathautopath

public function prepareRow($row) {
  parent::prepareRow($row);

  if (!empty($row->path)) {
    $row->pathauto = 0;
  }
  else {
    $row->pathauto = 1;
  }

}

इसका नतीजा यह है कि यदि आप स्पष्ट रूप से एक ऐसे मार्ग से गुजरते हैं, जिसका उपयोग उपनाम के लिए किया जाएगा, जबकि यदि आपने पथौतो को लात नहीं मारी है।

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