দর্শন - একটি গোষ্ঠীর চারদিকে একটি মোড়ক ডিআইভি যুক্ত করুন


43

ড্রুপাল 7-তে, আমি একটি ভিউ তৈরি করেছি যা বেশ কয়েকটি ক্ষেত্রের তালিকা করে। ক্ষেত্রগুলি অন্য ক্ষেত্র দ্বারা ভাগ করা হয় (ক্ষেত্রের আইডি)। মার্ক আপটি দেখতে এমন দেখাচ্ছে:

<h3>[Term 1]</h3>
<div class="views-row views-row-1 views-row-odd views-row-first"> [Field Content] </div>
<div class="views-row views-row-2 views-row-even"> [Field Content] </div>
<div class="views-row views-row-3 views-row-odd views-row-last"> [Field Content] </div>

<h3>[Term 2]</h3>
<div class="views-row views-row-1 views-row-odd views-row-first"> [Field Content] </div>
<div class="views-row views-row-2 views-row-even"> [Field Content] </div>
<div class="views-row views-row-3 views-row-odd views-row-last"> [Field Content] </div>

<h3>[Term 3]</h3>
<div class="views-row views-row-1 views-row-odd views-row-first"> [Field Content] </div>
<div class="views-row views-row-2 views-row-even"> [Field Content] </div>
<div class="views-row views-row-3 views-row-odd views-row-last"> [Field Content] </div>

যাইহোক, এই মত দেখতে আমার কাছে চিহ্ন দরকার:

<div id="term_1">
     <h3>[Term 1]</h3>
     <div class="views-row views-row-1 views-row-odd views-row-first"> [Field Content] </div>
     <div class="views-row views-row-2 views-row-even"> [Field Content] </div>
     <div class="views-row views-row-3 views-row-odd views-row-last"> [Field Content] </div>
</div>

<div id="term_2">
     <h3>[Term 2]</h3>
     <div class="views-row views-row-1 views-row-odd views-row-first"> [Field Content] </div>
     <div class="views-row views-row-2 views-row-even"> [Field Content] </div>
     <div class="views-row views-row-3 views-row-odd views-row-last"> [Field Content] </div>
</div>

<div id="term_3">
     <h3>[Term 3]</h3>
     <div class="views-row views-row-1 views-row-odd views-row-first"> [Field Content] </div>
     <div class="views-row views-row-2 views-row-even"> [Field Content] </div>
     <div class="views-row views-row-3 views-row-odd views-row-last"> [Field Content] </div>
</div>

আমি জানি যে আপনি ভিউ-ভিউ-অরফর্ম্যাটড.টপিএলপিএফপি (স্টাইল আউটপুট) ওভার ভিউ চালানোর জন্য ব্যবহার করতে পারেন এবং তারপরে গ্রুপটি মোড়ানোর জন্য একটি ডিআইভি .োকাতে পারেন।

যাইহোক, আমার এইভাবে র‌্যাপার ডিআইভি দরকার <div id="term_ID_{number of ID}">। নম্বর আইডি শব্দটির সাথে সামঞ্জস্য করবে যা ক্ষেত্রগুলিকে গ্রুপ করার জন্য ব্যবহৃত হয়েছে। ডিফল্টরূপে, আপনি যদি ভিউ-ভিউ-অপরিবর্তিত.tpl.php ব্যবহার করেন তবে আপনি এতে টার্ম আইডির জন্য টোকেন প্রবেশ করতে পারবেন না।

কোন সাহায্য প্রশংসা করা হবে।

উত্তর:


50

আমি সম্প্রতি এই একই জিনিস করা প্রয়োজন। আপনি একটি টেম্পলেট ফাইল তৈরি করতে পারেন:

  • এর অধীন টেমপ্লেটটি সন্ধান করুন /modules/views/themes/views-view-unformatted.tpl.php
  • আপনার /sites/all/themes/<your-theme>ফোল্ডারে এটি অনুলিপি করুন এবং নাম পরিবর্তন করুন views-view-unformatted--<nodetype>.tpl.php
  • divপুরো টেম্পলেটটির চারপাশে একটি ফাইল যুক্ত সম্পাদনা করুন । <h3>ট্যাগ গ্রুপ নাম।

পরিবর্তিত টেম্পলেট ফাইলটির মতো দেখতে এখানে রয়েছে।

<div class="your-class">
<?php if (!empty($title)): ?>
    <h3><?php print $title; ?></h3><!--this is the group name-->
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
  <div class="<?php print $classes_array[$id]; ?>">
    <?php print $row; ?>
</div>
<?php endforeach; ?>
</div><!--end your div-->

4
এটি কেবল আমার জন্য কাজ করেছে, ততটুকু :)
ক্লাইভ

তুমি আমার সময় বাঁচিয়েছ বন্ধু!
ড্রপড্রাগন

1
এই tplফাইলটি পড়ার জন্য যে কেউ কীভাবে তাদের ফাইলটির নাম কী তা কীভাবে কাজ করবেন তা ভাবছেন , উত্তরটি এখানে দেখুন drupal.stackex بدل. com/ questions/ 11468/… tldr; আপনার দর্শন সম্পাদনা পৃষ্ঠায়, উন্নত অধীনে, থিমটি ক্লিক করুন: তথ্য
ব্যবহারকারী56reinstatemonica8

যদিও Q এবং A দ্রুপাল 7, একইভাবে দ্রুপাল 8 এর জন্য কাজ করে
ডানকানমু

16

বিন্যাস চেষ্টা করুন: এইচটিএমএল তালিকা। এটি পুরো জিনিসটি কোনও আইটেম-তালিকায় মুড়ে দেবে। আমার উদ্দেশ্যে এটি নিখুঁত (শ্রেণীবদ্ধ আইটেমগুলির একটি তালিকা)। আশাকরি এটা সাহায্য করবে.


এটা ভাল. আমি গ্রুপের ক্ষেত্রটি র‍্যাপারে ক্লাস হিসাবে যুক্ত করতে চেয়েছিলাম যাতে আমি সেই অনুসারে স্টাইল করতে পারি তবে ইউআই নিজেই দেখতে পারা যায় না। পরিবর্তে আমি যা করেছি তা যদি এটি কাউকে সহায়তা করে তা হ'ল: প্রথমে ক্ষেত্রের দ্বারাও SORT করুন এবং তারপরে সিএসএস প্রথম নির্বাচক ব্যবহার করুন।
ক্লিডিফিয়া

11

আপনি কি পুনরায় লেখার ফলাফল বৈশিষ্ট্যটি ব্যবহার করে দেখেছেন ? আপনি যে ফিল্ডটি সম্পাদনা করতে চান তাতে ক্লিক করুন এবং পুনরায় লেখার ফলাফল না পাওয়া পর্যন্ত নীচে স্ক্রোল করুন । এই ক্ষেত্রের আউটপুট পুনর্লিখনের জন্য বাক্সটি চেক করুন এবং তারপরে প্রয়োজনীয় হিসাবে HTMLটি কাস্টমাইজ করুন। টোকেনগুলির জন্য, আপনি পাঠ্য ইনপুট অঞ্চলের নীচে বাক্সে প্রদর্শিত প্রতিস্থাপন প্যাটার্নগুলি ব্যবহার করতে পারেন ।

সংক্রান্ত প্রতিস্থাপন প্যাটার্নস , নোট সতর্কবার্তা যে দেখেছে প্রদর্শন করা হয়:

নোট করুন যে রেন্ডারিং অর্ডারের কারণে আপনি এই ক্ষেত্রের পরে আসা ক্ষেত্রগুলি ব্যবহার করতে পারবেন না; আপনার যদি এখানে তালিকাভুক্ত না ক্ষেত্রের প্রয়োজন হয় তবে আপনার ক্ষেত্রগুলি পুনরায় সাজান।

যদি এটি পর্যাপ্ত না হয় তবে গ্লোবাল: কাস্টম পাঠ্য , একটি নতুন ক্ষেত্র যুক্ত করার চেষ্টা করুন । এটি আপনাকে কিছু স্বেচ্ছাসেবী এইচটিএমএল যুক্ত করার অনুমতি দেবে এবং প্রতিস্থাপন প্যাটার্নগুলি এখানেও উপলব্ধ। শুরু এবং শেষ ট্যাগ যুক্ত করতে আপনি দুটি পৃথক গ্লোবাল: কাস্টম পাঠ্য ক্ষেত্রগুলি ব্যবহার করতে পারেন <div>


হাই, আপনার সাহায্যের জন্য ধন্যবাদ. আমি গোষ্ঠীকরণের ক্ষেত্রটি পরিবর্তন করার চেষ্টা করছি (পৃষ্ঠা: শৈলীর বিকল্পসমূহ> গ্রুপিং ক্ষেত্র Nr.1 ​​এর অধীনে) এই গোষ্ঠীকরণের ক্ষেত্রের আউটপুট পরিবর্তনের কোনও বিকল্প বলে মনে হচ্ছে না। Global: Custom textগোষ্ঠীর মধ্যে সারিটি ব্যবহার করে তবে গোষ্ঠীর বাইরে নয়
বড়_স্মরণ

আপনি যখন গ্রুপিং ক্ষেত্র Nr.1 নির্বাচন করেন , তখন গ্রুপ সারি এবং সারি শ্রেণিতে রেন্ডার আউটপুট ব্যবহারের বিকল্প রয়েছে । আপনি কি চান না কেউ?
প্যাট্রিক কেনি

1
হাই, আপনার সাহায্যের জন্য ধন্যবাদ. এই বিকল্পগুলি সম্পূর্ণ গোষ্ঠীর বিপরীতে পৃথক ক্ষেত্রগুলির চারপাশে মোড়ক ডিআইভি যুক্ত করে (এটি গ্রুপিং ফিল্ড Nr.1 ​​দ্বারা তৈরি করা হয়েছে)।
big_smile

@ প্যাট্রিককেনি আপনি কি জানেন যে এই পদ্ধতির দেখার উপস্থাপনের সময়টিতে খারাপ প্রভাব ফেলছে?
ব্যবহারকারী5950

@ user5950 আমি পুনর্লিখনের ফলাফলগুলি সর্বদা ব্যবহার করি তবে আমি কখনও পারফরম্যান্সের হিট লক্ষ্য করি না। আমি মনে করি যে সম্পর্কগুলি যুক্ত করার মতো অন্যান্য সাধারণ দর্শন কাজগুলি পুনর্লিখনের ফলাফলগুলি হওয়ার আগে পারফরম্যান্সে বাধার সম্ভাবনা বেশি।
প্যাট্রিক কেনি

5

এই দিনগুলিতে আমি একই ইস্যুতে ছুটে এসেছি। এবং গ্রুপ র‍্যাপারের পাশে আমার যা দরকার তা ছিল প্রতি গ্রুপে প্রথম / শেষের মতো সিএসএস শ্রেণি।

তাই আমি নীচের পিএইচপি কোডটি ভিউ-ভিউ-অপরিবর্তিত.tpl.php এ যুক্ত করেছি:

<?php
  #### defs
  // call a global variable every time the template is called
  global $static;
  // be aware of the key_name for the global variable to keep it 
  // unique for every display
  // I call the same view in one panel several times with 
  // different arguments 
  $key_name = $view->name . '_' . $view->current_display ;
  foreach ($view->args as $value) {
    $key_name .= '_' . $value;
  }
  // init classes array
  $group_classes = array();
  ## groups counter - store in global variable 
  if (!isset($static[$key_name]['gc'])) {
    $static[$key_name]['gc'] = 1;
  }
  else {
    $static[$key_name]['gc']++;
  }
  #### classes
  ## counter
  $group_classes[] = 'group-' . $static[$key_name]['gc'];
  ## first
  if ($static[$key_name]['gc'] == 1) {
    $group_classes[] = 'first';
  }
  ## last
  // get max row "id" per group
  foreach ($rows as $id => $row) {
    $max_id = $id;
  }
  // count results (-1 because $id starts with 0)
  $count_results = count($view->result) - 1;
  //
  if ($max_id == $count_results) {
    $group_classes[] = 'last';
  }
  ## ret
  $group_class = implode(' ', $group_classes);
?>

এখানে র‌্যাপার এবং ক্লাস সহ এইচটিএমএল অংশ:

<div class="views-group <?php print $group_class; ?>">
  <?php if (!empty($title)): ?>
    <h3><?php print $title; ?></h3>
  <?php endif; ?>
  <?php foreach ($rows as $id => $row): ?>
    <div <?php if ($classes_array[$id]) { print 'class="' . $classes_array[$id] .'"';  } ?>>
      <?php print $row; ?>
    </div>
  <?php endforeach; ?>
</div>

আউটপুটটি হবে:

<div class="views-group group-1 first">
  content of first group
</div>
<div class="views-group group-2">
  content of second group
</div>    
<div class="views-group group-3 last">
  content of third group
</div>

সহায়ক হতে পারে - উপভোগ করুন


3

সুতরাং আমি অনুমান করি যে সবচেয়ে বড় ধাঁধাটি h3 ট্যাগের মধ্যে $ শিরোনামের মানটি ব্যবহার করে শ্রেণি কিভাবে তৈরি করা যায়। আমি ট্রান্সলিটেশন মডিউল এবং নিম্নলিখিত স্নিপেট চেষ্টা করব:

<?php
  $group_class = function_exists('transliteration_get') ? transliteration_get($title) : $title;
  $group_class = trim($group_class);
  $group_class = str_replace(' ', '-', $group_class);
  $group_class = strtolower($group_class);
?>

এটি আমার জন্য কাজ করেছিল যখন আমাকে একটি ভিউয়ের মধ্যে নামকরণকৃত অ্যাঙ্কারগুলি তৈরি করতে হয়েছিল।


2

খুব দরকারী - প্রতিটি সারিটির জন্য উভয়কে সাফ করতে সক্ষম হতে আমার গ্রিড ভিত্তিক লেআউটের জন্য কিছু আলফা / ওমেগা ক্লাসে যুক্ত করতে হবে এবং কিছুটা বিজোড়ও প্রয়োজন। আমি লাইনটি সম্পাদনা করেছি:

$group_classes[] = 'group-' . $static[$key_name]['gc'];

এটি:

$group_classes[] = 'group-' . $static[$key_name]['gc'] . ($static[$key_name]['gc'] % 2 ? ' alpha even' : ' omega odd');

যা প্রয়োজনীয় আউটপুট দেয়।



2

আমার আজ একই ধরণের সমস্যা ছিল, তবে মোড়ক এইচটিএমএল-তে একটি নির্দিষ্ট শ্রেণির প্রয়োজন ছিল, আমার ক্ষেত্রে দৃষ্টিভঙ্গিটি শুল্কবিজ্ঞানের শর্তাবলী দ্বারা বিভক্ত করা হয়েছে এবং প্রতিটি শব্দে আমাদের একটি নির্দিষ্ট শৈলীর প্রয়োজন, তাই প্রতি শব্দে একটি নির্দিষ্ট শ্রেণি প্রয়োজন। এখানে আমরা কীভাবে অপ্রঠিত টেমপ্লেটটি পরিবর্তন করেছি:

<?php if(is_numeric($title)) { $term = taxonomy_term_load($title); $title = $term->name; } ?>
<div class="term-<?php print $term->tid;?>">
<?php if (!empty($title)): ?>
    <h3><?php print $title; ?></h3><!--this is the group name-->
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
  <div class="<?php print $classes_array[$id]; ?>">
    <?php print $row; ?>
</div>
<?php endforeach; ?>
</div><!--end your div-->

ভিউতে বিভাগের শর্ত ক্ষেত্রের প্রদর্শনটি সেট করা আছে: "সত্তা আইডি দেখান"। সুতরাং আমরা ক্লাস নামের অংশ হিসাবে আইডি পাই, এবং তারপরে একই আইডির উপর ভিত্তি করে শিরোনাম লোড করি।


2

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

সুতরাং উপসর্গ এবং প্রত্যয় অঞ্চলগুলি সহ স্ট্রিপযুক্ত স্থানীয় কাঠামোটি দেখতে এমন কিছু দেখাচ্ছে:

<div class="field field-name-field-test field-type-text field-label-above">
 <div class="field-label">Foobar field:&nbsp;</div>
  <div class="field-items">
   *:prefix posted here*
   <div class="field-item even">Leaner markup means better front-end performance.</div>
   *:suffix posted here*
 </div>
</div>

আপনি "foo" ক্লাস যুক্ত করতে গেলে এটি হয়ে যায়

   <div class="foo"> *:prefix posted here*
    Leaner markup means better front-end performance.
   </div> *:suffix posted here*

2

উপরে ক্রিসলির উত্তরটি টেম্পলেট ফাইলটির নাম কী তা বাদ দিয়ে এটিকে ভালভাবে ব্যাখ্যা করে। আপনি যদি কেবল একটি ভিউ পরিবর্তন করতে চান তবে নতুন ফাইলটিতে অবশ্যই ভিউটির মেশিনের নাম অন্তর্ভুক্ত করা উচিত। আপনি ভিউ এর সম্পাদনা পৃষ্ঠার url এ এটি খুঁজে পেতে পারেন। এটি একটি অনুরূপ ইস্যুতে এই মন্তব্যে এটি খুব ভালভাবে ব্যাখ্যা করা হয়েছে: https://www.drupal.org/node/1383696#comment-6729128

$ শিরোনামের মানটি ব্যবহার করে আমার সারিগুলির চারপাশে একটি শ্রেণি প্রয়োজন যাতে আমি তাদের 2 টি কলামে রেন্ডার করতে পারি। কোডটি এখানে:

<?php if (!empty($title)): ?>
  <h3><?php print $title; ?></h3>
<?php endif; ?>
<div class="<?php print strtolower($title); ?>" > <!--added div with class-->
<?php foreach ($rows as $id => $row): ?>
  <div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"';  } ?>>
    <?php print $row; ?>
  </div>
<?php endforeach; ?>
</div> <!--end of added div-->

2

আমি একই একটি সমস্যা জুড়ে এসেছি। আমি চেয়েছিলাম যে আমার গোষ্ঠীযুক্ত সারিগুলি বুটস্ট্র্যাপ অ্যাকর্ডিয়নের মধ্যে প্রদর্শিত হোক। আমি এটি ভিউ বুটস্ট্র্যাপ মডিউলটির সাথে কাজ করতে পারি না ।
মন্তব্য # 4 আমার সমস্যার সমাধান করেছে।
আমার views-view-unformatted-[my_view_name]-[my_display_name].tpl.phpচেহারা দেখতে এখানে

<?php

/**
 * @file
 * YOUR_THEME simple view template to display a list of rows.
 *
 * @ingroup views_templates
 */
?>

    <?php
    #### defs
      // call a global variable every time the template is called
      global $static;
      // be aware of the key_name for the global variable to keep it 
      // unique for every display
      // I call the same view in one panel several times with 
      // different arguments 
      $key_name = $view->name . '_' . $view->current_display ;
      foreach ($view->args as $value) {
        $key_name .= '_' . $value;
      }
      // init classes array
      $group_classes = array();
      ## groups counter - store in global variable 
      if (!isset($static[$key_name]['gc'])) {
        $static[$key_name]['gc'] = 1;
      }
      else {
        $static[$key_name]['gc']++;
      }
      #### classes
      ## counter
      $group_classes[] = 'group-' . $static[$key_name]['gc'];
      ## first
      if ($static[$key_name]['gc'] == 1) {
        $group_classes[] = 'first';
      }
      ## last
      // get max row "id" per group
      foreach ($rows as $id => $row) {
        $max_id = $id;
      }
      // count results (-1 because $id starts with 0)
      $count_results = count($view->result) - 1;
      //
      if ($max_id == $count_results) {
        $group_classes[] = 'last';
      }
      ## ret
      $group_class = implode(' ', $group_classes);
      $group_id = implode($group_classes); // helps me having a id whithout spaces for my accordions panels.
    ?>

    <div class="panel panel-default <?php print $group_class; ?>">
        <?php if (!empty($title)): ?>
          <?php if($group_id == 'group-1first'): ?>
                <!--<h3><?php //print $title; ?></h3>-->
                <div class="panel-heading" role="tab" id="heading<?php print $group_id; ?>">
                    <h3 class="panel-title">
                        <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse<?php print $group_id; ?>" aria-expanded="true" aria-controls="collapse<?php print $group_id; ?>">
                            <?php print $title; ?>
                        </a>
                    </h3>
                </div>
                <div id="collapse<?php print $group_id; ?>" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="heading<?php print $group_id; ?>">

            <?php else: ?>
                <div class="panel-heading" role="tab" id="heading<?php print $group_id; ?>">
                    <h3 class="panel-title">
                        <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse<?php print $group_id; ?>" aria-expanded="false" aria-controls="collapse<?php print $group_id; ?>">
                            <?php print $title; ?>
                        </a>
                    </h3>
                </div>
                <div id="collapse<?php print $group_id; ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading<?php print $group_id; ?>">

            <?php endif; ?>
        <?php endif; ?>                                                 

                    <div class="panel-body">
                        <?php foreach ($rows as $id => $row): ?>
                                    <div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"';  } ?>>
                                        <?php print $row; ?>
                                    </div>
                        <?php endforeach; ?>
                    </div>
            </div>
    </div>

অবশ্যই, অ্যাকর্ডিয়ানটি কাজ করার জন্য আপনাকে ভিউ-ভিউ- [আমার_দর্শন_নাম] - [আমার_ডিসপ্লে_নাম] .tpl.php সম্পাদনা করতে হবে

<?php if ($rows): ?>
    <!--<div class="view-content">-->
    <div class="view-content panel-group" id="accordion" role="tablist" aria-multiselectable="true">
      <?php print $rows; ?>
    </div>
  <?php elseif ($empty): ?>
    <div class="view-empty">
      <?php print $empty; ?>
    </div>
  <?php endif; ?>

আমি এইচটিএমএল মন্তব্যের মধ্যে মডিউলটি থেকে ডিফল্ট কোড রেখেছি।
আশা করি এটা সাহায্য করবে.

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