কাস্টম মডিউল সহ ফিল্ড টেম্পলেট ওভাররাইড করুন


13

থিমটিতে টিপিএল ফাইল যুক্ত করার পরিবর্তে (এই ক্ষেত্রে, মিডিয়া-ইউটিউব-ভিডিও.tpl.php)। আমি কীভাবে কাস্টম মডিউল থেকে ফিল্ড টেম্পলেটগুলিকে ওভাররাইড করতে পারি? ক্ষেত্রটি যখন একটি ভিউতে ব্যবহৃত হয় তা সহ।

উত্তর:


12

আমি নিশ্চিত যে এটি করার সহজ উপায় থাকতে হবে তবে আমি সাধারণত এটি করি:

1. নিবন্ধন Drupal এর থিম রেজিস্ট্রি সঙ্গে একটি অগ্রাহ্য থিম বাস্তবায়ন। সুতরাং, মধ্যে mymod_theme(), একটি নতুন আইটেম যুক্ত করুন। variablesকী যে মেলানো media_youtube_videoথিম অর্থাত

/**
 * Implements hook_theme().
 */
function mymod_theme() {
  return array(
    'my_media_youtube_video' => array(
      'variables' => array('uri' => NULL, ...), // see media_youtube_theme() for this
      // bundle the template file with the module itself
      // i.e. theme/my-media-youtube-video.tpl.php
      'template' => 'my-media-youtube-video',
      'path' => drupal_get_path('module', 'mymod') . '/theme
    )
  );
}

2. মূল থিম প্রয়োগের জন্য একটি প্রিপ্রোসেস হুক যুক্ত করুন এবং আপনার নতুন বাস্তবায়ন এখানে প্রস্তাব করুন।

/*
 * Implements hook_preprocess_media_youtube_video().
 *
 * Or more generally, hook_preprocess_THEME().
 */
function mymod_preprocess_media_youtube_video(&$variables) {
  // If your overriding implementation is not a template but 
  // is implemented in a different file, 
  // then remember to include the file explicitly at this point..
  $variables['theme_hook_suggestions'][] = 'my_media_youtube_video';
}

পরামর্শগুলি একটি লিফো ফ্যাশনে থিম সিস্টেম দ্বারা মূল্যায়ন করা হয় । আপনি এই সম্পর্কে আরও পড়তে পারেন এখানে

মনে করুন আপনি বাস্তব সচেতন হন যে অন্য একটি মডিউলও বাস্তবায়নটিকে ওভাররাইড করার জন্য এই একই পদ্ধতির অনুসরণ করছে, তারপরে আপনি প্রয়োগ করতে পারবেন hook_module_implements_alter()এবং আপনার hook_preprocess_THEME()(উপরের দেখুন) সর্বশেষ বলা হবে। আপনি hook_module_implements_alter() এখানে পড়তে পারেন ।

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


আমার কাস্টম মডিউলে, আমি প্রয়োগ করতে টেমপ্লেট নির্বাচন করার জন্য একটি নির্বাচন তালিকা করেছি। আমার কাছে 3 টিপিএল ফাইল রয়েছে। সুতরাং আমি এই কিভাবে করতে পারেন।
ফাজিলা আবু জোহরা

নোড ফর্মের দেহের ক্ষেত্রটি যদি নোডের ধরণ থাকে তবে কীভাবে আমরা ওভাররাইড করতে পারি?
সুখজিন্দর সিং

3

আপনি মডিউলে নতুন থিমটিও ডিক্যালারে করতে পারেন:

/**
* Implements hook_theme().
*/
function yourmodule_theme($existing, $type, $theme, $path) {
  $theme = array();

  $theme['field__field_nameofyourfield'] = array(
    'render element' => 'content',
    'base hook' => 'field',
    'template' => 'field--field-nameofyourfield',
    'path' => drupal_get_path('module', 'yourmodule') . '/templates',
  );

  return $theme;
}

তারপরে এমন একটি / টেমপ্লেট ডিরেক্টরি ফাইলটিতে রাখুন যাতে ফিল্ড টেম্পলেট রয়েছে (মানক) এবং এর নাম ক্ষেত্র - ফিল্ড-নেমফায়ুরফিল্ড .tpl.php:

<div class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php if (!$label_hidden): ?>
    <div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>:&nbsp;</div>
  <?php endif; ?>
  <div class="field-items"<?php print $content_attributes; ?>>
    <?php foreach ($items as $delta => $item): ?>
      <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></div>
    <?php endforeach; ?>
  </div>
</div>

ক্যাশে সাফ করার পরে আপনার থিম এই ফাইল করা টেম্পলেটটি ব্যবহার করবে যদি না এটি থিম নিজেই ওভার্রাইড হয়, যার অর্থ আপনি এখনও আপনার থিমটিতে এই টেমপ্লেটটিকে ওভাররাইড করতে পারেন।

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