Anda harus menggunakan kode berikut, saat url()mengembalikan URL untuk jalur yang dilewati sebagai argumen; oleh karena itu, ia mengembalikan nilai yang pernyataan IF akan anggap setara TRUE(kecuali dalam kasus string adalah "0"string kosong).
if($_GET['q']=='the/internal/Drupal/path'){// Do stuff}
// 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 (prosedural)
// 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)
useSymfony\Component\HttpFoundation\Request;useDrupal\Core\Routing\AdminContext;useDrupal\Core\Routing\RouteMatchInterface;class myClass {publicfunction __construct(Request $request,AdminContext $admin_context,RouteMatchInterface $route_match){
$this->request = $request;
$this->adminContext = $admin_context;
$this->routeMatch = $route_match;}publicfunction 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){}}}
Anda juga dapat menggunakan$arg = implode('/',arg());
tim.plunkett
1
Jika Anda tidak ingin memiliki templat halaman yang berbeda untuk halaman dengan URL tertentu, Anda dapat memeriksa URL saat ini menggunakan kode berikut.
if(arg(0)=='the'&& arg(1)=='path'){// Add the extra CSS class.}
url () bukan fungsi yang mengembalikan URL halaman saat ini; jika Anda menelepon url()tanpa memberikan parameter apa pun, Anda akan mendapatkan (setidaknya pada Drupal 7, dan tanpa modul yang menerapkan hook_ulr_outbound_alter()) URL dasar instalasi Drupal.
Memanggil url('the/path')hanya akan mengembalikan Anda "the/path", jika tidak ada modul yang mengubah nilai yang dikembalikan dari fungsi; itu berarti bahwa kode yang Anda tunjukkan akan selalu dieksekusi, dan kelas CSS selalu ditambahkan.
Jika Anda mencari jalur kanonik yang dilayani Drupal untuk permintaan, Anda dapat menekan $ _GET ['q'], yang akan menerjemahkan bahkan jika Drupal menggunakan URL bersih.
Jawaban:
Anda harus menggunakan kode berikut, saat
url()
mengembalikan URL untuk jalur yang dilewati sebagai argumen; oleh karena itu, ia mengembalikan nilai yang pernyataan IF akan anggap setaraTRUE
(kecuali dalam kasus string adalah"0"
string kosong).sumber
Drupal's Alias adalah yang Anda cari
Lainnya Di Bawah Ini:
URL lengkap
URL "Internal" Drupal
sumber
Drupal 7
Drupal 8 (prosedural)
Drupal 8 (OOP)
Sumber: arg () sudah usang dan akan dihapus di Drupal.org
sumber
Sudahkah Anda mencoba request_uri ()?
http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/request_uri/6
sumber
Anda akan ingin menggunakan fungsi arg (). Anda dapat menggunakannya salah satu dari dua cara,
Yang pada dasarnya akan memberi Anda sebuah array dengan setiap argumen url menjadi nilai lain, atau Anda dapat memeriksa argumen tertentu seperti:
Jadi sebagai contoh, Anda dapat melakukan:
atau saya akan merekomendasikan ini:
sumber
$arg = implode('/',arg());
Jika Anda tidak ingin memiliki templat halaman yang berbeda untuk halaman dengan URL tertentu, Anda dapat memeriksa URL saat ini menggunakan kode berikut.
url () bukan fungsi yang mengembalikan URL halaman saat ini; jika Anda menelepon
url()
tanpa memberikan parameter apa pun, Anda akan mendapatkan (setidaknya pada Drupal 7, dan tanpa modul yang menerapkanhook_ulr_outbound_alter()
) URL dasar instalasi Drupal.Memanggil
url('the/path')
hanya akan mengembalikan Anda"the/path"
, jika tidak ada modul yang mengubah nilai yang dikembalikan dari fungsi; itu berarti bahwa kode yang Anda tunjukkan akan selalu dieksekusi, dan kelas CSS selalu ditambahkan.sumber
Jika Anda mencari jalur kanonik yang dilayani Drupal untuk permintaan, Anda dapat menekan $ _GET ['q'], yang akan menerjemahkan bahkan jika Drupal menggunakan URL bersih.
sumber
Drupal 8:
arg () alternatif karena tidak lagi berfungsi:
Baca lebih lanjut: https://www.drupal.org/node/2274705
sumber