MODxでメタタグのdiscriptionをどう挿入するか
MODx には、「メタタグとキーワードの管理機能」というのがあって、ページごとに、メタタグやキーワードを設定できるのだが。これがぶっちゃけ使いづらい。私的に。
MODxってすべてにおいて、自由で使い手を束縛しないのに、この「メタタグ管理機能」は、ユーザに自由度を与えてない気がする(というより、まだ仕様が固まってないということなのか)。
ただ、まったくなかったら、それはそれで、不親切だとも思えるんだが。
ということで(?)、うちでは上手い使い方を未だに発見できず。「discription」は、テンプレートに直書きだったので、テンプレートごとに共通であった(←それじゃ、「discription」の意味ないだろ?笑)。
で、とりあえず、「name="description"」をスマートに挿入できないかを考えてみた(「keyword」も悩んでいるんだが、今回は保留)。
さて、「discription」は、すべてのページに挿入される要素である。したがって、テンプレート直書きでも構わないのだが、「content」まで直書きすると、テンプレートごとにしか、違った「説明」を入れられないことになってしまう。こういう場合に、利用するのがMODxの変数タグだ。
そう。「content」の部分に変数タグを書けばよい。テンプレート変数でも良いし、ドキュメント変数でも良い。ドキュメント変数ならば、「[*discripton*](説明)」が適当なところだろうか。
が、しかし。うちのサイト「Let' enjoy MODx」では、以下のフィールドを使って、ページを構築しているんだが。
- [*pagititle*] ... 管理画面で見やすいような見出しとして
- [*longtitle*] ... ドキュメントのページタイトル及び、ページの見出しとして
- [*introtext*] ... ページの概要
- [*content*] ... ページ内容(IncludeFile だけど)
そう。[*discription*]使ってないんだよね。だから、メタタグの「description」のためだけに[*discription*]のフィールドを入力するなんて、面倒だ。CMSなのに(笑)。何のためのデータベースなのか。楽をするためのデータベースではないか(そうか?笑)
ということで、データを使い回すことにした。うちのサイトの場合、都合の良いことに[*introtext*]がページの説明である。だから、こうすればいいのだ。
<meta name="description" content="[*introtext*]" />
と、思いきや、これが上手くない。なぜなら、うちのサイトでは、[*introtext*]でタグ(<p>とか<a>とか)を使っちゃっているからだ。このままでは、サイトの説明にタグまで書き出してしまう。
ということで、Dittoを噛ませることにした。Ditto2.xでは、PHxファンクションをサポートしている。こいつを使って、タグを除去しようではないか。こんな感じに。
<meta name="description"
content="[!Ditto? &id=`discription` &documents=`[*id*]`
&tpl=`@CODE:[+introtext:notags:strip+]`!]" />
うん。できた(満足…笑)。
ちなみに、PHxプラグインの書式なら、もっとスマートに書けるわけだが、こんな感じに。
[*introtext:notags:strip*]
しかし、PHxプラグインを導入していると、ある条件下で問題が出る(関連記事:PHxをインストールしている場合のJotの挙動について)。そんなわけで、うちでは、PHxを導入できないのだ(できる環境ならば、その方がよほどスマートであろう)。
まあ、動的制御が多くなると、それだけページが重くなってくるので(うちのMODxが激重い理由)、ストレスがある場合は(とりあえず自分が 笑)、別の方法を考えよう。

コメント
コメントを書く↓
それにしても記事タイトルが長いよ(爆)。
タイトル直したよ(笑)