Làm cách nào để tạo các vùng tùy chỉnh trong một chủ đề?


58

Tôi muốn thêm một khu vực mới sẽ là trang web rộng. Mô tả quá trình đưa khu vực mới này vào chủ đề của tôi, nếu có thể, hãy khái quát hóa nó để thêm bất kỳ khu vực tùy chỉnh mới nào.


blog chi tiết: goo.gl/kD3TZu
Suresh Kamrushi

Câu trả lời:


68

Bạn xác định vùng trong tệp .info chủ đề của bạn. Xem: Cấu trúc của tệp .info

Sau đó, bạn cần đặt các thẻ mẫu có liên quan trong tệp page.tpl.php của bạn.

Vì vậy, ví dụ nếu bạn đã xác định vùng sidebartrong tệp .info chủ đề của mình, thì bạn sẽ thêm: <?php print render($page['sidebar']); ?>vào vị trí có liên quan trong page.tpl.php của bạn.


6
Nếu chủ đề của bạn không có tệp page.tpl.php, bạn có thể sao chép mặc định từ mô-đun hệ thống vào chủ đề của mình và sửa đổi bản sao đó.
Mikey P

5
Omega không cần phần page.tpl.php, chỉ cần khai báo vùng trong .info VÀ RAR RÀNG.
Capi Etheriel

20

Một điểm khác: Đừng bỏ lỡ các khu vực cần thiết!

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

Thông tin thêm về điều này có thể được tìm thấy tại http://drupal.org/update/theme/6/7#clenses .

Để làm rõ về điểm này: Nếu bạn xác định các khu vực của riêng mình, bạn cần xác định tất cả những gì bạn đang sử dụng, bao gồm cả những khu vực được yêu cầu. Nói cách khác, bạn không thể chỉ xác định các vùng bổ sung: Nếu bạn xác định bất kỳ, bạn phải xác định tất cả chúng.


9

Tạo vùng cho chủ đề Drupal 7 không khác với tạo vùng cho vùng Drupal 6; sự khác biệt giữa Drupal 7 và các phiên bản trước về cơ bản là:

  • Các khu vực không được xác định bằng cách sử dụng một mytheme_regions()chức năng như đã được thực hiện trong Drupal 5, nhưng chúng được xác định trong huyền thoại.info bằng cách sử dụng các regions[]chỉ thị, đó là những gì được thực hiện với chủ đề Drupal 6.
  • Các vùng được kết xuất bằng hàm Drupal render(), thay vì in nội dung của biến.

Các vùng Drupal 7 mặc định là các vùng sau:

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

Các chủ đề cốt lõi của Drupal 7 hiện bao gồm một khu vực có tên 'được tô sáng', sử dụng cùng màn hình với khu vực tuyên bố sứ mệnh trong Drupal 6; chúng cũng bao gồm một vùng có tên là 'trợ giúp', theo mặc định có cùng nội dung của $helpbiến được sử dụng bởi Drupal 6.


4

Các vùng chủ đề được xác định trong tệp .info chủ đề của bạn - xem tài liệu . Chỉ cần thêm một dòng với regions[corner] = Cornerđể có được một khu vực Góc.

Sau đó, bạn cần chỉnh sửa tệp page.tpl.php và thêm vào <php print render($corner); ?>nơi bạn muốn khu vực hiển thị. Nếu chủ đề của bạn không có page.tpl.php, hãy sao chép từ chủ đề cơ sở hoặc từ mô-đun hệ thống.

Những cạm bẫy phổ biến:

  • Nếu tệp theme.info không có vùng được khai báo, thì đó là sử dụng vùng mặc định của Drupal. Nếu bạn muốn thêm, bạn sẽ phải khai báo lại các vùng mặc định. Tất nhiên, bạn có thể xóa bất kỳ khu vực nào nhưng vui lòng hỗ trợ các khu vực cần thiết. Xem tài liệu một lần nữa.

  • Thay đổi tệp .info hoặc thêm tệp mới vào chủ đề (như page.tpl.php) sẽ chỉ được chú ý sau khi bạn xóa bộ nhớ cache.

  • Omega, một chủ đề cơ bản rất phổ biến, sẽ không cần bất kỳ thay đổi nào trong page.tpl.php, chỉ là tệp .info. Nhưng bạn sẽ phải truy cập cài đặt chủ đề trong Giao diện người dùng và gán vùng của bạn cho một vùng.


Đây là một gói các câu trả lời với những cạm bẫy phổ biến.
Capi Etheriel

regions[content] = Contentkhu vực duy nhất cần thiết trong D7? drupal.org/node/171205#regions dường như ngụ ý này, nhưng sau đó drupal.org/node/171224 nói rằng các khu vực cần thiết là content, help, page_toppage_bottom
Jim Garrison

Tôi không biết nếu Drupal kiểm tra bất kỳ khu vực nào, nhưng contentchắc chắn là rất quan trọng. helpđược hỗ trợ bởi lõi (để xuất thông báo trợ giúp), page_bottomcó lẽ là nơi js dưới cùng được in và page_topdường như được sử dụng cho các thanh điều hướng như thanh công cụ lõi.
Capi Etheriel

2

Thực hiện theo các bước dưới đây để tạo vùng tùy chỉnh trong chủ đề của bạn:

  1. Chuyển đến tập tin theme.info của bạn và thêm dòng này.

    regions[machine_name_of_your_region] = Name of your region
  2. Mặc dù bạn cũng có thể gọi các khối khu vực trong mẫu nút, nhưng bạn thường sẽ thêm khu vực vào mẫu trang của chủ đề. Đây thường là page.tpl.php hoặc nếu bạn có tệp mẫu tùy chỉnh cho các trang khác nhau, hãy chỉnh sửa cả những trang đó. Vùng mới sẽ chỉ xuất hiện trên các trang được tạo xung quanh mẫu bạn thêm vùng mới vào. Dán nó bất cứ nơi nào bạn muốn khu vực mới của bạn xuất hiện.

    <?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. Cấu hình - Hiệu suất - Xóa tất cả bộ nhớ cache


0

Tạo một khu vực mới trong chủ đề

Bạn chỉ cần xác định nó trong hai tập tin.

  • Theme.info
  • Trang.tpl.php

Theme.info

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

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

Trang.tpl.php

Bây giờ kết xuất vùng này

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

Bây giờ Xóa tất cả bộ nhớ cache, Ở đây bạn đi, bạn có một khu vực mới trong chủ đề của bạn. Bạn có thể nhìn thấy nó tại trang cấu hình khối của bạn.

Để biết thêm truy cập http://drupal.org/node/171205

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.