ফিল্ডের প্রথম মানটি প্রদর্শন করতে টিজারকে সীমাবদ্ধ করুন


14

আমার একটি চিত্র ক্ষেত্র সহ একটি সামগ্রী প্রকার আছে। এই ক্ষেত্রটি সাধারণত 0 থেকে 4 টি মানের সাথে পপুলেটেড হবে। ডিফল্টরূপে এই সামগ্রীর ধরণের টিজার সমস্ত 0 থেকে 4 টি চিত্রকে আউটপুট দেয়। কেবলমাত্র প্রথম চিত্র প্রদর্শিত করতে আমি টিজার কীভাবে সামঞ্জস্য করতে পারি?

উত্তর:


12

একটি কাস্টম মডিউল তৈরি করুন, MODULENAMEমডিউলটির field_imageনাম এবং আপনার ক্ষেত্রের নাম সহ প্রতিস্থাপন করুন :

/**
 * Implements hook_entity_view().
 */
function MODULENAME_entity_view($entity, $type, $view_mode, $langcode) {
  if ($view_mode == 'teaser') {
    $entity->content['field_image']['#items'] = array_slice($entity->content['field_image']['#items'], 0, 1);
  }
}

দেখুন hook_entity_view () আরো বিস্তারিত জানার জন্য ডকুমেন্টেশন।


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

1) হ্যাঁ, এটি করা উচিত। 2) আপনি যদি বিবৃতিটি হতে পারে তবে এটি পরিবর্তন করতে পারেন if ($view_mode == 'teaser' && $entity->type == 'CONTENT_TYPE')
tim.plunkett

4
অথবা কেবল &&set (($ সত্তা-> সামগ্রী ['ক্ষেত্র_চিত্র "])) এর ক্ষেত্রে ক্ষেত্রটি অন্য সামগ্রীর ধরণের যুক্ত করার সময় বা সেই
নামটির

হুম। এটি কার্যকর হতে পারে তবে থিমের মধ্যে কী হওয়া উচিত কোডের মধ্যে রাখার এটি উদাহরণ।
আর্টফুলবোট

এটি কাজ করবে, তবে আপনি যদি কাস্টম কোড দ্বারা এই জাতীয় চিন্তাভাবনাগুলি সমাধান করেন তবে ভবিষ্যতে সাইটটি কম রক্ষণাবেক্ষণযোগ্য হবে। পরিবর্তে অন্যান্য উত্তরে উল্লিখিত drupal.org থেকে কিছু মডিউল ব্যবহার করুন।
ববোক

12

কাস্টম কোড লেখার দরকার নেই।

ক্ষেত্রের একাধিক সীমা মডিউল ব্যবহার করার চেষ্টা করুন ।

এটি আপনাকে আপনার সামগ্রীর ধরণের জন্য প্রদর্শন সেটিংসে যেতে দেয় এবং টিজার সেটিংসটি কেবলমাত্র নির্দিষ্ট পরিমাণের মানগুলি প্রদর্শন করতে কনফিগার করে। এমনকি আপনি এটিকে ভ্যালিগুলি এড়িয়ে যেতে পারেন, উদাহরণস্বরূপ আপনি যদি এটি 2 থেকে 5 এর মান প্রদর্শন করতে চান


4

যদি টিজার টেম্পলেট ব্যবহার করা হয় (যেমন: নোড - কনটেন্ট-টাইপ - teaser.tpl.php ), এটি কাজ করে:

  <?php print render($content['IMAGE-FIELD'][0]); ?>

1

আমি প্রথম চিত্রটি প্রদর্শনের জন্য একটি নতুন ক্ষেত্র তৈরি করতে হুক_ফিল্ড_েক্সট্রা_ফিল্ডস () এবং হুক_নোড_ভিউ () ব্যবহার করেছি যাতে আমি মূল চিত্রগুলির ক্ষেত্রের সাথে ছাপছা করি না।

হুক_ফিল্ড_েক্সট্রা_ফিল্ডস () নতুন ক্ষেত্রের সূচনা করে যা আপনার নোড প্রকারের পরিচালনা প্রদর্শন ট্যাবে উপস্থিত হবে।

function HOOK_field_extra_fields() {
  $extra['node']['NODE_TYPE'] = array(
    'display' => array(
      'primary_image' => array(
        'label' => t('Primary Image'),
        'weight' => 0,
      )
    ),
  );
  return $extra;
}

তারপরে হুক_নোড_ভিউ () আপনার নতুন ক্ষেত্রের সামগ্রীতে প্রথম চিত্র যুক্ত করতে ব্যবহৃত হয়।

function HOOK_node_view($node, $view_mode, $langcode) {
  if($node->type == 'NODE_TYPE' && $view_mode == 'teaser') {

    //make sure there are images
    if(!empty($node->field_images)) {
      $node->content['primary_image'] = $node->content['field_images'][0];

      //hide the original field with multiple images
      hide($node->content['field_images']);
    }
  }
}

দ্রষ্টব্য: আপনি যদি ডিসপ্লে স্যুট সক্ষম করে থাকেন তবে আপনি এটি পরিচালনা ডিসপ্লে ট্যাবটিতে করতে পারেন।

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