5.3 主题设置(3)选项说明 Theme setting(III)-- custom theme setting
自定义主题设置选项的方法是在主题文件夹下创建theme-setting.php文件,并添加以下代码:
<?php function themename_form_system_theme_settings_alter(&$form, &$form_state) { $form['theme_settings']['your_option'] = array( '#type' => 'checkbox', '#title' => t('Your Option'), '#default_value' => theme_get_setting('your_option'), ); }
-['theme_settings'] 是用来为选项分组的,一般可以省略。但是如果不省略,你就能把自定义的主题选项和已有的默认选项遍在一个组中。
-[‘your_option'] 是新选项的名称
-#type 是表单类型
-#title 是选项标题/标签
-#default_value 默认值
在这里我们将 #default_value设置为 theme_get_setting(‘your_option’),这样Drupal会在数据库中查找并使用它,但是当它找不到的时候,drupal就会到.info文件中去寻找(注意,请深入理解drupal主题系统的这种行为,前辈们称其为“覆写”,外国人叫它“override”,当你理解之后,你会发现它几乎无处不在)。所以你还需要在.info文件中加入其默认值:
settings[your_option] = 1
最后你可以用theme_get_setting(‘your_option’);语句在你的tpl.php文件中来访问这个选项。
具体示例如下:当然你也可以在官网https://www.drupal.org/node/177868 找到类似的例子。
在主题设置中添加一个副标题(sub-heading),用于在每个页面中显示出来:
我们知道,每个网站都有一个标题,假设某个网站除了原始标题之外,还需要一个副标题,并且允许管理员在网站后台进行设置,怎么实现?
第一步,创建theme-setting.php文件并添加以下内容:
<?php /** * Implements hook_form_FORM_ID_alter(). */ function yourthemename_form_system_theme_settings_alter(&$form, &$form_state) { //system_theme_settings是数据库中表的名称 //yourthemename是主题名称 $form['yourthemename_subheading'] = array( '#type' => 'textfield', '#title' => t('Sub-heading'), '#default_value' => theme_get_setting('yourthemename_subheading'), '#description' => t('Displays a sub-heading below the main title. Different from the "slogan" because it will display on every page.'), '#weight' => -2, ); }
第二步:在.info文件中为它添加一个默认值,并清除缓存:
settings[yourthemename_subheading] = This is a default.
第三步:在page.tpl.php文件中引入对应的语句:
<?php if (theme_get_setting('yourthemename_subheading')): ?> <h2><?php print theme_get_setting('yourthemename_subheading'); ?></h2> <?php endif; ?>