কীভাবে বর্তমান ইউআরএল সনাক্ত করবেন?


10

আমি ডি 6-তে একটি বডি ক্লাস যুক্ত করতে চাই যদি আপনি আমার বর্তমানে আমার একটি নির্দিষ্ট পৃষ্ঠায় আছেন তবে template.php:

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

তবে সেই ফাংশনটি আমার পক্ষে কাজ করছে বলে মনে হয় না।


উত্তর:


6

আপনার নিম্নলিখিত কোডটি ব্যবহার করা উচিত, url()যুক্তি হিসাবে পাসের জন্য URL টি ফেরত দেওয়ার জন্য; অতএব, এটি এমন একটি মান প্রদান করে যা আইএফ-বিবৃতি সমতুল্য বিবেচনা করবে TRUE(স্ট্রিংটি "0"খালি স্ট্রিংয়ের ক্ষেত্রে বাদে )।

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

উত্স / গন্তব্য পথের উপাত্তগুলি পরীক্ষা করার জন্য আপনার drupal_get_path_alias ($ _ GET ['q']) প্রয়োজন হতে পারে।
cam8001

12

দ্রুপালের আলিয়াস যা আপনার সন্ধান করছে

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

নীচে অন্য:

সম্পূর্ণ ইউআরএল

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

দ্রুপালের "অভ্যন্তরীণ" ইউআরএল

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

ARG (); আমার জন্য এক। চিয়ার্স;)
দাইথ

4

দ্রুপাল 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 (ওওপি)

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 এ



2

আপনি আরগ () ফাংশনটি ব্যবহার করতে চাইবেন। আপনি এটি দুটি উপায়ে একটি ব্যবহার করতে পারেন,

$args = arg();

যা প্রতিটি ইউআরএল আর্গুমেন্টকে অন্য মান হিসাবে মূলত আপনাকে একটি অ্যারে দেবে, বা আপনি নির্দিষ্ট আর্গুমেন্টগুলি চেক করতে পারেন:

$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());
টিম.প্লুনকেট

1

আপনি যদি কোনও নির্দিষ্ট URL সহ পৃষ্ঠাগুলির জন্য আলাদা পৃষ্ঠার টেম্পলেট না রাখতে চান তবে নীচের কোডটি ব্যবহার করে আপনি বর্তমান URL টি পরীক্ষা করতে পারেন।

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

url () এমন ফাংশন নয় যা বর্তমান পৃষ্ঠার URL টি প্রদান করে; আপনি যদি url()কোনও প্যারামিটার সরবরাহ না করে কল করেন তবে আপনি hook_ulr_outbound_alter()ড্রুপাল ইনস্টলেশনটির বেস ইউআরএল পাবেন (কমপক্ষে দ্রুপাল 7 তে এবং কোনও মডিউল প্রয়োগকারী না করে )।
কল url('the/path')করা কেবল আপনাকে ফিরিয়ে দেবে "the/path", যদি কোনও মডিউল ফাংশন থেকে ফেরত মান পরিবর্তন করে না; এর অর্থ হ'ল আপনি যে কোডটি দেখিয়েছেন তা সর্বদা কার্যকর করা হবে এবং সিএসএস বর্গ সর্বদা যুক্ত করা হবে।


0

আপনি যদি সেই নীতিগত পথটি সন্ধান করছেন যা দ্রুপালের জন্য একটি অনুরোধ রচনা করছে, আপনি $ _GET ['q'] টিপে আঘাত করতে পারেন, যা দ্রুপালের ক্লিন ইউআরএল ব্যবহার করা হলেও অনুবাদ করা উচিত।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.