มีโมดูลที่อนุญาตให้ผู้ใช้วางบล็อกเดียวกันในหลายภูมิภาคหรือไม่? ด้วยวิธีนี้ฉันไม่ต้องทำบล็อกมุมมองเดิมสองครั้ง
มีโมดูลที่อนุญาตให้ผู้ใช้วางบล็อกเดียวกันในหลายภูมิภาคหรือไม่? ด้วยวิธีนี้ฉันไม่ต้องทำบล็อกมุมมองเดิมสองครั้ง
คำตอบ:
โมดูลMultiblockทำให้สิ่งนี้เป็นไปได้:
โมดูลบล็อกของ Drupal นั้นถูก จำกัด ด้วยข้อเท็จจริงที่ว่าบล็อกนั้นสามารถมีได้เพียงหนึ่งอินสแตนซ์เท่านั้น แต่ละบล็อกมีความสัมพันธ์แบบ 1: 1 กับการตั้งค่าภูมิภาคน้ำหนักการมองเห็น (และอื่น ๆ ) ซึ่งหมายความว่าเป็นไปไม่ได้ที่จะมีบล็อกในหลายภูมิภาคหรือมีบล็อกที่มีการตั้งค่าที่แตกต่างกันในหน้าต่างๆ โมดูล MultiBlock แก้ปัญหานี้ได้โดยอนุญาตให้คุณสร้างอินสแตนซ์บล็อกที่หลากหลายของบล็อกที่มีอยู่แล้ว
มันไม่ชัดเจนหากคุณต้องการใช้บล็อกเดียวกันมากกว่าหนึ่งครั้งในหน้าเดียวกันหรือวางในพื้นที่ต่าง ๆ ในหน้าต่างๆ ทั้งสองวิธีที่ผมจะแนะนำให้คุณใช้เวลาดูที่โมดูลบริบท
การใช้บริบทคุณสามารถวางบล็อกด้วยในภูมิภาคต่าง ๆ ในหน้าต่างๆ หรือคุณสามารถสร้าง 2 บริบทที่ใช้กับหน้า / s เดียวกันและวางบล็อกเดียวกันในภูมิภาคต่าง ๆ
แผงโมดูลยังทำให้ง่ายต่อการใช้กรณีหลายบล็อกเดียวกันบนหน้าเว็บ
หากคุณมีโมดูลที่กำหนดเองสำหรับไซต์แล้วคุณสามารถกำหนดบล็อกของคุณเองเพื่อทำซ้ำเนื้อหาของบล็อกที่มีอยู่ จากนั้นจะปรากฏสองครั้งในรายชื่อบล็อก
/* -------------------
custom blocks
----------------- */
/**
* Declare what blocks are provided by this module.
* Implements hook_block_info().
*/
function MYMODULE_block_info(){
$block['fibble_home'] = array(
'info' => t('fibble (home)'),
'cache' => DRUPAL_CACHE_PER_ROLE,
);
$block['fibble_members'] = array(
'info' => t('fibble (members)'),
'cache' => DRUPAL_CACHE_PER_ROLE,
);
return $block;
}
/**
* Define what our block is going to look like.
* Implements hook_block_view().
*/
function MYMODULE_block_view($block_key){
$block = array();
// tweets block to appear twice
if($block_key == 'fibble_home' || $block_key == 'fibble_members'){
//This is the title of the block.
$block['subject'] = t('Fibble');
$fblock = module_invoke('MODULE_ORIGINAL_BLOCK', 'block_view', 'ID_ORIGINAL_BLOCK');
$fcontent = render($fblock['content']);
$block['content'] = '<!-- content repeated by MYMODULE -->';
$block['content'] .= $fcontent;
}
return $block;
}
ใช้โมดูลMultiBlock
ไปที่โครงสร้าง -> บล็อก -> อินสแตนซ์ ระบุชื่ออินสแตนซ์ที่ไม่ซ้ำกันและเลือกประเภทบล็อกและบันทึก จากนั้นเปิดใช้งานบล็อกโดยกำหนดให้กับภูมิภาคที่คุณต้องการ
Beanโมดูลในขณะนี้นอกจากนี้ยังมีฟังก์ชั่นนี้ ไม่เพียง แต่สำหรับเอนทิตีบล็อกที่กำหนดเอง แต่ยังสำหรับบล็อกที่กำหนดใน hook_block ดูรุ่น dev และ submodule bean_all