ウェブデザインとプログラムのナインマイルズ

s9yドキュメント

ユーザーによる改良

  1. このセクションのオリジナルドキュメント
  2. .. (エキスパートへの質問)

もちろんいかなるHTMLもJavascriptもSerendipityブログに追加することができます!
そしてその方法は何通りかあります。

最も手っ取り早いやり方はHTMLナゲットプラグインをインストールすることです。

このプラグインは、サイドバー内のあなたがコードを挿入したい箇所に、一つのブロックを提供します。

もしドキュメントの先頭にコードを挿入したい場合は、HTML-Code inside headプラグインが使えます。

これはまさに同じようなことをするのですが、Serendipityの全ページの先頭にあなたのコードが挿入されます。 きちんと動いているかどうかは、ウェブブラウザの「ページのソース」機能を使えば確認できます。

直接変更を加えたい場合は、テンプレートを編集する必要があります。

例として、ページの先頭にJavascriptを挿入するとした場合、template/適用されているテンプレートディレクトリ/index.tpl を編集する必要があります。 もしそのファイルが無い場合は、templates/default/index.tpl をコピーしてください。

覚えておいて欲しいのは、index.tplはSmartyによってパースされるということです。
そしてSmartyもJavascriptも波括弧「{}」に特別な意味を割り当てるので、コンフリクトが生じがちです。

Javascriptが、クライアントのウェブブラウザの準備が整うまで待たなければいけなかったのに対し、サーバの側ではSmartyは今ではすっかり成功を収めてきています。

括弧がSmartyを越えてJavascriptに適用されるには、括弧を無視するかまたは括弧を生成させるかのどちらかでSmartyに認識させる必要があります。

括弧を無視させるのはシンプルな解決策です。
Smartyは {literal} タグの間に書かれたものは全て許可します。
こんな感じです:

{literal}
some_javascript
{
  with(braces);
}
{/literal}

ですから、index.tplを編集する時は、全てのJavascriptを {literal} タグの中に入れさえすれば良いということです。

他の選択である括弧を生成するやり方は、難しくはありませんが、ちょっとうっとうしいです。
Smartyでは {ldelim} が左波括弧に、{rdelim} が右波括弧に変換されます。
こんな風にします:

some_javascript
{ldelim}
  with(braces);
{rdelim}

ですから、Javascript内でのみ全ての「{」を {ldelim} に置き換え、全ての「}」を {rdelim} に置き換えるだけでいいということになります。

自分のページにアクセスしてみてJavascriptがうまく動いていない場合は、まずソースを確認してください。
スクリプトがきちんと見えているのなら、それはおそらくスクリプト自体に問題があります。
もし、括弧がおかしいようなら、上述のどちらかの対応が必要です。

Serendipity