কিভাবে একটি নির্দিষ্ট নোডে একটি ভিউ এম্বেড করবেন?


13

আমি একটি নির্দিষ্ট নোডে একটি ভিউ এম্বেড করার চেষ্টা করি। আমি ড্রুপাল 7 এবং পিএইচপি-টেম্পলেটগুলির সাহায্যে এটি করার টিউটোরিয়াল পেয়েছি:

<?php print views_embed_view('view_name'); ?>

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

ড্রুপাল 8 উপায়ে এটি কীভাবে করা যায় তার কোনও ইঙ্গিত / সমাধান?

উত্তর:


19

টুইগ ভিউ এম্বেড

এই মডিউলটি একটি দ্বিধা ফাংশন সহ ভিউ এম্বেড করতে দেয়।

{{ views_embed_view('view_name', 'view_id') }}

উপরোক্ত মডিউলটির পক্ষে অবমূল্যায়ন করা হয়েছিল

টুইগ টুইট

টুইগ টুইকের মডিউলটি কিছু কার্যকর ফাংশন এবং ফিল্টারগুলির সাথে একটি টুইগ এক্সটেনশন সরবরাহ করে যা বিকাশকারীর অভিজ্ঞতা উন্নত করতে পারে।

উদা: <dd>{{ drupal_view('view_name', 'view_machine_name') }}</dd>

আপনি এখানে ওভার খুঁজে পেতে পারেনview_machine_name


@ টিএমইএসপি্লাইনটার আপনাকে কেবল একটি মাথা তুলে দিচ্ছে।
এসএসইউইট

কখন থেকে? সংস্করণ?
বিশাল কুমার সাহু

1
আমার উত্তর পোস্ট হওয়ার পরে @ વિશালকুমারসাহু, 18 ই মার্চ 16। আমি মনে করি মডিউলটি এখনও কাজ করে, এটি ঠিক যে এটি আর বজায় রাখা হয় না বা আর কোনও বিকাশ লাভ করে না।
31:37

একেবারে নিখুঁত। এটি দুর্দান্ত কাজ করে এবং আমি এটির সাথে ভাল অভিজ্ঞতা অর্জন করছি। ধন্যবাদ
বিশাল কুমার সাহু

টুইগ টুইট! ভাল মডিউল
হরিশ ST

5

এটি আমার জন্য ক্লাসির দ্রুপাল 8 বিটা 12 সাব-থিমে এইভাবে কাজ করেছে।

Your_theme.info.theme ফাইলে

function stjameskidsclub_preprocess_node(&$variables){
  $stuff  = views_embed_view('policy_documents', 'embed_1', 28);
  $variables["my_view"] = \Drupal::service('renderer')->renderRoot($stuff);
}  

আমি নোড। Html.twig অনুলিপি করেছি এবং নিবন্ধ ট্যাগগুলি (বা আপনি যে অঞ্চলটি প্রতিস্থাপন করতে চান) একটি টুইগ ব্লক দিয়ে ঘিরে ফেলেছি। আমি এটি / টেমপ্লেট / সামগ্রী ফোল্ডারে রেখেছি।

{% block replace_area %}
  <article{{ attributes.addClass(classes) }}>

    ...

  </article>  
{% endblock replace_area %}

তারপরে আমি নীচের কোডটির সাথে / টেমপ্লেট / সামগ্রী ফোল্ডারে একটি নোড তৈরি করেছি - 2.html.twig (পছন্দসই নোডের সাথে 2 প্রতিস্থাপন করুন)।

{% extends "node.html.twig" %}

{% block replace_page %}
  {{ my_view }}
{% endblock %}

4

আপনি যে সমস্যার সাথে প্রথম লড়াই করছেন তা হ'ল নোডের মতো রেন্ডার করা সত্তাগুলি এখন ডিফল্টরূপে ক্যাশে হয়, সুতরাং হুক_নোড_ভিউ () কেবল একবার ক্যাশে সাফ করার পরে / সেই নোডটি সংরক্ষণ করার পরে ডাকা হয়।

তবে এটি অক্ষম করা মোটামুটি সহজ, সেটিংস.লোকাল.এফপি দেখুন।

তারপরে, দৃশ্যের আউটপুটটি $ বিল্ডে স্থাপন করা মোটামুটি সহজ এবং x.x এর মতো কম-বেশি কাজ করে। এম্বেড ফাংশনটি ব্যবহার করার পরিবর্তে, $ ভিউজ = ভিউ :: গেট ভিউ () এবং তারপরে $ দর্শন-> বিল্ডরেন্ডারেবল () ব্যবহার করে বিবেচনা করুন

দুটি টিপস:


এই দুর্দান্ত উত্তরের জন্য প্রথমে ধন্যবাদ। ওয়েল আমি "সক্ষম" করেছি settings.local.phpএবং সমস্ত ক্যাশে সাফ করে দিয়েছি । কিন্তু আমার হুক themename_node_view()মধ্যে themename.themeএখনও বলা হয় না পায়। কেন এই ঘটনা হতে পারে আপনার কোনও ধারণা আছে?
টিআইএমএসপ্লেটার

1
সেটিংস.এফপি-তে একটি স্নিপেট রয়েছে যা আপনাকে অসুবিধায়িত করতে হবে (শেষে)। সেটিংস.লোকাল.এফপি লোড হয়েছে কিনা তা নিশ্চিত করতে, অবৈধ পিএইচপি যুক্ত করুন যা মারাত্মক ত্রুটির ফলস্বরূপ। যদি আপনার সাইটটি ব্যর্থ না হয় তবে ফাইলটি লোড হবে না।
বারদির

2

বার্ডির যেমন দেখছেন- > বিল্ডরেেন্ডেবলের জন্য যা ইঙ্গিত করেছে আপনি যা খুঁজছেন তা কিন্তু মডিউলটিতে আরও কিছু প্রসঙ্গ দেওয়ার জন্য আপনাকে নিম্নলিখিতগুলি করতে হবে।

//use core libraries
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;

//use views class
use \Drupal\views\Views;

function hook_node_view(&$build, $node, $display, $view_mode){

 $thisView = Views::getView('view_name');

 $build['arbitrary_render_array_key_here'] = $thisView->buildRenderable('block_1',array($your_arguments));

}

তারপরে আপনার পৃষ্ঠার টেমপ্লেটে আপনি এটি দিয়ে অ্যাক্সেস করতে পারবেন

{{ page.content.theme_name_content }}

1
এই সমস্তগুলি ড্রুপাল in-এ একক লাইনার ছিল Interest আকর্ষণীয়।
WM

0

দর্শনগুলির মধ্যে, আপনি আপনার প্রাসঙ্গিক ডেটা দিয়ে একটি ব্লক তৈরি করতে পারেন।

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

চিয়ার্স!


আপনার উত্তরের জন্য Thx :-)। তবে তারপরে আমাকে তখন প্রতিটি ক্ষেত্রে একটি সামগ্রীর ক্ষেত্র তৈরি করতে হবে। সুতরাং আমি যদি প্রথম পাঠ্যটি পছন্দ করি তবে তারপরে দেখুন এবং তারপরে আবার পাঠ্য। অথবা যদি আমি প্রথম পাঠ্যটি পছন্দ করতে চাই এবং তারপরে দৃশ্যটি দেখতে পারি বা প্রথমে দেখুন এবং তারপরে পাঠ্য। তারপরে আমাকে 3 টি আলাদা সামগ্রী সামগ্রী তৈরি করতে হবে যা আমি নির্দিষ্ট নোড টিমপ্লিটগুলিতে রেন্ডার করি। আমার views_embed_view()কাছে ধারণাটি অনেক সহজ এবং পরিচ্ছন্ন।
টিআইএমএসপ্লেটার

0

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

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