Làm thế nào để bạn chủ đề biểu mẫu tạo / chỉnh sửa của một loại nội dung trong Drupal 7?


7

Giống như nó nói - Tôi đã có một loại nội dung D7 có hình thức chỉnh sửa cần phải theo chủ đề. Tôi đã làm điều này mọi lúc trong D6 bằng cách đăng ký các hàm chủ đề trong template.php và viết các hàm theo chủ đề liên quan, nhưng mọi thứ dường như đã thay đổi trong D7, đặc biệt là về những gì đi vào template.php hoặc nếu D7 đã chuyển sang sử dụng .tpl tập tin .php cho việc này, hoặc bất cứ điều gì. Có lời khuyên nào ngoài đó không?


Câu trả lời:


4

Theo trang sổ tay về các hình thức nút theo chủ đề trong Drupal 7, bạn thực sự sẽ thực hiện các thay đổi trong tệp mẫu .tpl.php.

Điều đó nói rằng, chúng tôi thường thấy việc sử dụng Field GroupDisplay Suite dễ dàng hơn . Cột biểu mẫu nút là một tùy chọn khác.


Gợi ý tốt; cảm ơn. Tôi cũng sẽ kiểm tra các mô-đun bạn đề cập.
Jim Miller

Câu trả lời chính xác. Tôi đã sử dụng Display Suite với một số thành công nhưng nếu bạn thấy thiếu thứ gì đó, bạn có thể tắt nó đi và sau đó phân tích vấn đề là gì. Và nếu bạn đang xem xét việc tùy chỉnh biểu mẫu để xuất các trường nhất định, bạn cũng có thể xem xét drupal.org/project/field-conditable-state để hiển thị các trường nhất định tùy thuộc vào giá trị của các trường khác.
trị liệu

Đồng thời xem xét: drupal.org/project/rules_forms
trị liệu

20

Bạn có hai lựa chọn.

tùy chọn 1: sử dụng template.php của chủ đề quản trị viên của bạn

  • Chọn đúng chủ đề để tùy chỉnh. Hãy nhớ rằng theo mặc định, drupal 7 sử dụng một chủ đề khác để quản trị và có một cài đặt dưới quyền quản trị / ngoại hình cho biết chủ đề quản trị viên của bạn là gì và nếu chỉnh sửa nội dung nên sử dụng chủ đề quản trị viên. nhìn vào cài đặt này và tìm hiểu xem bạn muốn tùy chỉnh chủ đề chính hoặc chủ đề quản trị của bạn.
  • khi chủ đề đã được xác định, nếu chủ đề đó là chủ đề cốt lõi và không phải là chủ đề nằm trong trang web / tất cả / chủ đề hoặc trang web / Something.com / chủ đề, bạn có thể muốn tạo chủ đề cơ bản thay vì thay đổi chủ đề hiện có. đó là một ý tưởng tồi để thay đổi một chủ đề cốt lõi. Ngay cả khi đó là một chủ đề được tải xuống, sẽ rất hợp lý khi tạo một subtheme để bạn có thể tiếp tục nâng cấp chủ đề đã tải xuống khi các phiên bản mới xuất hiện.
  • (tùy chọn) để tạo một subtheme. giả sử, chủ đề quản trị viên của bạn là bảy và nó cũng đang được sử dụng để chỉnh sửa nội dung, chỉ cần tạo một thư mục có tên my_seven trong các trang web / all / Themes. tiếp theo thêm một my_seven.info dưới mới được tạo ra my_seven thư mục với các nội dung sau

    chủ đề cơ sở = bảy tên = Mô tả Bảy của tôi = Chủ đề quản trị chiều rộng đơn giản, không có cột, đơn giản của tôi (con của Bảy).

  • Bây giờ thêm một tệp có tên template.php trong cùng thư mục với các nội dung sau. xin lưu ý rằng id mẫu được lấy chính xác từ tên loại máy nội dung của bạn. tuy nhiên tên mẫu có thể là bất cứ thứ gì bạn muốn nhưng dạng -node trông giống như một quy ước tốt để tuân theo.

    <?php 
    
    function my_seven_theme() {
      return array(
        '<my_content_machinename>_node_form' => array(
            'arguments' => array('form' => NULL),
            'template' => '<my_content_machinename or anything else>-node-form',
            'render element' => 'form',
        ),
      );
    }
  • bây giờ hãy tạo tệp <content_type_machinename> -node-form.tpl.php với các nội dung sau để kiểm tra xem mọi thứ có hoạt động không .. khi bạn thấy biểu mẫu tùy chỉnh, chỉ cần thay đổi tpl.php thành nội dung trái tim của bạn. chọn một trường tùy chỉnh khác với tiêu đề để chắc chắn rằng nó hoạt động tốt .. lý tưởng nhất là chọn một cái gì đó không phải là một trường văn bản đơn giản. một loại trường tham chiếu hạn sẽ là một ứng cử viên tốt để đảm bảo rằng chương trình con của bạn hoạt động tốt.

    <div>   
        <?php print drupal_render($form['title']); ?>
    </div>
    <div>
        <?php print drupal_render($form['field_<my_field1>']); ?>   
    </div>
  • xóa bộ nhớ cache đăng ký chủ đề của bạn (thực sự không bắt buộc lần đầu tiên một chủ đề được sử dụng nhưng dù sao đi nữa)

  • đặt subtheme mới làm chủ đề quản trị bằng trang quản trị / giao diện.
  • chỉnh sửa nội dung hoặc tạo nội dung mới và bạn sẽ thấy biểu mẫu đã sửa đổi của mình.

tùy chọn 2: sử dụng mô-đun drupal của riêng bạn để tùy chỉnh biểu mẫu

  • tạo một thư mục mới gọi là custom_content_forms trong trang web / all / mô-đun
  • tạo tệp custom_content_forms.info với các nội dung sau

    name = My Custom Content Forms
    description = A trivial module to customize my content entry forms such as smartphone
    core = 7.x
  • tạo một custom_content_forms.module với nội dung sau

    <?php
    
    function custom_content_forms_theme() {
        return array(
            '<contenttype_machine_name>_node_form' => array(
                'template' => '<contenttype_machine_name>-node-form',
                    'render element' => 'form',
            ),
        );
    }
  • bây giờ hãy tạo tệp <content_type_machinename> -node-form.tpl.php với các nội dung sau để kiểm tra xem mọi thứ có hoạt động không .. khi bạn thấy biểu mẫu tùy chỉnh, chỉ cần thay đổi tpl.php thành nội dung trái tim của bạn. chọn một trường tùy chỉnh khác với tiêu đề để chắc chắn rằng nó hoạt động tốt .. lý tưởng nhất là chọn một cái gì đó không phải là một trường văn bản đơn giản. một loại trường tham chiếu hạn sẽ là một ứng cử viên tốt để đảm bảo rằng chương trình con của bạn hoạt động tốt.

    <div>   
        <?php print drupal_render($form['title']); ?>
    </div>
    <div>
        <?php print drupal_render($form['field_<my_field1>']); ?>   
    </div>
  • đi đến quản trị và kích hoạt mô-đun mới và bạn sẽ thấy biểu mẫu tùy chỉnh của mình khi bạn thêm hoặc chỉnh sửa nội dung của loại mục tiêu.

LƯU Ý: Nếu bạn tùy chỉnh bằng cả hai cơ chế, drupal sẽ thích chủ đề hơn mô-đun.

EDIT: ở trên sẽ chỉ sản xuất các lĩnh vực. bạn sẽ không nhận được menu cài đặt nút và các nút gửi và xem trước theo mặc định. nếu bạn chỉ cần thêm một

<?php print kpr($form); ?>

trên trang (mô-đun devel cần được bật để kpr hoạt động) để tạo ra kết xuất của mảng $ Forms . Bạn sẽ thấy rằng bạn có thể có được những điều này trên trang biểu mẫu của mình khá dễ dàng bằng cách thêm phần sau vào tpl.php

<div><?php print drupal_render($form['additional_settings']); ?></div>
<div><?php print drupal_render($form['actions']); ?></div>

+1 câu trả lời tuyệt vời - Tôi sẽ tự mình sử dụng nó. Tôi cũng sẽ mở rộng nó để điền trước một số trường dựa trên URL sẽ đưa tôi đến trang.
trị liệu

Làm thế nào để điều này xử lý các trường có nhiều giá trị - tức là khả năng thêm nhiều loại trường nhất định, tôi đã sử dụng <?php print drupal_render($form['field_<my_field1>']); ?>cho một trường có nút 'thêm một mục khác' nhưng khi nhấp vào nút, trường mới không được hiển thị.
trị liệu

Tôi đã giải thích sâu hơn về nhận xét cuối cùng của mình bằng cách đặt câu hỏi mới tại đây: drupal.stackexchange.com/questions/85975/ chủ đề
trị liệu

2
khi xây dựng biểu mẫu, như câu trả lời ở trên mô tả, bạn cũng phải đảm bảo rằng bạn gọi hàm drupal_render_children($form);ở cuối mã của bạn - theo themery.com/dgd7/advified-theming/forms/with-temsheet
trị liệu

Tôi đã làm theo tùy chọn thứ hai để sửa đổi mẫu cho biểu mẫu tạo nội dung tùy chỉnh, nhưng sau khi gửi biểu mẫu, không có gì xảy ra. Nội dung nút không được chèn và biểu mẫu tải lại.
shasi kanth

1

Để thay đổi hình thức nút từ giao diện Quản trị viên, bạn có thể sử dụng:

Bộ hiển thị - http://drupal.org/project/ds

Nhóm trường - http://drupal.org/project/field_group

Các yếu tố có thể kết xuất - http://drupal.org/project/rel

Kích hoạt các mô-đun sau: Display Suite, Forms Suite Forms, Display Suite Extras, Field Group, Renderable Elements

Đặt cài đặt Phần tử kết xuất bằng cách truy cập trang cài đặt tại admin / architecture / rel / config và đảm bảo hộp kiểm "Bật đăng ký biểu mẫu" được chọn.

Bây giờ, hãy chuyển đến biểu mẫu "Quản lý trường" của một trong các loại nội dung của bạn. Nhấp vào "Quản lý hiển thị biểu mẫu" ở đầu trang để đăng ký biểu mẫu với Phần tử kết xuất để chọn trường nào sẽ bật. Khi lưu biểu mẫu này, bạn sẽ có thể quản lý hiển thị TẤT CẢ các trường trên loại nội dung của mình bằng Giao diện người dùng Display Suite tiêu chuẩn.

nguồn: http://getlevelten.com/blog/ian-whitcomb/drupal-form-layouts-renderable-elements

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.