ฉันจะสร้างภูมิภาคที่กำหนดเองในธีมได้อย่างไร


58

ฉันต้องการเพิ่มพื้นที่ใหม่ซึ่งจะกว้างทั้งไซต์ อธิบายขั้นตอนการนำภูมิภาคใหม่นี้ไปใช้ในธีมของฉันถ้าเป็นไปได้ให้กำหนดขอบเขตสำหรับการเพิ่มภูมิภาคใหม่ที่กำหนดเอง


บล็อกรายละเอียด: goo.gl/kD3TZu
Suresh Kamrushi

คำตอบ:


68

คุณกำหนดภูมิภาคในไฟล์. info ของชุดรูปแบบของคุณ โปรดดู: โครงสร้างของไฟล์. info

จากนั้นคุณต้องใส่แท็กเทมเพลตที่เกี่ยวข้องในไฟล์ page.tpl.php ของคุณ

ตัวอย่างเช่นหากคุณกำหนดพื้นที่sidebarในไฟล์. info ของชุดรูปแบบของคุณคุณจะเพิ่ม: <?php print render($page['sidebar']); ?>ไปยังตำแหน่งที่เกี่ยวข้องใน page.tpl.php ของคุณ


6
หากธีมของคุณไม่มีไฟล์ page.tpl.php คุณสามารถคัดลอกค่าเริ่มต้นจากโมดูลระบบลงในธีมของคุณและแก้ไขสำเนานั้น
Mikey P

5
โอเมก้าไม่ต้องการส่วน page.tpl.php เพียงแค่ประกาศภูมิภาคใน. info และ CLEAR CACHES
Capi Etheriel

20

อีกจุดหนึ่ง: อย่าพลาดภูมิภาคที่ต้องการ!

regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom

เพิ่มเติมเกี่ยวกับเรื่องนี้สามารถพบได้ที่http://drupal.org/update/themes/6/7#closure

ในการชี้แจงเกี่ยวกับประเด็นนี้: หากคุณกำหนดภูมิภาคของคุณเองคุณต้องกำหนดทุกสิ่งที่คุณกำลังใช้รวมถึงพื้นที่ที่ต้องการ คุณไม่สามารถกำหนดภูมิภาคเพิ่มเติมได้: หากคุณกำหนดใด ๆ คุณจะต้องกำหนดพื้นที่ทั้งหมด


9

การสร้างพื้นที่สำหรับธีม Drupal 7 ไม่แตกต่างจากการสร้างพื้นที่สำหรับภูมิภาค Drupal 6 ความแตกต่างระหว่าง Drupal 7 และเวอร์ชั่นก่อนหน้านี้เป็นหลัก:

  • ภูมิภาคไม่ได้ถูกกำหนดโดยใช้mytheme_regions()ฟังก์ชั่นเหมือนที่เคยทำใน Drupal 5 แต่พวกมันถูกกำหนดไว้ใน mytheme.info โดยใช้regions[]คำสั่งซึ่งเป็นสิ่งที่ทำกับ Drupal 6 ด้วย
  • ขอบเขตถูกแสดงผลโดยใช้ฟังก์ชัน Drupal render()แทนการพิมพ์เนื้อหาของตัวแปร

ค่าเริ่มต้นของภูมิภาค Drupal 7 ได้แก่ :

regions[header] = Header
regions[highlighted] = Highlighted
regions[help] = Help
regions[content] = Content
regions[sidebar_first] = Left sidebar
regions[sidebar_second] = Right sidebar
regions[footer] = Footer

ชุดรูปแบบหลักของ Drupal 7 รวมพื้นที่ที่มีชื่อว่า 'ไฮไลต์' ซึ่งใช้จอแสดงผลเดียวกับพื้นที่ประกาศภารกิจใน Drupal 6; พวกเขายังรวมภูมิภาคที่ชื่อว่า 'ความช่วยเหลือ' โดยค่าเริ่มต้นจะมีเนื้อหาของ$helpตัวแปรที่ใช้โดย Drupal 6


4

ภูมิภาคธีมที่กำหนดไว้ในรูปแบบของคุณ .info ไฟล์ - ดูเอกสาร เพียงเพิ่มบรรทัดด้วยregions[corner] = Cornerเพื่อรับขอบเขตมุม

จากนั้นคุณต้องแก้ไขไฟล์ page.tpl.php และเพิ่ม<php print render($corner); ?>ตำแหน่งที่คุณต้องการให้พื้นที่แสดง หากธีมของคุณไม่มี page.tpl.php ให้คัดลอกจากธีมฐานหรือจากโมดูลระบบ

ข้อผิดพลาดทั่วไป:

  • หากไฟล์ theme.info ไม่ได้ระบุภูมิภาคไว้แสดงว่ากำลังใช้พื้นที่เริ่มต้นของ Drupal หากคุณต้องการเพิ่มคุณจะต้องประกาศภูมิภาคเริ่มต้นอีกครั้ง แน่นอนคุณสามารถลบภูมิภาคใดก็ได้ แต่โปรดสนับสนุนภูมิภาคที่ต้องการ ดูเอกสารอีกครั้ง

  • การเปลี่ยนแปลงในไฟล์. info หรือการเพิ่มไฟล์ใหม่ให้กับธีม (เช่น page.tpl.php) จะสังเกตเห็นหลังจากคุณล้างแคชเท่านั้น

  • Omega ธีมพื้นฐานที่ได้รับความนิยมมากไม่จำเป็นต้องเปลี่ยนแปลงใน page.tpl.php เพียงแค่ไฟล์. info แต่คุณจะต้องไปที่การตั้งค่าชุดรูปแบบใน UI และกำหนดภูมิภาคของคุณในโซน


นี่เป็นคำตอบที่ครอบคลุมถึงข้อผิดพลาดทั่วไป
Capi Etheriel

เป็นregions[content] = Contentภูมิภาคที่จำเป็นเท่านั้นใน D7 หรือไม่ drupal.org/node/171205#regionsดูเหมือนว่าจะบ่งบอกถึงนี้ แต่แล้วdrupal.org/node/171224กล่าวว่าภูมิภาคที่ต้องการมีcontent, help, page_topและpage_bottom
จิมกองพัน

ฉันไม่รู้ว่า Drupal ตรวจสอบทุกภูมิภาคหรือไม่ แต่contentมีความสำคัญอย่างยิ่ง helpได้รับการสนับสนุนโดย core (ไปยังข้อความช่วยเหลือเอาต์พุต) page_bottomอาจเป็นที่ที่ js ด้านล่างถูกพิมพ์และpage_topดูเหมือนว่าจะใช้สำหรับ navbars เช่นแถบเครื่องมือหลัก
Capi Etheriel

2

ทำตามขั้นตอนด้านล่างเพื่อสร้างภูมิภาคที่กำหนดเองในธีมของคุณ:

  1. ไปที่ไฟล์ theme.info ของคุณและเพิ่มบรรทัดนี้

    regions[machine_name_of_your_region] = Name of your region
  2. แม้ว่าคุณจะสามารถเรียกบล็อกพื้นที่ในเทมเพลตโหนดได้เช่นกัน แต่โดยทั่วไปคุณจะเพิ่มพื้นที่ในเทมเพลตหน้าของธีม โดยปกติจะเป็น page.tpl.php หรือหากคุณมีไฟล์เทมเพลตที่กำหนดเองสำหรับหน้าอื่นให้แก้ไขไฟล์เหล่านั้นด้วย พื้นที่ใหม่จะปรากฏเฉพาะในหน้าที่สร้างขึ้นรอบ ๆ เทมเพลตที่คุณเพิ่มพื้นที่ใหม่ วางที่ใดก็ได้ที่คุณต้องการให้ภูมิภาคใหม่ของคุณปรากฏ

    <?php if ($page['machine_name_of_your_region']): ?>
      <div id="sidebar-first" class="column sidebar"><div class="section">
      <?php print render($page['machine_name_of_your_region']); ?>
      </div></div> <!-- /.section, /#sidebar-first -->
     <?php endif; ?>
  3. การกำหนดค่า - ประสิทธิภาพ - ล้างแคชทั้งหมด


0

สร้างภูมิภาคใหม่ในธีม

คุณเพียงแค่ต้องกำหนดมันในสองไฟล์

  • Theme.info
  • Page.tpl.php

Theme.info

;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;

regions[navigation]      = 'Navigation'
regions[header]          = 'Top Bar'
regions[highlighted]     = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region

Page.tpl.php

ตอนนี้แสดงพื้นที่นี้

  <?php if ($page['new_region']): ?>
      <div class="new_region_class">
        <?php print render($page['new_region']); ?>
     </div>
  <?php endif; ?>

ตอนนี้ล้างแคชทั้งหมดไปเลยคุณมีภูมิภาคใหม่ในธีมของคุณ คุณสามารถดูได้ที่หน้ากำหนดค่าบล็อกของคุณ

สำหรับการเยี่ยมชมhttp://drupal.org/node/171205

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.