以前のページで「続きを読む」の場所にコードを埋め込む方法を書きました。この方法とモジュールを使えば、個別記事のページにはアドセンスなどのコードを埋め込む事ができます。
モジュールだけで色々な事ができ、拡張機能「Advanced Module Manager」と合わせるとコア機能を触らなくてもアドセンスコードを埋め込むことが簡単に出来ます。
ここでは、コア機能をいじってコードを埋める方法を書いていきます。
モジュール機能でなくコアコードを触る理由
なぜわざわざコア機能を触るのかというと、私の技量ではモジュールの機能では実現出来なかったからです。
作成中のサイトでは記事ごとに広告コードを変えるために、記事を表示するコードの中でDFP(Google DoubleClick for Publisher)用のコードを定義しています。そのため、記事の外ではDFPタグの定義がありません。
モジュール内で
JFactory::getDocument()->addScriptDeclaration();
を宣言してみたものの、モジュール内ではDOMが有効ではないようで、<head>内にJavascript宣言を置くことが出来ませんでした。<Body>内に埋め込んで試してみたのですが、どうも嫌な感じなので、汎用性が高い方法でやってみたかったのです。
コア機能
コア機能を触るときには、2通りの方法があります。
PHPファイルを直接改変する方法と、テンプレートマネージャーを使ってコア機能のオーバーライド(WordPressでの子テーマfunction.phpのようなもの)を作成して、オーバーライドを改変する方法です。どちらも一長一短です。
直接改変すると、Joomlaのアップデートを行うと消えてしまうことが多くなります。オーバーライドではJoomlaのアップデートによって消えてしまうことはありませんが、アップデートでオーバーライドしたコードに関連したアップデートだった場合には不具合を起こす可能性が出てきます。また、オーバーライドできないファイルも多いのが難点です。
カテゴリ
Joomlaではカテゴリー内の記事を表示する方法が2つあります。
一つは普通のブログで見かけるタイプのイントロ画像(アイキャッチ画像)やイントロテキストを表示するもので、Joomlaではカテゴリブログと呼ばれます。
もう一つはカテゴリリストで、カテゴリ内の記事をテーブル状に表示したものです。
カテゴリブログ
カテゴリブログのページにコードを挿入するには
サイトルート/components/com_content/views/category/tmpl/blog.php
などを改変もしくはオーバーライドします。
オーバーライドした場合には、html/com_content/category/に作成されます。
中身は簡単なPHPファイルなので、<?php ?>外(もしくはPHPタグ内)に必要なコードを書けば、すべてのカテゴリブログページに表示されるようになります。
とりあえずJavascriptをヘッダ内に挿入するには、このblog.phpファイル内のif節ではないところで
JFactory::getDocument()->addScriptDeclaration();
を使って宣言を挿入します。PHPファイルなので条件分岐をすることもできます。
カテゴリリスト
カテゴリブログの時と同じように
サイトルート/components/com_content/views/category/tmpl/default.php
などを編集すると、カテゴリリストのページで任意のコードを実行出来ます。
タグ
記事やカテゴリー、タグクラウドに表示されたタグをクリックすると表示される、同じタグが付いたページのリストでも同じようにPHPファイルを書き換えることで好きなコードを実行できます。
FLEXIcontentの場合
CCK(コンテンツ作成キット)のFLEXIcontentを使っているので、Joomlaコア機能を改変しても表示が変わりません。
カテゴリーページ
FLEXIcontentではテンプレートマネージャーで作るオーバーライドでは好きなコードを入れることができません。代わりにターゲットにするのは、FLEXIcontent用の「テンプレート」です。
管理画面上から設定できる、はずなのですが、インストールした状態では個別記事の「テンプレート」は設定されているものの、カテゴリーのリスティングページの「テンプレート」はFLEXIcontent標準のものをそのまま使う設定になっていて、そのFLEXIcontent標準の「テンプレート」へはFTPを使わないとアクセス出来ません。
FLEXIcontentでは「テンプレート」表示をHTML5とそれ以前のxhtmlで分けるような設計になっていて、表示が微妙に変わります。個別記事ではHTML5を設定するとHTML5の「テンプレート」が呼びだされますが、現バージョンの3.0.15ではリストページではHTML5を設定してもxhtmlが呼び出されます。
バージョンアップで訂正されると動いていたサイトが動かなくなる可能性もあるので、覚書です・・・・
編集するファイルは、
サイトトップ/components/com_flexicontent/tmpl_common/category.php
などです。
タグページ
タグページでは、FLEXIcontentの拡張「テンプレート」が有効ではないので、テンプレートマネージャーからのオーバーライドで編集出来ます。
com_flexicontent/tags
のオーバーライドで設定します。
コメント