2011-11-16 26 views

Trả lời

8

Bạn có thể sử dụng hook_custom_theme():

function mymodule_custom_theme() { 
    if ($some_condition_is_true) { 
    return 'my_theme'; 
    } 
} 

Nếu bạn cần phải căn cứ lựa chọn của bạn trên con đường thì cách tốt nhất để đi là để ghi đè theme callback cho các mục bộ định tuyến menu cụ thể. See here for an example.

1

Mặc dù tôi không chắc chắn điều kiện khi bạn muốn thay đổi chủ đề, nhưng nếu bạn muốn thay đổi chủ đề dựa trên url, loại nút, thuật ngữ phân loại, trang xem, v.v ... thì bạn có thể xử lý bằng cách sử dụng ngữ cảnh mô-đun sẽ làm điều này cho bạn và bạn thậm chí không phải viết một dòng mã. Check this out: http://drupal.org/project/context

Đây là một module rất hữu ích và có tích hợp tốt đẹp với module hầu hết các danh nổi tiếng như tấm, chủ đề omega, đồng bằng, vv

0

Drupal biến theme_default là một trong những bạn phải thiết lập để chuyển chủ đề sử dụng chức năng variable_set.

variable_set('theme_default', 'your_theme_name'); 

Bạn có thể thay đổi chủ đề mặc định thông qua hook_update_N nếu bạn đã cài đặt mô-đun tùy chỉnh. Ngoài ra, hãy đảm bảo bạn gọi mã theo số hook_install để chạy mã trong suốt thời gian cài đặt trong trường hợp bạn muốn chia sẻ mô-đun của mình với người khác và muốn thay đổi chủ đề đang hoạt động trong thời gian cài đặt.

/** 
* Implements hook_update_N(). 
*/ 
function mymodule_update_7000() { 
    $theme_list = array(
    'bootstrap', 
    'mytheme', 
    'shiny', 
); 
    theme_enable($theme_list); 
    $theme_default = 'mytheme'; 
    // The below code would change the default active theme to 'mytheme' 
    variable_set('theme_default', $theme_default); 
    $admin_theme = 'shiny'; 
    variable_set('admin_theme', $admin_theme); 
} 
0

Trong khi variable_set() sẽ làm việc cho hook_install() hoặc hook_update_N(), bạn không nên sử dụng nó trong một mô-đun. Gọi variable_set() làm trống bảng cache_bootstrap, đây là một hit hiệu suất nghiêm trọng trên các trang web bận.

Tôi muốn giới thiệu ThemeKey module nếu bạn không cần toàn bộ sức mạnh của Ngữ cảnh. Tuy nhiên, ngữ cảnh có thể dễ dàng xuất ra để tạo phiên bản, trong khi theo tôi biết thì không có cách nào để xuất các quy tắc ThemeKey.

Các vấn đề liên quan