আমি কীভাবে মেনু সম্পর্কের উপর ভিত্তি করে শিশু নোডের একটি দৃশ্য তৈরি করতে পারি?


17

বলুন আপনার একটি মেনু ট্রিতে নিম্নলিখিত পৃষ্ঠা রয়েছে:

  • প্রকল্প
    • প্রকল্প এক
    • প্রকল্প দুটি
    • প্রকল্প তিন

আমি এমন একটি ভিউ তৈরির এমন একটি উপায় খুঁজছি যা প্রকল্প (পিতামাতার) পৃষ্ঠায় এম্বেড হবে যা শিশু পৃষ্ঠাগুলি থেকে একটি পিক, শিরোনাম এবং পাঠ্য (সংক্ষিপ্তসার) দেখাবে will

পিতা-মাতা এবং বাচ্চাদের মধ্যে সম্পর্ক মেনু ট্রিতে সংজ্ঞায়িত করা হয়।

আমি জানি আমি নোড রেফারেন্স ব্যবহার করতে পারি তবে এর অর্থ হ'ল প্রত্যেকবার যখন কেউ একটি পৃষ্ঠা তৈরি করে তাদের মেনু সম্পর্ক এবং তারপরে নোড রেফারেন্স সম্পর্কটি সংজ্ঞায়িত করতে হবে।

এছাড়াও আমি জানি যে আমি অন্য একটি সামগ্রী-প্রকার তৈরি করতে পারতাম তবে আমি মনে করি যে সমস্ত বিষয়বস্তুর পৃষ্ঠাগুলি একরকম দেখাচ্ছে বলে এটি ওভারকিল।


1
অন্য নোডের সাবমেনুতে প্রদর্শিত নোডগুলির মধ্যে সরাসরি কোনও সম্পর্ক নেই (মেনু লিঙ্ক এবং নোডের মধ্যে কেবল সংযোগ হ'ল মেনু লিঙ্কটি নোড / এনআইডি নির্দেশ করে)। সুতরাং আপনার এই সাব-নোডগুলিকে একসাথে লিঙ্ক করার জন্য কিছু প্রয়োজন (এবং প্যারেন্ট-নোডের সাথে), একটি সাধারণ শ্রমশাস্ত্র শব্দ, book.module, ... হতে পারে
বার্ডির

উত্তর:


4

একটি সমাধান হ'ল সম্পর্কের সংজ্ঞা দেওয়ার জন্য ট্যাক্সোনমি শর্তাদি ব্যবহার করা এবং তারপরে সেই শব্দ সম্পর্কগুলিকে মেনু আইটেমগুলিতে অনুবাদ করার জন্য ট্যাক্সনমি মেনু মডিউলটি ব্যবহার করা। তারপরে আপনি প্যানেল ব্যবহার না করতে চাইলে সমস্ত পৃষ্ঠায় তথ্য এবং অঞ্চলগুলি নিয়ন্ত্রণ করতে আপনি কাস্টম পৃষ্ঠা মডিউল এবং প্রসঙ্গ মডিউলগুলি ব্যবহার করতে পারেন।


16

আপনি মেনু নোড এপিআই এবং মেনু নোড ভিউ মডিউলগুলি ব্যবহার করে ঠিক এটি করতে পারেন ।

আপনার প্রয়োজনীয় সামগ্রীর প্রকারের সাথে একটি দর্শন তৈরি করুন এবং "মেনু: মেনু লিঙ্ক আইডি" এর একটি প্রাসঙ্গিক ফিল্টার চয়ন করুন (এটি কেবল উপরের মডিউলগুলি ইনস্টল করার সাথেই উপলভ্য)।

এর অধীনে, "যখন ফিল্টার মান পাওয়া যায় না," "ডিফল্ট মান সরবরাহ করুন" নির্বাচন করুন এবং "পিএইচপি কোড" নির্বাচন করুন।

নীচের স্নিপেট এটি করবে, তারপরে আপনি কেবল দৃশ্য থেকে একটি ব্লক প্রকাশ করবেন এবং আপনি সেখানে রয়েছেন:

if (function_exists('menu_node_get_links')){  
   $node = node_load(intval(arg(1)));  
   if (isset($node->menu_node_links)){
      foreach($node->menu_node_links as $mlid=>$data){  
         return $mlid;
      }  
   }
}

3
আমি মনে করি বর্তমান নোডের বাচ্চাদের নিতে ফিল্টারটি "মেনু: পিতামাতার মেনু লিঙ্ক আইডি" হওয়া উচিত। এবং আর্গুমেন্ট কোডটি হতে পারে: $ বর্তমান = শেষ (মেনু_জেট_একটিভ_ট্রাইল ()); রিটার্ন $ কারেন্ট ['এমলিড'];
স্টিফান

এর জন্য ধন্যবাদ. কয়েকটি উন্নতি (@ স্টেফানের সংশোধন ছাড়াও)। 1) আপনি কিছু ব্যয় বাঁচানোর menu_load_object(arg(1))পরিবর্তে ব্যবহার করতে পারেন node_load()। 2) আপনার মেনু আইটেমটি আপনার সাথে সম্পর্কিত মেনু থেকে রয়েছে তা নিশ্চিত করার জন্য আপনার পরীক্ষা করা উচিত। এই মুহূর্তে, আপনি কেবল প্রথমটি ফিরিয়ে দিচ্ছেন $mlid। পূর্বাভাসের ভিতরে আপনার এটি if ($data->menu_name == 'my-menu')ঠিক করার জন্য শর্তযুক্ত যুক্ত করা উচিত । এবং 3) আপনি menu: hiddenকেবল লুকানো নেই এমন আইটেমগুলি ফিরিয়ে আনতে আপনি দ্বিতীয় ফিল্টার যুক্ত করতে চাইতে পারেন । একই স্নিপেট ব্যবহার করুন, তবে এর $data->hidden;পরিবর্তে ফিরে আসুন $mlid
আদম বালসাম

2
আমি দৃ mod়ভাবে পরামর্শ মডিউলগুলি নিরুত্সাহিত করব যা এখনও উন্নয়নের পর্যায়ে রয়েছে।
এম্বেডেক্স

@ স্টেফান কি কোনও স্তরেই বাচ্চাদের পেতে দূরে আছেন? পরিবর্তে শুধু প্রথম।
এলি স্টোন

4

নোড শ্রেণীক্রম মডিউল সম্পর্ক এই ধরনের, সেইসাথে একটি মতামত ইন্টিগ্রেশন প্রদানের পারেন।

নোড হায়ারার্কি নোডগুলিকে সামগ্রী হিসাবে গাছের মতো হায়ারার্কি তৈরি করে নোডের অন্য শিশুদের হতে দেয়। মডিউলটি অফার করে:

  • 1-শ্রেণিবদ্ধ মেনুগুলির তৈরি ক্লিক করুন
  • শ্রেণিবদ্ধ রুটি
  • পাঠাটো (এবং টোকেন মডিউল) ব্যবহার করে স্বয়ংক্রিয় হায়ারার্কিকাল url

    (যেমন: q = aboutus / ইতিহাস / সূচনা)।

  • ইচ্ছা থাকলে শ্রেণিবদ্ধ মেনুগুলির স্বয়ংক্রিয় তৈরি।
  • Viewsচ্ছিক দর্শন সংহত।
  • Ptionচ্ছিক নোড অ্যাক্সেস একীকরণ।

2

হতে পারে এটি ডি 7 / ভিউ 3 এর জন্য পরিবর্তিত হয়েছে, তবে কাঙ্ক্ষিত আচরণটি সম্পাদনের জন্য আপনার কোনও পিএইচপি দরকার নেই:

  1. মেনু_ভিউগুলি , মেনু_নোড এবং ইনস্টল করুন মেনু_নোড_ভিউ মডিউল ।
  2. "মেনু ট্রি" টাইপের একটি নতুন দৃশ্য তৈরি করুন
  3. ক্ষেত্রগুলি "মেনু: লিঙ্ক শিরোনাম" এবং "মেনু: বিবরণ" যুক্ত করুন
  4. প্রসঙ্গ ফিল্টার / যুক্তি "মেনু: নোড আইডি" যুক্ত করুন; ডিফল্ট মান "URL থেকে সামগ্রী আইডি" সরবরাহ করুন
  5. সম্পর্ক যুক্ত করুন "মেনু: মূল মেনু লিঙ্ক আইডি"

, voila। এটি কাজ করা উচিত নয় , তবে তা করে।

এটি কেবল নোডের সাথে দুর্দান্ত কাজ করে তবে নোড হায়ারার্কির উপরে মেনু লিঙ্কগুলি ব্যবহার করার সুবিধাটি হ'ল আপনি নোডের চারপাশে নেভিগেশন তৈরির মধ্যে সীমাবদ্ধ নন। এমনকি আপনি আপনার দৃষ্টিতে বাহ্যিক লিঙ্কগুলি অন্তর্ভুক্ত করতে পারেন।


নোড লিঙ্কগুলি প্রকাশ করার জন্য এটি একটি ভাল বিকল্প (এবং আমি পছন্দ করি যে হারুন বাউমন আমদানির জন্য এই নমুনা মতামতটি রেখেছেন: পেস্টবিন . com / u2GjmWG7 )। তবে ওপি অনুরোধ করায় আমার কাছে নোড ফিল্ডগুলি দেখার জন্য উপলব্ধ করতে কিছুটা সমস্যা হয়েছিল। কীভাবে তা সম্পাদিত হয়?
ডাব্লিউজেজ

"মেনু: নোড আইডি" এর সাথে একটি সম্পর্ক যুক্ত করে আপনার নোড ক্ষেত্রগুলি প্রকাশ করতে সক্ষম হওয়া উচিত। আপনি কি কিছু দেখতে পাচ্ছেন?
অ্যারোনবাউমন

2

একটি অপেক্ষাকৃত নতুন মডিউল রয়েছে যা মেনু নোড চিলড্রেন ফিল্টারটি মনে হয় যা আপনি ঠিক তাই করেন:

এই মডিউলটি ভিউগুলিতে একটি প্রাসঙ্গিক ফিল্টার যুক্ত করে যা একটি মেনুর কাঠামো অনুযায়ী নোডের চাইল্ড নোডগুলি পুনরুদ্ধার করবে।


0

আপনি এই উদ্দেশ্যে নোড রেফারেন্স ব্যবহার বিবেচনা করেছেন ?

  1. আপনি যে সামগ্রীটি প্রদর্শন করতে চান তাতে নোডের রেফারেন্স ক্ষেত্র সরবরাহ করুন।
  2. ভিউতে প্রাসঙ্গিক ফিল্টার হিসাবে সেই ক্ষেত্রটি ব্যবহার করুন (ডিফল্ট মান: ইউআরএল থেকে সামগ্রী আইডি )।
  3. সামগ্রীতে ব্লক হিসাবে এই দর্শন প্রদর্শন যুক্ত করুন। এটি যে নোডটিতে প্রদর্শিত হচ্ছে এটি নোডের পিতামাতারূপে দেখা যাবে যা উদাহরণস্বরূপ এটি উল্লেখ করে।

আপনি সম্ভবত খুঁজছেন সুতরাং এইভাবে আপনি একটি অনুরূপ ফলাফল অর্জন করতে পারেন।


0

এমিলের উত্তরটি সঠিক, তবে আমাকে উল্লেখ করা পিএইচপি কোডটি " মেনু: পিতামাতার মেনু লিংক আইডি " টাইপের প্রসঙ্গত ফিল্টারে পেস্ট করতে হয়েছিল ।

if (function_exists('menu_node_get_links')){  
   $node = node_load(intval(arg(1)));  
   if (isset($node->menu_node_links)){
      foreach($node->menu_node_links as $mlid=>$data){  
         return $mlid;
      }  
   }
}

0

আপনি যদি সত্ত্বার অনুবাদ ব্যবহার করেন এবং নোডটি বিভিন্ন মেনুগুলির সাথে সংযুক্ত থাকে তবে এখানে কোডটির একটি রূপান্তর রয়েছে যা বর্তমান ভাষার উপর ফিল্টার করে। অন্যান্য উত্তরগুলিতে বর্ণিত মতামত অনুযায়ী আপনার ভিউতে প্রাসঙ্গিক ফিল্টার (প্যারেন্ট মেনু লিঙ্ক আইডি) এর জন্য আপনাকে পিএইচপি কোড হিসাবে অনুলিপি করতে হবে

 if (function_exists('menu_node_get_links')) {
global $language;
$lang = $language->language;
$node = node_load(intval(arg(1)));
if (isset($node->menu_node_links)) {
  foreach ($node->menu_node_links as $mlid => $data) {  
    if ($lang == $data->language) {
      return($mlid);
    }
  }
}
  }

0

থেকে ইস্যু কিউ এর মেনু নোড প্রতি আমরা এই সুন্দর সমাধান আছে:

  • 'পিতামাতা মেনু লিঙ্ক আইডি' দিয়ে একটি প্রসঙ্গ ফিল্টার যুক্ত করুন,
  • 'ডিফল্ট মান সরবরাহ করুন' নির্বাচন করুন
  • 'কাস্টম পিএইচপি কোড' নির্বাচন করুন
  • নিম্নলিখিত কোড লিখুন

    $menu_item = menu_get_active_trail();  
    $current_item = array_pop($menu_item);  
    $menu_item_plid = $current_item['plid'];  
    return $menu_item_plid;  
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.