यदि आप मेरे वर्तमान में एक विशिष्ट पृष्ठ पर हैं तो मैं D6 में एक बॉडी क्लास जोड़ना चाहूंगा template.php
:
if url('the/path') {
add the body class...
}
लेकिन वह कार्य मेरे लिए काम नहीं करता है।
यदि आप मेरे वर्तमान में एक विशिष्ट पृष्ठ पर हैं तो मैं D6 में एक बॉडी क्लास जोड़ना चाहूंगा template.php
:
if url('the/path') {
add the body class...
}
लेकिन वह कार्य मेरे लिए काम नहीं करता है।
जवाबों:
आपको निम्न कोड का उपयोग करना चाहिए, url()
क्योंकि तर्क के रूप में पारित पथ के लिए URL लौटाता है; इसलिए, यह मान देता है कि IF-statement समतुल्य होगा TRUE
(सिवाय इसके कि स्ट्रिंग स्ट्रिंग है "0"
या रिक्त स्ट्रिंग है)।
if ($_GET['q'] == 'the/internal/Drupal/path') {
// Do stuff
}
द्रुपाल के उपनाम की तलाश है
<?php
$path = drupal_get_path_alias($_GET['q']);
if ($path == 'the/path') {
// do stuff
}
?>
नीचे अन्य:
पूर्ण URL
<?php
global $base_root;
$base_root . request_uri()
?>
Drupal का "आंतरिक" URL
<?php
$arg = arg();
// Path of 'node/234' -> $arg[0] == 'node' && $arg[1] == 234
?>
द्रुपाल al
// Retrieve an array which contains the path pieces.
$path_args = arg();
// Check if the current page is admin.
if (arg(0) == 'admin') {
// This is wrong even in D7. path_is_admin() should be used instead.
}
// Conditionally add css or js in certain page.
function mymodule_page_build(&$page) {
if (arg(0) == 'sth' && arg(1) == 'else') {
drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/my.css');
}
}
// Load the current node.
if (arg(0) == 'node' && is_numeric(arg(1))) {
// This is wrong even in D7. menu_get_object() should be used instead.
}
Drupal 8 (प्रक्रियात्मक)
// Retrieve an array which contains the path pieces.
$path_args = explode('/', current_path());
// Check if the current page is admin.
if (\Drupal::service('router.admin_context')->isAdminRoute(\Drupal::routeMatch()->getRouteObject())) {
}
// Conditionally add css or js in certain page.
function mymodule_page_build(&$page) {
if (\Drupal::routeMatch()->getRouteName() == 'my.route') {
$page['#attached']['css'][] = drupal_get_path('module', 'mymodule') . '/css/my.css';
}
}
// Load the current node.
$node = \Drupal::routeMatch()->getParameter('node');
if ($node) {
}
Drupal 8 (OOP)
use Symfony\Component\HttpFoundation\Request;
use Drupal\Core\Routing\AdminContext;
use Drupal\Core\Routing\RouteMatchInterface;
class myClass {
public function __construct(Request $request, AdminContext $admin_context, RouteMatchInterface $route_match) {
$this->request = $request;
$this->adminContext = $admin_context;
$this->routeMatch = $route_match;
}
public function test() {
// This might change in https://drupal.org/node/2239009
$current_path = $this->request->attributes->get('_system_path');
// Retrieve an array which contains the path pieces.
$path_args = explode('/', $current_path);
// Check if the current page is admin.
if ($this->adminContext->isAdminRoute($this->routeMatch->getRouteObject())) {
}
// Load the current node.
$node = $this->routeMatch->getParameter('node');
if ($node) {
}
}
}
स्रोत: arg () पदावनत है और Drupal.org पर हटा दिया जाएगा
क्या आपने request_uri () आज़माया है?
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/request_uri/6
आप arg () फ़ंक्शन का उपयोग करना चाहते हैं। आप इसका दो तरह से उपयोग कर सकते हैं,
$args = arg();
जो मूल रूप से आपको प्रत्येक url तर्क के साथ एक और मान देता है, या आप विशिष्ट तर्क की जाँच कर सकते हैं जैसे:
$arg = arg(0);
अपने उदाहरण के लिए, आप कर सकते हैं:
if(!is_null(arg(1)) && arg(0) == 'the' && arg(1) == 'path') { Do something }
या मैं यह सुझाऊंगा:
$args = arg();
if(!empty($args[1]) && $args[0] == 'the' && $args[1] == 'path') { Do something }
$arg = implode('/',arg());
यदि आप किसी विशिष्ट URL वाले पृष्ठों के लिए कोई भिन्न पृष्ठ टेम्पलेट नहीं चाहते हैं, तो आप निम्न कोड का उपयोग करके वर्तमान URL की जांच कर सकते हैं।
if (arg(0) == 'the' && arg(1) == 'path') {
// Add the extra CSS class.
}
url () वह फ़ंक्शन नहीं है जो वर्तमान पृष्ठ का URL लौटाता है; यदि आप url()
कोई पैरामीटर प्रदान किए बिना कॉल करते हैं, तो आपको hook_ulr_outbound_alter()
ड्रुपल इंस्टॉलेशन का आधार URL (कम से कम Drupal 7 पर, और किसी भी मॉड्यूल को लागू किए बिना ) मिलेगा ।
कॉलिंग url('the/path')
बस आपको वापस कर देगी "the/path"
, अगर कोई मॉड्यूल फ़ंक्शन से लौटाए गए मान को बदल नहीं रहा है; इसका मतलब है कि आपके द्वारा दिखाए गए कोड को हमेशा निष्पादित किया जाएगा, और सीएसएस वर्ग हमेशा जोड़ा जाता है।
यदि आप उस विवादास्पद मार्ग की तलाश कर रहे हैं, जिसके लिए Drupal ने अनुरोध किया है, तो आप $ _GET ['q'] को हिट कर सकते हैं, जो कि Drupal के स्वच्छ URL का उपयोग करने पर भी अनुवाद करना चाहिए।
ड्रुपल 8:
arg () वैकल्पिक क्योंकि यह अब काम नहीं करता है:
$path_args = explode('/', current_path());
print $path_args[1];
और पढ़ें: https://www.drupal.org/node/2274705