Phpblock themetester()

提供: GeeklogJpWiki

[3]管理方法 > 管理者が導入後すぐ試せる簡単カスタマイズ > PHPブロックでブロックをカスタマイズする > テーマテスタPHPブロック

  • 作者:SaY, mystral_kk
  • ダウンロード:日本語版標準パッケージ(20061121版)に組み込み済み

テーマテスタPHPブロック phpblock_themetester()

利用方法

  1. 管理者ログインしてブロック管理画面を表示します。
  2. ブロックを新規作成します。
  3. ブロックのモードを「PHPブロック」にします。
  4. 「関数」のフォームに、phpblock_themetesterを指定します。

テーマを変更するには,ログインして「ユーザメニュー」の「設定」でテーマを選択しますが、ちょっと違うテーマを試してみたいだけといった場合には面倒なものです。

ブロックにテーマテスタが表示されるので,適当なテーマを選択します。登録ユーザの場合は,「保存する」のリンクが表示されます。クリックすると,そのユーザのデフォルトのテーマとして保存されます。

テーマテスタPHPブロック

インストール方法

この機能は日本語版標準パッケージ(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;
}

?>
個人用ツール