একটি মেনু আইটেম টাইপ পরিবর্তন করতে hook_menu_alter () সমতুল্য কি?


10

আমি ড্রুপাল ৮-এ মেনু প্রকারটি পরিবর্তন করতে চাই D

function module_menu_alter(&$items) {
  $items['admin/config/people/ip-blocking/default'] = array(
    'title' => 'Block IP Address',
    'type' => MENU_DEFAULT_LOCAL_TASK,
  );
}

একইভাবে আমি ড্রুপাল ৮-এ মেনু টাইপটি পরিবর্তন করতে চাই I আমি এটি কীভাবে করতে পারি। ধন্যবাদ.


3
এটি পড়ুন drupal.org/node/2118147
আদি

বারদিরের উল্লেখ অনুসারে, আর কোনও মেনু টাইপ নেই। আপনি যেটি সংরক্ষণাগার দেওয়ার চেষ্টা করছেন তা আপনি নির্দিষ্ট করতে পারেন?
লিনাস

উত্তর:


7

লিনাসের উত্তর দুর্দান্ত হলেও এটি আপনার নির্দিষ্ট প্রশ্নের প্রতিক্রিয়া দেয় না:

একইভাবে আমি ড্রুপাল 8-এ মেনু প্রকারটি পরিবর্তন করতে চাই

ড্রুপাল ৮-এ মেনু টাইপের মতো কোনও জিনিস নেই a টাইপ হিসাবে ব্যবহৃত প্রতিটি জিনিসই এখন সম্পূর্ণ আলাদা জিনিস। রুট, মেনু লিঙ্ক, স্থানীয় কাজ, স্থানীয় ক্রিয়া। এবং প্রায়শই, আপনার একাধিক জিনিস থাকে। আপনার সর্বদা একটি রুট থাকে (x.x এই ধরণের কলব্যাক কল করতে ব্যবহৃত)। এবং অতিরিক্ত, আপনি সেই রুটের জন্য মেনু লিঙ্ক, স্থানীয় কাজ বা ক্রিয়া যুক্ত করুন।

সুতরাং, উদাহরণস্বরূপ আপনি কোনও স্থানীয় টাস্কে মেনু লিঙ্ক রূপান্তর করতে পারবেন না, এমনকি কোনও স্থানীয় টাস্কে যাওয়ার রুটও। কেবলমাত্র আপনি যা করতে পারেন তা হ'ল মেনু লিঙ্কটি দূরে সরিয়ে ফেলুন (যার উপরে উল্লিখিত রুট পরিবর্তনের সাথে কোনও সম্পর্ক নেই) এবং পরিবর্তে একটি নতুন স্থানীয় টাস্ক তৈরি করুন।

লিঙ্কগুলির জন্য লিনাসের উত্তর এবং সেই জিনিসগুলির প্রতিটি কীভাবে করবেন সে সম্পর্কে আরও তথ্যের দেখুন।


আপনি ঠিক বলেছেন, আমি তা উল্লেখ করতে ভুলে গেছি। সংযোজনের জন্য ধন্যবাদ।
লিনাস

19

দ্রুপাল 8 এ একটি নতুন মেনু সিস্টেম রয়েছে, নেই hook_menuএবং hook_menu_alterনেই।

আপনি যদি কোনও বিদ্যমান রুট পরিবর্তন করতে চান তবে দ্রুপাল 7 এর তুলনায় এটি কিছুটা জটিল।

আপনার মডিউলে আপনাকে এমন একটি বর্গ ফাইল তৈরি করতে হবে YOURMODULE/src/Routing/CLASSNAME.phpযা প্রসারিত RouteSubscriberBase:

/**
 * @file
 * Contains \Drupal\YOURMODULE\Routing\RouteSubscriber.
 */

namespace Drupal\YOURMODULE\Routing;

use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;

/**
 * Listens to the dynamic route events.
 */
class RouteSubscriber extends RouteSubscriberBase {

  /**
   * {@inheritdoc}
   */
  protected function alterRoutes(RouteCollection $collection) {
    // Get the route you want to alter
    $route = $collection->get('system.admin_content');

    // alter the route...
  }
}

আপনি উদাহরণ হিসাবে নোড মডিউলটির রুটসুবসাইবার ক্লাস নিতে পারেন ।

আপনার রুটসসক্রাইবারকে স্বীকৃতি দিতে আপনাকে YOURMODULE.services.ymlআপনার মডিউল ডিরেক্টরিতে একটি ফাইলও তৈরি করতে হবে:

services:
  node.route_subscriber:
    class: Drupal\YOURMODULE\Routing\RouteSubscriber
    tags:
      - { name: event_subscriber }

নতুন মেনু সিস্টেমে আরও ভাল অন্তর্দৃষ্টি পেতে আমি নিম্নলিখিত নিবন্ধগুলিতে সুপারিশ করব:

সম্পাদনা: বার্ডিরের হিসাবে উল্লেখ করা হয়েছে , মেনু সিস্টেমটির এখন আলাদা কাঠামো রয়েছে, যার ডি 7 এর মেনু সিস্টেমের সাথে কোনও সম্পর্ক নেই, সুতরাং মেনু টাইপের মতো কোনও জিনিস নেই।

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