तो आप लिंक URL को संशोधित करने का एक तरीका खोज रहे हैं जैसा कि लिखा जा रहा है? मैंने हाल ही में इस पर गौर किया और आश्चर्यचकित था कि शिकार की कितनी आवश्यकता थी।
मैं साथ गया hook_url_outbound_alter( &$path, &$options, $original_path )
, जो आपको Drupal URL सिस्टम द्वारा लिखे जा रहे लिंक URL को बदलने की अनुमति देता है।
वहाँ भी है hook_url_inbound_alter( &$path, $original_path, $path_language )
, जो बेहतर हो सकता है क्योंकि इसमें पथ का विशिष्ट लैंग गेज शामिल है - यह इस बात पर निर्भर करता है कि आप कहां परिवर्तन करना चाहते हैं। मुझे व्यक्तिगत रूप hook_url_outbound_alter()
से काम करने के लिए विश्वसनीय और सरल लगता है - यह सभी उपयुक्त URL को बदल देता है जैसा कि वे लिखे गए हैं, और $ विकल्पों का उपयोग करके आप मज़बूती से क्वेरी स्ट्रिंग्स (...? क्वेरी = स्ट्रिंग और फू = बार) और हैश फ़्रैक्शन (...) जोड़ सकते हैं #someId)।
$ पथ को संशोधित करें और वह वास्तविक पथ को अपडेट करेगा जो URL href में लिखा गया है। बेशक, यह सभी लिंक पर चलता है, इसलिए आप यह जाँच कर शुरू करना चाहेंगे कि यह एक लिंक है जिसे आप संशोधित करना चाहते हैं।
इसे एलियास करने से पहले निष्पादित किया जाता है, इसलिए यह ड्रुपल चूक के आधार पर होगा। दो बहुत ही सरल उदाहरण देने के लिए, यदि आप केवल टैक्सोनॉमी पथ को संशोधित करना चाहते हैं:
function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
if(strpos($original_path, 'taxonomy/term') === 0) {
// do stuff
}
}
और / या यदि आप केवल इसे विशेष पृष्ठों पर चलाना चाहते हैं, उदाहरण के लिए पृष्ठ संपादित करें:
function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
$current_path = explode("/", current_path() );
if (count($current_path) >= 3 && $current_path[0] == "node" && $current_path[2] == "edit") {
// do stuff
}
}