Phpblock themetester()
提供: GeeklogJpWiki
[3]管理方法 > 管理者が導入後すぐ試せる簡単カスタマイズ > PHPブロックでブロックをカスタマイズする > テーマテスタPHPブロック
- 作者:SaY, mystral_kk
- ダウンロード:日本語版標準パッケージ(20061121版)に組み込み済み
テーマテスタPHPブロック phpblock_themetester()
利用方法
- 管理者ログインしてブロック管理画面を表示します。
- ブロックを新規作成します。
- ブロックのモードを「PHPブロック」にします。
- 「関数」のフォームに、phpblock_themetesterを指定します。
テーマを変更するには,ログインして「ユーザメニュー」の「設定」でテーマを選択しますが、ちょっと違うテーマを試してみたいだけといった場合には面倒なものです。
ブロックにテーマテスタが表示されるので,適当なテーマを選択します。登録ユーザの場合は,「保存する」のリンクが表示されます。クリックすると,そのユーザのデフォルトのテーマとして保存されます。
インストール方法
この機能は日本語版標準パッケージ(20061121版)で組み込み済みですが、それ以前のバージョンの場合には、以下のように/system/custom/phpblock_themetester.phpを/system/lib-custom.phpに組み込みます。
READMEファイルのとおり、インストールします。
/system/lib-custom.php
以下の行を追加してプログラムを組み込みます。
// テーマテスタPHPブロック関数を組み込む require_once( 'custom/phpblock_themetester.php' );
/system/custom/phpblock_themetester.php
<?php
function phpblock_themetester()
{
global $_TABLES, $_USER, $_CONF;
$thememode = isset($_GET['thememode']) ? COM_applyFilter($_GET['thememode']) : '';
if ($thememode == 'save') {
$usetheme = isset($_GET['usetheme']) ? COM_applyFilter($_GET['usetheme']) : '';
} else {
$usetheme = isset($_POST['usetheme']) ? COM_applyFilter($_POST['usetheme']) : '';
}
if ($usetheme == '--') {
exit;
}
if ($_USER['uid'] > 1 AND $thememode == 'save' AND !empty($usetheme)) {
DB_query("UPDATE {$_TABLES['users']} SET theme='$usetheme' WHERE uid = {$_USER['uid']}");
echo COM_refresh($_SERVER['PHP_SELF']);
}
$themes = COM_getThemes();
if (count($themes) == 1) {
return 'テーマが1種類しかありません。';
}
$retval .= ''; // お好きなテーマでどうぞ<br>
$retval .= '<div style="text-align: center;"><form action="' . $_SERVER['PHP_SELF'] . '" method="post" style="margin:3px;padding:0px;text-align: center;"><select name="usetheme" onChange="this.form.submit()">';
$retval .= '<option value="">テーマ選択</option>';
foreach ($themes as $theme) {
$retval .= "<option value='{$theme}'";
if ($usetheme == $theme) {
$retval .= " selected='selected'";
setcookie ($_CONF['cookie_theme'], $usetheme, time() + 31536000,
$_CONF['cookie_path'], $_CONF['cookiedomain'],
$_CONF['cookiesecure']);
}
$retval .= ">{$theme}</option>";
}
$retval .= '</select>' . '<noscript><input name="submit" type="submit" value="変更"></noscript>';
if ($_USER['uid'] > 1 AND !empty($usetheme)) {
$args = 'thememode=save&usetheme=' . $usetheme;
foreach ($_GET as $key => $value) {
if (! in_array($key, array('thememode', 'usetheme'))) {
$args .= "&{$key}=" . urlencode(COM_applyFilter($value));
}
}
$retval .= "</form><a href='{$_SERVER['PHP_SELF']}?{$args}'>テーマを保存</a></div>";
} else {
$retval .= '</form></div>';
}
return $retval;
}
?>
