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


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.