টুইগ টেমপ্লেটে একাধিক মানের সামগ্রী ক্ষেত্রের মাধ্যমে আইট্রেট করুন


23

আমার field_admin_tagsকোনও node.html.twigটেমপ্লেটে ক্ষেত্রের রেন্ডারিংয়ের নিয়ন্ত্রণ নেওয়া দরকার ।

এইটা কাজ করে:

  • {{ content.field_admin_tags }} - সবকিছু রেন্ডার করে (লেবেল + সমস্ত ক্ষেত্রের মান)
  • {{ content.field_admin_tags.0 }} - ক্ষেত্রের মধ্যে কেবল প্রথম মানটি রেন্ডার দেয় এবং কোনও লেবেল নেই

সমস্যা: আমি মার্কআপ ট্যাগ পার্শ্ববর্তী যেমন উপর কোন নিয়ন্ত্রণ আছে <ul><li>...</li></ul>

সুতরাং আমার ধারণা ছিল অ্যারে রেন্ডার উপর পুনরাবৃত্তি

কিন্তু এটি কাজ করে না:

{% for tag in content.field_admin_tags %}
  {{ tag }}
{% endfor %}

আমি পাবেন: Exception: Object of type Drupal\node\Entity\Node cannot be printed

আমি মনে করি আমি ক্ষেত্রের অভ্যন্তরের আইটেম বনাম রেন্ডার অ্যারের কী / মানগুলি নিয়ে পুনরুক্তি করছি (যদি আমি প্রতিটি লুপের মধ্যে একটি "এক্স" প্রিন্ট আউট করি তবে আমি 20 টি পেয়েছি যখন আমার এই ক্ষেত্রে দুটি বা তিনটি মান রয়েছে) ।

আমি পুনরুক্তি করতে চাই content.field_admin_tags.0, content.field_admin_tags.1ইত্যাদি

কোন ধারনা কিভাবে এটা ঠিক করতে হবে? ধন্যবাদ।


1
Do উপর ইস্যু drupal.org/node/2776307
gagarine

উত্তর:


15

আপনি এটি একটি ক্ষেত্রের পলিতে ঠিক করতে পারেন can ক্ষেত্রের আইটেমগুলির পুনরাবৃত্তি করতে আপনি বিদ্যমান লুপটি ব্যবহার করতে পারেন:

node.html.twig

{{ content.field_admin_tags }}

ক্ষেত্র - ক্ষেত্র-অ্যাডমিন-tags.html.twig

<ul{{ attributes }}>
  {% for item in items %}
    <li>{{ item.content }}</li>
  {% endfor %}
</ul>

এই উদাহরণটি প্রতিস্থাপন <div>করে <ul>{{ attributes }}ক্ষেত্রের টেমপ্লেটটি সরিয়ে বা বাইপাস করবেন না , কী চটজলদি ভাঙতে পারে এবং কীভাবে আমি এটি ঠিক করব?


এটি অভিভাবক টেমপ্লেট থেকে{{ content.field_admin_tags }}
এডো

23

4k4 এর সাথে সম্মত হন ক্ষেত্রের টেম্পলেটটি সর্বোত্তম জায়গা, আপনি যদি সত্যই এটি সত্তার টেম্পলেটটিতে চান (যেমন নোড) আপনি এই জাতীয় কিছু করতে পারেন:

{% for key, item in content.field_tags if key|first != '#' %}
  <div class="item-{{ key + 1 }}">{{ item }}</div>
{% endfor %}

তবে সত্যই আমি মনে করি এটি কিছুটা কুরুচিপূর্ণ, ফিল্ড টেম্পলেটটি সঠিক জায়গা।


1
রাজি হয়ে গেছে, কিছুটা কুৎসিত। ;) কোড স্নিপেটের জন্য ধন্যবাদ, যদিও।
AngularChef

বিভিন্ন ধরণের এনটাইটের সাথে পুরোপুরি কাজ করে
ক্রিস্টোফ

11

আপনি যদি আমার মতো নোডের পাতলা টেম্পলেটটিতে অনুচ্ছেদে পুনরাবৃত্তি করার কোনও উপায় সন্ধান করেন তবে এটি কীভাবে করবেন তা এখানে:

মনে করুন আপনার মাল্টিভ্যালিউড অনুচ্ছেদের ক্ষেত্র সহ একটি নোড রয়েছে, সুতরাং একটি সামগ্রী সম্পাদক একাধিক অনুচ্ছেদ তৈরি করতে পারবেন এবং নোডস টুইগ টেম্পলেটের প্রতিটি অনুচ্ছেদে পুনরাবৃত্তি করতে চান (উদাহরণস্বরূপ প্রতিটি অনুচ্ছেদের চারপাশে একটি মোড়ক যুক্ত করুন):

{% for key,value in node.my_paragraph_field.value %}
    {{ content.my_paragraph_field[key] }}
{% endfor %}

আপডেট: কন্টেন্টটি ব্যবহার না করেই আমার সমস্ত অনুচ্ছেদ মুদ্রণের জন্য অন্য উপায় খুঁজে পাওয়া দরকার। কন্টেন্ট ভেরিয়েবলটিতে নোডের 'ডিসপ্লে ম্যানেজ' বিভাগে আপনি সেট আপ করা সমস্ত কিছু রয়েছে তবে আমার বর্তমান কাজ পদ্ধতিটি 'প্রদর্শন পরিচালনা' বা লেআউটগুলি কখনই ব্যবহার করবেন না কারণ আপনি নোড টুইগ ফাইলের সমস্ত ডেটা অ্যাক্সেস করতে পারবেন এবং প্রায় সমস্তই আপনি 'প্রদর্শন পরিচালনা করুন' তে যেমন সেটিংস করেন, যেমন কোনও চিত্র শৈলী প্রয়োগ করা বা কোনও তারিখের ফর্ম্যাট সেট করা, ... আপনি সরাসরি প্যাঁচানোতে পারেন।

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

যাইহোক, দুর্দান্ত ট্যুইগ টুইক মডিউলটি ব্যবহার করে, এখানে কোনও নোডের টুইগ ফাইলে সামগ্রী ভেরিয়েবলটি ব্যবহার না করেই একাধিক মানের অনুচ্ছেদ ক্ষেত্রটি কীভাবে প্রিন্ট করা যায় তা এখানে:

{% for item in node.field_paragraphs %}
    {{ drupal_entity('paragraph', item.target_id) }}
{% endfor %}

1

#itemsট্যুইগে অজানা দৈর্ঘ্যের লুপ তৈরি করার সময় সম্পত্তিটি দরকারী হিসাবে খুঁজে পেয়েছি :

print number of values within field:
{{ content.field_admin_tags['#items']|length }}

---

{# remember length in variable (minus 1 because it starts from 0): #}
{% set numTagsIndex = content.field_admin_tags['#items']|length - 1 %}

{# loop until the max value is reached: #}
{% for i in 0..numTagsIndex %}
  {{ content.field_admin_tags[i] }}
{% endfor %}

0

আপনি যদি অনুচ্ছেদের ক্ষেত্রের ভিতরে ক্ষেত্রের চারপাশে অতিরিক্ত মোড়ক স্থাপন করতে চান বা কোনও কারণে অনুচ্ছেদের ক্ষেত্রের নির্দিষ্ট ক্ষেত্রের মান প্রয়োজন হয় তবে আপনি নিম্নলিখিতটি করতে পারেন:

{% for key,value in node.paragraph_field_name.value %}

<div class="example-wrapper">
{{ content.paragraph_field_name[key]['#paragraph'].field_content.value }}
</div>

{% endfor %}

করে {{kint(content.paragraph_field_name[key])}}, আপনি দেখতে পাবেন যে ক্ষেত্রগুলি অ্যারের ['#parapara'] অংশের ভিতরে প্রবেশযোগ্য।

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