it-swarm-ko.tech

현재 URL을 감지하는 방법?

현재 template.php에있는 특정 페이지에있는 경우 D6에 바디 클래스를 추가하고 싶습니다.

if url('the/path') {
 add the body class...
}

그러나 그 기능은 나를 위해 작동하지 않는 것 같습니다.

10
hollywood3224

url()은 인수로 전달 된 경로의 URL을 반환하므로 다음 코드를 사용해야합니다. 따라서 IF 문이 TRUE와 동등한 것으로 간주하는 값을 리턴합니다 (문자열이 "0" 또는 빈 문자열).

if ($_GET['q'] == 'the/internal/Drupal/path') {
  // Do stuff
}
6
Dave Reid

Drupal 's Alias는 당신이 찾고있는 것입니다.

<?php
$path = drupal_get_path_alias($_GET['q']);
if ($path == 'the/path') {
  // do stuff
}
?>

기타 아래 :

전체 URL

<?php
global $base_root;
$base_root . request_uri()
?>

드루팔의 "내부"URL

<?php
$arg = arg();
// Path of 'node/234' -> $arg[0] == 'node' && $arg[1] == 234
?>
12
mikeytown2

황갈색 7

// 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.
}

폐기 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) {
}

중독 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

4
kenorb
2
Kevin

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  }
2
Mike L.

특정 URL이있는 페이지에 대해 다른 페이지 템플리트를 원하지 않는 경우 다음 코드를 사용하여 현재 URL을 확인할 수 있습니다.

if (arg(0) == 'the' && arg(1) == 'path') {
  // Add the extra CSS class.
}

rl () 는 현재 페이지의 URL을 반환하는 함수가 아닙니다. 매개 변수를 제공하지 않고 url()을 호출하면 (적어도 Drupal 7, 7, hook_ulr_outbound_alter()_을 구현하는 모듈없이) 기본 URL을 얻게됩니다 Drupal 설치).
함수 url('the/path')을 호출하면 함수에서 반환 된 값을 변경하는 모듈이 없으면 "the/path" 만 반환됩니다. 즉, 표시 한 코드가 항상 실행되고 CSS 클래스가 항상 추가됩니다.

1
kiamlaluno

폐기물 8 :

더 이상 작동하지 않으므로 arg () 대안 :

$path_args = explode('/', current_path());
print $path_args[1];

더 읽기 : https://www.drupal.org/node/2274705

0
Pouya Sanooei

Drupal이 요청한 정식 경로를 찾고 있다면 $ _GET [ 'q']를 눌러 Drupal이 깨끗한 URL을 사용하더라도 번역해야합니다.

0
user556