আংশিক টেম্পলেট অন্তর্ভুক্ত করুন


19

আমি একটি কাস্টম থিম সহ ড্রুপাল 8 ব্যবহার করার চেষ্টা করছি, আমার প্রয়োজনীয়তার জন্য বড় কাঠামোর পার্থক্য রয়েছে আমার একটি পৃষ্ঠা - ফ্রন্ট.twig.html এবং একটি পৃষ্ঠা.twig.html, আমি ব্যবহৃত টেমপ্লেট অংশ তৈরি করতে চাই একটি সাধারণ সিমফনি 2 প্রকল্পে ফিরোজেন ওডার, উদাহরণস্বরূপ একটি পাদচরণ.চ.টি.এম.টিভিগ এবং একটি শিরোনাম। html.twig। এই টেম্পলেটগুলি একটি উপ-ডিরেক্টরি / অংশ / এর অধীনে সংরক্ষণ করা হয়।

তবে আমি যখন এই টেমপ্লেটগুলিকে স্বাভাবিক হিসাবে ডাকি তখন আমি কেবল টেম্পলেটটির নাম দিয়ে একটি স্ট্রিং পাই।

উদাহরণ স্বরূপ:

{# in page.html.twig or page--front.html.twig #}
{% include 'parts/footer.html.twig' %} 

ফাইলের নামটি স্ট্রিং হিসাবে ফিরিয়ে দেয়:

parts/footer.html.twig

ড্রুপাল 8 দিয়ে এটি করা সম্ভব?

উত্তর:


33

আপনি আপেক্ষিক পাথগুলি করতে পারবেন না, সমস্ত পাথ অবশ্যই ড্রুপাল রুট হতে হবে বা আপনার 'টেম্পলেট' ডিরেক্টরিতে নেমস্পিডের উপর ভিত্তি করে থাকতে হবে: https://www.drupal.org/node/2143557

আমি "ড্রুপাল রুট থেকে" এড়াতে এবং নেমস্পেসগুলি ব্যবহার করব, কমপক্ষে https://www.drupal.org/node/2291449 সমাধান না হওয়া পর্যন্ত ।

{% include '@mytheme/parts/footer.html.twig' %}

সম্পাদনা করুন: আপনি যদি লুপের জন্য বা আপনার অন্তর্ভুক্ত twigটেম্পলেটটিতে কিছু ভার পরীক্ষা করার জন্য অতিরিক্ত যুক্তিগুলি পাস করতে চান তবে আপনাকে এইভাবে লিখতে হবে:

{% include '@mytheme/includes/form-block.html.twig' with {dog: true} %}

সম্পাদনা: এখন যে https://www.drupal.org/node/2291449 প্রতিশ্রুতিবদ্ধ হয়েছে আপনি এটি করতে পারেন:

{% include 'footer.html.twig' %}

সহায়ক ব্যতিক্রমের পরিবর্তে আপনি কেন ফাইলটির নামটি স্ট্রিং হিসাবে দেখলেন তা https://www.drupal.org/node/2369981 দেখুন ।


includeমূল্যবোধ সম্পর্কে কি এবং পাস? ধরুন আমি লিঙ্কযুক্ত চিত্রটি এড়াতে নালকে অন্তর্ভুক্ত করতে image-formatterএবং পাস করতে চাই url
সৈয়দবাকআর

এই উত্তরে প্রদত্ত উদাহরণগুলি কার্যকর বলে মনে হচ্ছে না।
আর্নল্ডবার্ড

3
সচেতন থাকুন যে + স্ট্রিংয়ের @mythemeপথে সমাধান হয় । অন্য কথায়, ডিরেক্টরি থেকে সমাধান । mytheme/templates@mythememytheme/templates
ড্যানিয়েলস

@ ড্যানিয়েলস থেকে মন্তব্যটি আরও স্পষ্ট করতে। আপনার কাস্টম থিম নামকরণ করা হয় তাহলে mytheme এবং এটি এ অবস্থিত 'থিম / কাস্টম / mytheme' তারপর পল্লব নামস্থান @mythemeথেকে সমাধান করা 'থিম / কাস্টম / mytheme / টেমপ্লেট'@mytheme/fragments/footer.html.twigএটিতে অবস্থিত কোনও টেম্পলেট অন্তর্ভুক্ত করার অর্থ এটি 'থিম / কাস্টম / মাইথিম / টেম্পলেট / টুকরা / পাদচরণ / পাদচরণ / সমাধান করতে সক্ষম হবে'
00

15

থিম ডিরেক্টরিতে সম্পূর্ণ পথ ব্যবহার করুন। আপনি যদি নেমস্পেসটি ব্যবহার করেন তবে কোডটি অন্য কোনও সাইট বা থিমে আনলে আপনাকে এটিকে পরিবর্তন করতে হবে।

এই কাজ করা উচিত:

{% include directory ~ '/templates/parts/footer.html.twig' %}

সাব-থিমিং করার সময় এটি খুব সহজ। এটি আপনার পিতামাতার থিমে সেট করুন এবং তারপরে চাইল্ড থিমের টেম্পলেট ডিরেক্টরিতে একটি সংস্করণ রাখুন।
অ্যান্ড্রু কিলেন

এটি আমার পক্ষে কাজ করা একমাত্র উত্তর।
আর্নল্ডবার্ড

5

ফাইল উপস্থিত না থাকলে ফ্যালব্যাক তৈরি করতে টুইগের একটি অ্যারের ব্যবহার করা সম্ভব।

যেমন। যদি footer.html.twig উপলব্ধ না হয়, defaultfooter.html.twig ব্যবহার করা হবে।

{{ include([
  '@yourthemename/parts/footer.html.twig',
  '@yourthemename/parts/defaultfooter.html.twig'
]) }}
ফাইলের নামগুলিতে ভেরিয়েবলের ব্যবহারের সাথে এটি একত্রিত করুন এবং আপনি কোনও প্রকার প্রসঙ্গের উপর নির্ভর করে বিভিন্ন ফাইল অন্তর্ভুক্ত করতে পারেন।

এনবি: আমি এখনও চেষ্টা করছি এটি সেরা অনুশীলন কিনা।


5

নোট আপনি withকীওয়ার্ড পরে ভেরিয়েবল পাস করতে পারেন :

{# template.html will have access to the variables from the current context and the additional ones provided #}
{% include 'template.html' with {'foo': 'bar'} %}

{% set vars = {'foo': 'bar'} %}
{% include 'template.html' with vars %}

টুইগ ডকুমেন্টেশন দেখুন http://twig.sensiolabs.org/doc/tags/include.html


4

এখন থিম রেজিস্ট্রি ভিত্তিতে টুইগ টেম্পলেট উত্তরাধিকার যুক্ত করুন, টুইগ লোডার যুক্ত করার প্রতিশ্রুতিবদ্ধ করা সক্ষম করুন , আপনি নিম্নলিখিত লাইনটি ব্যবহার করতে পারেন

{% include 'footer.html.twig' %}

1
এটি কাজ করে না।
আর্নল্ডবার্ড

1

দ্রুপাল 8 এর জন্য

আপনি যখন কোনও {% include 'FILE_NAME.html.twig' %}দ্রুপাল করবেন তখন থিমটিতে একটি দ্বিধা ফাইল অন্তর্ভুক্ত করে আশা করে যে আপনি ফাইলটি আপনার বর্তমান থিম ডিরেক্টরিতে উপস্থিত থাকবেন। শুধু এটি সেখানে রাখুন এবং এটি কাজ করে যাচ্ছে।

আপনার মডিউলটিতে একটি দ্বিধা ফাইল অন্তর্ভুক্ত

আপনি যদি এটি একটি মডুলে যুক্ত করতে চান তবে আপনাকে এটি থিম ফাংশনে ঘোষণা করতে হবে। আপনার .মডিউল ফাইলটিতে কেবল নিম্নলিখিতটি যুক্ত করুন:

<?php function YOUR_MODULE_NAME_theme($existing, $type, $theme, $path) {   
   'FILE_NAME' => [
      'variables' => [
      ],
      'template' => 'FILE_NAME',
    ], ?>

তারপরে আপনার টুইগ ফাইলটি YOUR_MODULE / টেম্পলেট / FILE_NAME.html.twig এ রাখুন


এটি পথ সম্পর্কে ভুল তথ্য। থিম হুক সহ মডিউল থেকে ফাইল অন্তর্ভুক্ত করার জন্য আপনার আরও একটি উপায় দরকার: @ {অন্তর্ভুক্ত করুন ('@ আপনারমডিউডনাম / টুইগফিলনাম। Html.twig', {var1: var1Val, var2: var2Val})}} ভুলে যাবেন না যে টেম্পলেট ফাইলগুলি অবশ্যই 'আপনারমডিউলনেম / টেম্পলেট /' এ থাকুন।
ভার্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.