কীভাবে প্রোগ্রামে লিংকগুলি ভেরিয়েবলের লিঙ্ক যুক্ত করতে হয়


8

আমি ড্রুপাল 6 ব্যবহার করছি এবং $linksঅন্যান্য লিঙ্কগুলিকে প্রোগ্রামগতভাবে অন্তর্ভুক্ত করতে ভেরিয়েবলটি পরিবর্তন করতে চাই । আমি কীভাবে এটি করতে পারি তা Google এ উচ্চ এবং নিম্ন অনুসন্ধান করেছি। কেউ কীভাবে এটি করতে জানেন?

উত্তর:


22

দ্রুপাল ঘ

ড্রুপাল 6 এ, আপনি থিমের ভিতরে হুক বা হুক পরিবর্তন করতে পারবেন না, তাই আপনাকে লিঙ্কগুলি সংশোধন করতে একটি কাস্টম মডিউল তৈরি করতে হবে । একবার হয়ে গেলে, আপনি প্রয়োগ করতে চান hook_link()(আপনি যদি নতুন লিঙ্ক তৈরি করছেন) বা hook_link_alter()(আপনি যদি কোনও বিদ্যমান লিঙ্কটি পরিবর্তন করতে চান)।

একটি নতুন লিঙ্ক যুক্ত করা হচ্ছে:

example_link($type, $object, $teaser = FALSE) {
  $links = array();
  // Add a custom link to nodes
  if ($type == 'node') {
    $links['example_mylink'] = array(
      'title' => t('Test link'),
      'href' => 'foo',
      'attributes' => array(
        'title' => 'Test link',
      ),
    );
  }
  return $links;
}

বিদ্যমান লিঙ্কগুলি সংশোধন করা হচ্ছে:

example_link_alter(&$links, $node, $comment = NULL) {
  // Remove the read more link
  unset($links['node']['node_read_more']);

  // Change the title of the read more link
  $links['node']['node_read_more']['title'] = t('More information');

  // Move read more link to first slot
  $link_read_more = $links['node']['node_read_more'];
  unset($links['node']['node_read_more']);
  $links = $links['node'];
  $links['node'] = array(
    'node_read_more' => $link_read_more,
  ) + $links;

  // Move link to the last slot
  $link_read_more = $links['node']['node_read_more'];
  unset($links['node']['node_read_more']);
  $links['node']['node_read_more'] = $link_read_more;
}

দ্রুপাল 7

ড্রুপাল In-এ, এটি কিছুটা সহজবোধ্য, থিমগুলি পরিবর্তিত হুক প্রয়োগ করতে পারে। আপনি যে পরিবর্তনের হুকটি সন্ধান করছেন তা হ'ল hook_node_view_alter():

function example_node_view_alter(&$build) {
  // Remove the read more link
  unset($build['links']['node']['#links']['node-readmore']);

  // Add your own custom link
  $build['links']['node']['#links']['example-mylink'] = array(
    'title' => t('Test link'), 
    'href' => 'foo', 
    'html' => TRUE, 
    'attributes' => array(
      'title' => 'Test link',
    ),
  );

  // Move read more link to first slot
  $link_read_more = $build['links']['node']['#links']['node_read_more'];
  unset($build['links']['node']['#links']['node_read_more']);
  $links = $build['links']['node']['#links'];
  $build['links']['node']['#links'] = array(
    'node_read_more' => $link_read_more,
  ) + $links;

  // Move link to the last slot
  $link_read_more = $build['links']['node']['#links']['node_read_more'];
  unset($build['links']['node']['#links']['node_read_more']);
  $build['links']['node']['#links']['node_read_more'] = $link_read_more;
}

আপনি এটি সরাসরি আপনার template.phpফাইলে রাখতে পারেন।


ধন্যবাদ, আমি ঠিক এটিই খুঁজছিলাম! আপনি আমাকে ড্রুপাল for এর জন্য টেম্পলেট.এফপি ফাইল ব্যবহার করে একটি আকর্ষণীয় কাজ বাস্তবায়ন থেকে রক্ষা করেছেন? এই সমাধানটি দর্শন দ্বারা উত্পন্ন সামগ্রীর সাথে কাজ করবে?
ব্যবহারকারী 5013

@ ব্যবহারকারী 5013 আপনি যদি কোনও ভিউতে পূর্ণ নোড বা টিজার প্রদর্শন সম্পর্কে ভাবছেন তবে এটি বাক্সের বাইরে চলে উচিত। যদি আপনি কোনও দৃশ্যে একটি লিঙ্ক যুক্ত করতে চান, আপনি এটিও করতে পারেন: 'href'আপনার পছন্দসইটির মান পরিবর্তন করুন ।

না, আমি যদি ভাবছিলাম যে এই সমাধানটি দর্শন ক্ষেত্রের প্রদর্শনের সাথে কাজ করবে কিনা।
ব্যবহারকারী 5013

@ ব্যবহারকারী 5013 আহ, তারপরে, না: লিঙ্কগুলি কেবল তখনই যুক্ত করা হবে যখন নোডটি সম্পূর্ণরূপে নির্মিত হয়। সাধারণত লিঙ্ক বারে প্রদর্শিত হবে এমন অনেকগুলি লিঙ্ক ভিউগুলিতে পৃথক ক্ষেত্র হিসাবে উপলব্ধ।

1
@ মোট্রাইব লিঙ্কগুলি একই ক্রমে রেন্ডার করা হয় তারা অ্যারেটিতে প্রদর্শিত হয়, সুতরাং অর্ডার পরিবর্তন করার জন্য এটি কেবল সোজা অ্যারে ম্যানিপুলেশন। যুক্ত উদাহরণ।

1

ধরে নেওয়া যাক আপনি যে লিঙ্কগুলি নোড.টিপিএলপিএফপিতে রেন্ডার করা নিয়ে কথা বলছেন, আপনাকে হুক_লিঙ্ক বাস্তবায়ন করতে হবে উদাহরণস্বরূপ নোড_লিঙ্কটি দেখুন । এবং আপনি যদি ড্রুপাল হুকের ক্ষেত্রে নতুন হন তবে এটি একটি কাস্টম মডিউলে হওয়া দরকার, সুতরাং আপনার কাস্টম মডিউলটির নাম "foo" বলা যাক আপনার একটি ফাংশন লিখতে হবে foo_linkযা হুক_লিংকের মতো একই যুক্তিযুক্ত হওয়া উচিত।

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