আমি কীভাবে প্রোগ্রামিয়ালি কোনও ভিউ ব্লক দেখাব?


32

আমি একটি ভিউ ব্লক তৈরি করেছি, যার মেশিনের নাম "সংবাদ"।

আমি কীভাবে এটি ব্যবহার করে module_invoke()এবং দেখার मशीनটির নাম ব্যবহার করব ?

উত্তর:


62

ব্যবহার views_embed_view():

echo views_embed_view('view_machine_name', 'block_1');

আপনি ট্যাবটি ক্লিক করে প্রদর্শনটির নামটি খুঁজে পেতে এবং আপনার ব্রাউজারের ঠিকানা বারে এর নামটি পরীক্ষা #views-tab-block_1করতে পারেন : আপনাকে দেয় block_1


ড্রুপাল 8 সম্পর্কে কী? আপনি কি জানেন যে এটি ড্রুপাল 8 এ কীভাবে কাজ করে?
শেকুফহ

ড্রুপাল 8-এর জন্য আমরা টুইগ টুইক এবং এই বাক্য {{ drupal_view('view_machine_name', 'block_1') }}
গঠনটি

21

আপনি যদি ভিউ ব্যবহারের জন্য কোনও প্যারামিটারটি পাস করতে চান:

echo views_embed_view('view_machine_name', 'block_1', $param);

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

echo views_embed_view('view_machine_name', 'block_1', $node->nid);

বা:

echo views_embed_view('view_machine_name', 'block_1', $nid, $uid);

ড্রুপাল 8 সম্পর্কে কী? আপনি কি জানেন যে এটি ড্রুপাল 8 এ কীভাবে কাজ করে?
শেকুফহ

@ শেকোফেহ, ডকুমেন্টেশন অনুসারে ( api.drupal.org/api/drupal/core%21modules%21views2121views.module/… ) ড্রুপাল ৮-তে একই কাজ করা উচিত? আপনি দয়া করে চেষ্টা করে আমাদের বলতে পারেন?
পিটার লোজোভিটস্কি

না, এটি সবেমাত্র অ্যারে দেয়
শেকুফেহ

8

টস্টিনির উত্তর বেশিরভাগ ক্ষেত্রেই সঠিক। তবে আপনি যদি ভিউ শিরোনামটি অন্তর্ভুক্ত করতে চান তবে এটি কিছুটা কুরুচিপূর্ণ।

views_embed_view()ডকুমেন্টেশন থেকে :

মনে রাখবেন যে এই ফাংশনটি দর্শনটির শিরোনাম প্রদর্শন করে না। আপনি যে কাজ করতে চান, আপনি দৃশ্য লোড, প্রিভিউ পেয়ে এবং তারপর বুঝিয়ে, কি এই ফাংশন নিজে করে কি প্রয়োজন হবে $view->get_title()

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

$name = 'view_machine_name';
$display_id = 'block_1';
$view = views_get_view($name);
if (!$view || !$view->access($display_id)) {
  return;
}
$view_content = $view->preview($display_id);
$title = $view->get_title();

আপডেট করা হয়েছে : @ রজোস্নো উল্লেখ করেছেন যে ডক্সগুলি আপনাকে কল করার আগে অবশ্যই পূর্বরূপ পেতে হবে get_title()তাই আমি এই দুটি লাইনের চারপাশে উল্টিয়েছি।


ভাল বন্ধু আমার বন্ধু।
স্টেফগোসেলিন

1

এটি আমার জন্য কাজ করেছে:

$view = views_get_view('view_machine_name');
$view->set_display('Master');
$view->get_title();
$response = $view->preview('You_Block_id');

// এবং এটি এইচটিএমএল এর মত // বলা

<div class="col-md-4 col-sm-6">
<div class="blocksOuterWrapper companyNewsWrapper">
'.$response.'
</div>
</div>


0

তোস্তিনির জবাবটিও তৈরি করুন:

যদি ভিউটির কোনও ফলাফল না থাকে তবে আপনি যদি কোনও এইচটিএমএল দেখাতে চান না। এছাড়াও, একটি শিরোনাম যুক্ত করুন, তবে কেবল ফলাফল রয়েছে।

if (array_filter(views_get_view_result('view_machine_name', 'block_1'))) {
    print '<h2 class="my-view-block-title">Special Title</h2>';
    print views_embed_view('view_machine_name', 'block_1');
}

0

নিম্নলিখিত কোড দ্বারা দর্শনগুলি রেন্ডার করার পরিবর্তে আপনি আপনার ব্লকটি রেন্ডার করতে পারেন।

<?php
 $block = block_load($module, $delta);
 $render_array = _block_get_renderable_array(_block_render_blocks(array($block)));
 $output = render($render_array);
 print $output;
?>

0

আমার নিজের অভিজ্ঞতা থেকে, আপনি নীচের মত একটি ফাংশন সহ একটি দর্শন শিরোনাম বা সামগ্রীতে একটি পথ রূপান্তর করতে পারেন।

<?php
function view_path_to_title($path)
{
  // only if your path is a URL alias
  $sql = "SELECT src FROM {url_alias} WHERE dst = '%s'";
  $src = db_result(db_query($sql, $path));

  // if you do not use URL aliases, you probably use $path here instead of $src
  $menu_item = menu_get_item($src);

  // make sure it worked as expected
  if(!empty($menu_item)
  && $menu_item["page_callback"] == "views_page"
  && count($menu_item["page_arguments"]) >= 2)
  {
    $args = $menu_item["page_arguments"];
    $view = views_get_view($args[0]);
  }
  else
  {
    $view = null;
  }

  if ($view)
  {
    // just loading a view is not quite enough, we have to setup the
    // arguments, including the display, and the "execute" the view
    $view->set_display($args[1]);
    array_shift($args); // view name
    array_shift($args); // display name
    $view->set_arguments($args);
    $view->execute();
    $title = $view->get_title();
    if($title)
    {
      return $title;
    }
  }

  // some "random" default
  return $path;
}

ভিউ রেন্ডার করতে, $view->render()পরিবর্তে ব্যবহার করুন $view->get_title()

নিশ্চিতভাবেই, যতক্ষণ না আমি যথাযথভাবে ফোন করেছি $view->execute(), কিছুই ঠিক মতো কাজ করে নি। আমি রিটার্ন মান হিসাবে খালি স্ট্রিং (সম্ভবত নাল) পেতাম।

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