6.x での領域の追加
質問
amayadori様
nozakiと申します。
Drupalについての質問なのですが
Drupalの本を買ったり、サイトで検索したりしていたのですが
バージョン6.xでの表示領域の追加の方法がわからなく、なやんでおります。
本などを見ると
function テーマ_regions() {
return array(
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'content_top' => t('content top'),
'content_ad' => t('content ad'),
'content_bottom' => t('content bottom'),
'header' => t('header'),
'footer' => t('footer')
);
}
をtemplate.phpに記述し
page.tpl.phpに
<?php if ($content_ad):?><?php print $content_ad; ?><?php endif; ?>
を記述したら追加できるとあるのですが
元のphptemplate_regions 関数が
5.9では/themes/engines/phptemplate/phptemplate.engine ファイル内の phptemplate_regions 関数に定義されていたのですが、どうやら6.x以降は違うところにいったみたいで見つけることができません。
定義されているはずですが・・?
どこをどうしたら領域を追加できるのでしょうか?
わかりましたらお教えお願いいたします。
解答
nozaki 様
いつ頃にお寄せいただいたモノか、判らないのですが(投稿日の記録が残らないようなので…(^_^;、遅くなりまして、ごめんなさい。
今年(2008年)の3月以降、職場環境が変わりDrupalにさわれる機会が激減してしまいましたので、サイトそのものにもさわれる時間が少なくなってしまい、このような時間になってしまいました。
本当に、ごめんなさい。
まず、最初にお詫びしなければいけないのですが、私の環境では6.xは使われていないと言うこと。
このサイトは、6.xでの動作環境ではあるのですが、なにぶん、サイトの更新自体が出来ていない状況。6.xへの移行なんて夢のまた夢の状態です…(^_^;
デスので、6.xのファイル群を見て回って、山勘でテストしてみただけですので、確証は何らありません。
もっとも、すでに解決済みなのかもしれませんが…(^_^;
6.xから、テーマファイルにもxxxx.infoというなのファイルが追加されました。
このファイルの中の
engine = phptemplate
と
version = "6.1"
の間に
regions[dummy_block] = dummyblock
の形で記述してあげると、ブロック管理メニューのブロックを設定するリストに選択肢が出現しました。
テンプレートまでいじって確認はしていないので、見当違いのトンチンカンなお話である可能性は大ですが、とりあえず、私がたどり着いた結論です。
こうやって書いておけば、6.xをいじり倒している先人が何か教えてくれるかもしれません…(汗)それを期待してます
0829さん、ご無沙汰しています。
教えていただいたページは、どちらかというと事後処理のことがメインのような気がしましたが…、そういう意味では、ここでコメント入れていただいた0829さんの解説の方が解りやすいのかなと言う気がします。
ホント、いつもありがとうございます。
文中でも、触れさせていただきましたが、じっくりDrupalに触れていられる時間も少なくなり、すっかり忘れ去られた存在になっているような気になっております。
プライベートの仲間内で借りているさくらサーバーはMySQLがD6x以降には対応していないのでさらに、6xからは遠ざかっております。
もっとも、このサイト、プライベートな空間共々更新作業は滞っていますけどねw
ああ、駄文が過ぎましたねw
失礼いたしました。
ちなみに、私が確認したのは、zoracさん作のSWSローカル環境内でだけですが、全然見当違いでなかったことに一安心しています。
せっかくコメントいただいたので、折を見て(時間を作って?)本文に取り込んでちゃんとしたモノにしたいと思っています。
また、何かありましたら、よろしくお願いいたします。
次は、いつ顔を出せるのか解りませんけど(^_^;
amayadori さん、ご無沙汰しています。 0829 です。
ブロックリージョンの追加についてですが、以下のページが参考になるかもしれません。
Drupal6で領域の追加後、その後の表示方法が分かりません | Drupal-jBox.net
基本的には、
regions[content_ad] = content adを追記。(場所はどこでも) これで、システム上でブロック領域が扱えるようになります。<?php print $content_ad; ?>を追記。 これで、ウェブページにブロックの内容が表示されるようになります。のような手順で、ブロック領域が追加できると思います。 ご参考までに。