আমি আমার কোডটিতে যে ব্লকগুলি রেন্ডার করি তার প্রসঙ্গ লিঙ্কগুলি কীভাবে রেন্ডার করব?


11

আমি একটি ব্লক বিষয় এবং সন্তুষ্ট লোড module_invoke()এবং ব্যবহৃত render()তাদের রেন্ডারিং জন্য। আমি এই ব্লকের জন্য প্রাসঙ্গিক লিঙ্কগুলি ব্যবহার করতে চাই। আমি কীভাবে সেগুলি রেন্ডার করতে পারি?

এই কোডটি আমি পৃষ্ঠাটি ইনসড ব্যবহার করছি - ফ্রন্ট.tpl.php টেম্পলেট।

$block = module_invoke('block', 'block_view', '4);
print render($block);

পরিবর্তে আমার কী কোড ব্যবহার করা উচিত?

উত্তর:


16
$block = block_load('module', 'delta');
print drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));

খুব খারাপ আমাদের এটি অর্জনের জন্য ব্লক মডিউল (_ * ()) থেকে ব্যক্তিগত ফাংশন ব্যবহার করতে হবে।


সুতরাং ওপিএস উদাহরণের জন্য এটি হ'ল: $ ব্লক = ব্লক_লোড ('ব্লক', '4');
ক্যামেরন

12

বার্টের উত্তর একটি কঠোর মান সতর্কতা দেবে (পিএইচপি 5.4 এ ডিফল্টরূপে সক্ষম)। এটি ঠিক করতে কেবল উপস্থাপনযোগ্য অ্যারেটির জন্য একটি মধ্যবর্তী ভেরিয়েবল ব্যবহার করুন:

$block = block_load('module', 'delta');
$renderable_array = _block_get_renderable_array(_block_render_blocks(array($block)));
print drupal_render($renderable_array);

সতর্কতা সংঘটিত হওয়ার কারণ হ'ল drupal_renderফাংশনটি তার পরামিতিটি একটি রেফারেন্স হিসাবে প্রত্যাশা করে। এটিতে স্বাক্ষর রয়েছে drupal_render(&$elements)। আরও তথ্যের জন্য এই একই প্রশ্নের উত্তর দেখুন ।


2

প্রাসঙ্গিক লিঙ্কগুলি কার্যকর এবং বাস্তবায়নের পক্ষে সত্যই সহজ। আপনার ব্যবহারের ক্ষেত্রে আপনার প্রয়োজন hook_block_view_alter()অনুসারে # কনটেক্সটুয়াল_লিঙ্কস আইটেমটি পরিবর্তন করতে আপনাকে প্রয়োগ করতে হবে। এই উল্লেখগুলি আপনাকে সাহায্য করবে:

জিএল :)


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