dr:themesettings
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
dr:themesettings [2006/08/09 22:24] – fgm | dr:themesettings [2020/11/23 17:23] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Adding settings on Drupal themes ====== | ====== Adding settings on Drupal themes ====== | ||
+ | ===== WARNING ===== | ||
+ | |||
+ | A module called [[http:// | ||
+ | |||
+ | ===== Themes need settings ===== | ||
For some time now, I've been feeling the need to have some themes be more easily customizable by admins, without their needing to tweak files. Alas, the themeing system is normally limited to the smallest common denominator defined by < | For some time now, I've been feeling the need to have some themes be more easily customizable by admins, without their needing to tweak files. Alas, the themeing system is normally limited to the smallest common denominator defined by < | ||
Line 5: | Line 10: | ||
Since tweaking the various themeing mechanisms seemed complicated, | Since tweaking the various themeing mechanisms seemed complicated, | ||
- | As the first step, we'll add new settings to a theme, by declaring a < | + | As the first step, we'll add new settings to a theme, by declaring a < |
===== Adding settingability to themes ===== | ===== Adding settingability to themes ===== | ||
- | |||
==== Creating the settings function for theme " | ==== Creating the settings function for theme " | ||
- | In the admin.theme file, we'll add the admin_settings function. If the theme is a plain PHP theme, it will already exist. If it is a PHPtemplate theme, the file will have to be created. | + | In the admin.theme file, we'll add the admin_settings function. If the theme is a plain PHP theme, it will already exist. If it is a PHPtemplate |
- | + | <code php> | |
- | <php> | + | |
function admin_settings() | function admin_settings() | ||
{ | { | ||
Line 27: | Line 30: | ||
'# | '# | ||
); | ); | ||
- | |||
return system_settings_form(' | return system_settings_form(' | ||
} | } | ||
- | </php> | + | </code> |
Proof of concept example, no more: we just define a setting for the theme to use later on. In this case, it will be a CSS background color. NOTICE: a true world example should not take input and store it without some sanity checks. | Proof of concept example, no more: we just define a setting for the theme to use later on. In this case, it will be a CSS background color. NOTICE: a true world example should not take input and store it without some sanity checks. | ||
- | |||
- | |||
- | |||
- | |||
==== Using the setting: node.tpl.php ==== | ==== Using the setting: node.tpl.php ==== | ||
With the " | With the " | ||
- | + | <code php> | |
- | <php> | + | |
<?php | <?php | ||
echo '< | echo '< | ||
Line 51: | Line 48: | ||
if ($page == 0) ... | if ($page == 0) ... | ||
[...the rest of the file is unchanged...] | [...the rest of the file is unchanged...] | ||
- | </php> | + | </code> |
- | + | ||
- | Ugly inline styling, but this is just a demo, so we don't care. | + | |
+ | Ugly inline styling, but this is just a demo, so we don't care. I add the "! important" | ||
===== Hooking it up ===== | ===== Hooking it up ===== | ||
Line 62: | Line 58: | ||
We now need to tell Drupal to stitch this together, and for this we'll need a module. | We now need to tell Drupal to stitch this together, and for this we'll need a module. | ||
- | ===== The themesettings module | + | ==== The themesettings module ==== |
- | <php> | + | <code php> |
// themesettings.module for Drupal 4.7 | // themesettings.module for Drupal 4.7 | ||
// (C) 2006 FG Marand | // (C) 2006 FG Marand | ||
Line 153: | Line 149: | ||
return $ret; | return $ret; | ||
} | } | ||
- | </php> | + | </code> |
+ | |||
+ | ===== How does it work ? ===== | ||
+ | There' | ||
+ | * it registers a set of paths in the admin area by implementing hook_menu | ||
+ | * to know which themes implement this non-standard extension, it needs to know whether the < | ||
+ | * for PHPtemplate themes, the .theme file won't be loaded except for admin/ | ||
+ | * for plain PHP themes, the .theme file is already loaded anyway, so parsing this function only adds a few CPU cycles, but no additional file inclusion, so the additional load remains minimal too. | ||
+ | Please try it and comment on [[http:// |
dr/themesettings.1155162257.txt.gz · Last modified: 2020/11/23 17:23 (external edit)