こういうやり方もありますね.
elseif (false !== strpos($uagent, 'Konqueror')) {
$THEME->rarrow = '→';
$THEME->larrow = '←';
}
elseif (isset($_SERVER['HTTP_ACCEPT_CHARSET'])
&& false === stripos($_SERVER['HTTP_ACCEPT_CHARSET'], 'utf-8')) {
// (Win/IE 5 doesn't set ACCEPT_CHARSET, but handles Unicode.)
// To be safe, non-Unicode browsers!
$THEME->rarrow = '>';
$THEME->larrow = '<';
}
// (Shirai): ここから追加
$noArrowFont[] = 'Nintendo DS';
$noArrowFont[] = 'PSP';
$noArrowFont[] = 'NetFront';
$noArrowFont[] = 'SHARP/WS';
foreach ($noArrowFont as $uas) {
if (false !== strpos($uagent, $uas)) {
$THEME->rarrow = '>';
$THEME->larrow = '<';
}
}
// (Shirai): ここまで追加
全てのチェックが終わった後に,「ちなみにこういう特殊な環境の場合は...」と上書きしてしまう.この方法の良い点は,$noArrowFont[]の初期化を設定ファイル(config.phpやfsconfig.php)に分けることができる点です.自分の管理する環境に新しい端末が現れた場合に速やかに対応できます.
でも,同じNetFrontでもある機種は矢印記号が表示できる,といった例外に対応し難いという弱点もあります.
#CSSに代替フォントのような機能は無いですよねぇ.
もう面倒だから全て<と>にするという乱暴な選択肢もあります^^.個人的にはMoodleには見た目は泥臭くても良いから幅広い機種に安定的に対応して欲しい.最近のmoodle.orgで利用しているCSSによるプルダウンメニュー(ですよね?)は携帯電話のフルブラウザ(922SH)とPSPは対応していません...