Home » ラボ&備忘録 » MODx » memo » base hrefを使わない このエントリーを含むはてなブックマーク

BaseURLをつけないようにカスタマイズ

2006.08.19 Sat/PM

フレンドリーURLを使う際に、URLの整合性を保つ為 <base href="http://chibinowa.net/" /> の記述が必須になるんですが、 ローカルリンク <a href="#hoge">hogehoge</a> etc... を使いたいときに凄く不便になるので以下を修正。MODx Ver0.9.2

コアスクリプトを改造するとバージョンアップする場合に面倒なことになるので出来るだけいじりたくないんですが、これだけはどうしても気になったので…。
弊害が多いようなら元に戻そうと思います。
プラグインとか色々入れると増えそうだなー…。

先頭にスラッシュをつけるようにしました。

manager/includes/document.parser.class.inc.php:801

function makeFriendlyURL($pre,$suff,$alias) {
  $dir = dirname($alias);
  ///// edit
  return ($dir!='.' ? "/$dir/":"/").$pre.basename($alias).$suff;
}

ホストつきのURLを吐く時に、スラッシュが2重にならないようにサイトURLの最後のスラッシュを取り除いています。

manager/includes/config.inc.php:31

  $site_url .= $base_url;
  ///// edit
  $site_url = rtrim($site_url, '/');

QuickEditに副作用が…!

ただ、細かいところで副作用が出ます。
クイックエディタは、Javascirpt等の読み込みのパスが「assets/...」となっているのでちゃんと読み込まれません。

assets/modules/quick_edit/output.class.inc.php:50

  ///// edit
  $this->checked_image = "<img src=\"/{$GLOBALS['quick_edit_path']}/images/checked.gif\" alt=\"checked\" style=\"float:left; margin-right:3px;\" />";
  $this->unchecked_image = "<img src=\"/{$GLOBALS['quick_edit_path']}/images/unchecked.gif\" alt=\"checked\" style=\"float:left; margin-right:3px;\" />";

assets/modules/quick_edit/output.class.inc.php:227

<!-- Start QuickEdit headers -->
<script type="text/javascript">
 var modId = '{$module_id}';
 var managerPath = '/{$manager_path}';
 var modPath = '/{$qe_path}';
</script>
<script src="/{$qe_path}/javascript/cookies.js" type="text/javascript"></script>
<script src="/{$qe_path}/javascript/output.js" type="text/javascript"></script>
<script type="text/javascript" src="/manager/media/script/scriptaculous/prototype.js"></script>
<script type="text/javascript" src="/manager/media/script/scriptaculous/scriptaculous.js"></script>
<link type="text/css" rel="stylesheet" href="/{$qe_path}/styles/output.css" />
<!-- End QuickEdit headers -->

という感じに変えておいた。
prototype.jsとscriptaculous.jsはテンプレートで呼んでいるので削除してもいいみたい。

リッチテキストエディタを使う場合に

リッチテキストエディタで「TinyMCE」を使う場合は、設定の「Path Options:」を「Root Relative」にしておけばOK。
「FCKEditor」は入力値がそのまま使用されました。
「Xinha」はリソースURLを「/assets/」にしていても、読み込み時に強制的にホスト付きに変換されてました。どうなのこれ。
設定の「Strip base url:」かと思ったけどちがうっぽい。

関係ないけど

ソースをいじったところは全部「///// edit」とか分かりやすい物を何か入れておくと後で検索しやすい。

と、ここまで書いたけど…

今Ver0.9.5を使っていますがやっぱりバージョンアップの際の対応が面倒なので、私は「base href」入れておく事にしました(´^ω^`)