top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_1224

Drupal:ブロックについて少し学び、レイアウト体裁を整える。まずは基本的にここで、おおまかなDrupalのハンドリングを習得する ・・・ 【今日のDrupal】

 2010-01-14
 Drupal におけるサイト構築。
 現在、
 ・サブメニューが存在する
  ・創った(再構築している 「創ったmetaboy」のカテゴリ)
   で
   Drupal の基礎的なハンドリング方法を自分なりに取得中。
 今日は、レイアウトも含めなんとかまとめたい。

 これが、今日の before
    今日の:before


  追記に (長文ご容赦) ▼


 ところで、こちらは・・・
 (あれ? 一瞬だけだぞ。間違えた?Googleさん。
  2度目アクセスすると、いつもの Googleロゴ)
◇今日のGoogle(2010/01/14)
今日のGoogle(2010/01/14)
 ※キャッシュかも?まぼろしかも?間違いかも?

●訂正追記にあり 2010/01/30●


FC2ブログランキング にほんブログ村 IT技術ブログ Webサイト構築へ ブログ王ランキング 人気ブログランキング 人気ホームページランキングへ


more

************************************************
◎ ブロックについて少し学び、レイアウト体裁を整える の巻
       :Drupalはどう?

************************************************


 ブロック、利用してみる。
 現在、
 ・タイトル下に表示している「サブメニュー」
  右側にブロックを用意して
  その中で展開してみる。

 ■ブロックの作成・設定
  □管理セクション > サイトの構築
   > ブロック
   ※block_right_submenus という名前で、
    sidebar last に用意。
    (このテンプレートでは、これで
     右側への配置になるはずだ)
  ホーム > 管理セクション > ユーザの管理 > ユーザの設定
   設定は、
  ホーム > 管理セクション > ユーザの管理 > ユーザの設定
  ホーム > 管理セクション > ユーザの管理 > ユーザの設定
   ・サブメニューがある、
    ・創った
    ・トライ
    だけに限定した。
  □併せて、
   左側には、
   ・最新情報を表示するブロックも用意。
    ※こちらは、限定無く、
     すべての頁に表示。


   これで、
    ・創った
    ・トライ
   だけは、3カラム
   他は、(左側)2カラム
   のレイアウト配置になる
     ▼
  最新情報を表示するブロックも用意


 さて、この
 ■ブロックが、利用している
  テンプレートは、block.tpl.php だ。
     参照:
     > Block.tpl.php | drupal.org
     > block.tpl.php | Drupal API
  ※このテンプレートでは、
   他の page.tpl.php などのように
   ・命名規則による、特定コンテンツへの対応
    というのはあるのだろうか?
   あった!
   こちらに詳しい。
     > block.tpl.php テンプレートファイル | DRUPAL*DRUPAL
     > テーマ変数(block.tpl.php)


 

   □右サイドバーに表示されるブロックなので、
    block.tpl.php を複写リネームして
    block-right.tpl.php を用意。
   □この中で利用できる「テンプレート変数」を利用して
    制御してみる。試しに、
<?
print_r($block);
?>
 としてみると・・・▼
  おや?何もでないな
    おや?何もでないな。
    ・block_left_submenus という名前でも用意して
     同じソースで確認すると、
     出ない。駄目なのか。
    ※また、このテンプレートの問題か?
     template.php を確認してみると、
function phptemplate_preprocess_block(&$vars) {
// Add regions with rounded blocks (e.g., sidebar_first, sidebar_last) to $rounded_regions array
$rounded_regions = array('sidebar_first','sidebar_last','postscript_first','postscript_middle','postscript_last');
$vars['rounded_block'] = (in_array($vars['block']->region, $rounded_regions)) ? TRUE : FALSE;
}
 という関数がある。
    それでは・・・と、region(?)であろう
    sidebar_last を組み込んで
    ・block-sidebar_last.tpl.php という名前でテスト▼
  おぉ出ましたねぇ
    おぉ出ましたねぇ。しかし、その内容は、
stdClass Object
(
[bid] => 150
[module] => block
[delta] => 2
[theme] => waffles_201001
[status] => 1
[weight] => 0
[region] => sidebar_last
[custom] => 1
[throttle] => 0
[visibility] => 1
[pages] => node/3
node/4
[title] => カテゴリ
[cache] => -1
[enabled] => 1
[page_match] => 1
[content] => <p>さらに詳しいカテゴリはこちら。</p>

[subject] => カテゴリ
)
 で、名称としてつけた
    「block_right_submenus」は得られないんですねぇ。
    特定するのに使えるのは、
    ・[bid] => 150 や [title] => カテゴリ かな。
     (あるいは、$block->>delta?)

 

   □とにかく コンテンツ(本文)を出力しているところで、
    前回行ったようにサブメニューを得たく、
$pageitem = menu_tree_page_data('primary-links');
foreach ($pageitem as $value) {
print_r($value);
}
 とやってみると・・・
    ここでは、現在の node に特定されないで
    ・すべての 'primary-links' の内容が出てしまうな。
     ※当たり前か?
    ・・・それでは・・・と、
echo "<span class='menu_belows'>"; $temprow=0;
foreach ($pageitem as $value) {
if($value['below']){
foreach ($value['below'] as $key => $values) {
$tempStr = "<a href =\"/";
$tempStr.= drupal_lookup_path('alias',$values['link']['link_path'])."\"";
$tempStr.= " title = \"".$values['link']['link_title']."\">";
$tempStr.= $values['link']['link_title']."</a>";
if($temprow>0){ echo $tempDir." | "; }
echo $tempStr; $temprow++;
}
}
}
echo "</span>";
 これでいいんでしょ▼
  よしよし
    よしよし。

    しかし、ここまでやってきて、こりゃ違うな・・・と。
    いくら私が独善的で無手勝流のやり方、だとはいえ、


    ・block.tpl.php や、block-right.tpl.php
     テンプレートでしょうよ。ここに、こうガリガリ書くのは
      いかがなもんか、と。おかしいでしょ、やっぱり。


 ■で、このブロックの 入力フォーム本文
  ブロックの 入力フォーム本文
      ここでしょうよ、と。
      ※これで、この「block_right_submenus」は特定できる。


 

     そして、このような
      ・ブロック本文や
      ・コンテンツ本文に、
     直接 PHPコードを書くことができるようにしてくれるのが
     (コアモジュールの)
 ◆[モジュール] PHP filter

PHP Filter: Include PHP code in posts | drupal.org
PHP Filter: Include PHP code in posts | drupal.org ・Views PHP Filter
  というのもあるようだけど。




  すぐに「有効」にする。
   □該当ブロックの 「入力書式」を
  PHP code に設定
    ・PHP code に設定。

     で、最初はここにガリガリ書いていたのだが・・・
     やはり使いにくい。
     ※いつも、テキストエディタで書きまくっている私には
      (TABも使えないし・・・)非常に時間かかる。


    ・モジュールの中には、
      ・fckeditor ほか
       多くの リッチテキストエディタを使用可能に
       してくれるものもあるようだが・・・
      ブログを作っているのではないので、これは不要だ。


    そこで、
   □PHPコードが使えるわけだから、
    ここで、include 利用して
    専用のフォルダに用意した PHPを読み込むことにする。
    ※これさえ、本来の方法ではないのだろうけど、
     少なくとも、
     ・テンプレートとの分離にはなりうる。
     時間が無いので、これでゆくか。


 


 ■ブロック本文 で・・・
  ※相対ディレクトリでも大丈夫なのかもしれないが、
   安全を期して、確実にするため、
$cdir = getcwd()."/";
 と カレントディレクトリを取得しておく。

   ここでは、$node 変数も利用できないので
   (他に方法あるのだろうが、とりあえず)


   □現在のカテゴリにおける PATH 及び URLエイリアスを、
$temp_this_node=""; $temp_this_path="";
$pageitem = menu_tree_page_data('primary-links');
foreach ($pageitem as $value) {
if($value['below']){ $temp_this_node=$value['link']['link_path']; break; }
}
$temp_this_path = drupal_lookup_path('alias',$temp_this_node);
 と取得して
    自動的に組み込む、includeファイルを、
$temp_this_path = drupal_lookup_path('alias',$temp_this_node);
if($temp_this_path){
$temp_incfile = str_replace("/","",$temp_this_path);
$temp_incfile = $cdir."*****".$temp_incfile.".php";
include($temp_incfile);
}
 として組み込む。(現在は変個済み:下記)
    この動作は、確認できた。

●訂正追記 2010/01/30●


 当然ながら、
 この方法は、あくまでも、リレーションしている
 $value['below']がひとつのカテゴリにある場合のみ
 有効だ。現在は、次の方法に変更済み。
 ・var_dump($GLOBALS); で調べると
  現在のnodeを特定できる次の箇所が見つかる。
    ["_POST"]=>
array(0) {
}
["HTTP_POST_VARS"]=>
array(0) {
}
["_GET"]=>
array(1) {
["q"]=>
string(6) "node/4"
}
["HTTP_GET_VARS"]=>
array(1) {
["q"]=>
string(5) "blogs"
}
 つまり、urlエイリアスでアクセスしても
 $_GET['q'] には、"node/4" が入ってくれている。これを利用して
 今回の部分のソースは、
if($_GET['q']){ $temp_this_node=$_GET['q'];
if($temp_this_node){
$temp_this_path = drupal_lookup_path('alias',$temp_this_node);
if($temp_this_path){
$temp_incfile = str_replace("/","",$temp_this_path);
$cdir = getcwd()."/";
$temp_incfile = $cdir."*****leftbox_".$temp_incfile.".php";
if(file_exists($temp_incfile)){ include($temp_incfile); }
}
}
}
 と、している。
 ※これでも十分、手前勝手な方法だけれど。


   □組み込まれるphpファイルで表示部分のコーディング
    を用意し、▼
  組み込まれるphpファイルで表示部分のコーディング
    写真が表示されるところまではできあがった。
    ・当然、すでにリンクも組み込んでいる。


    ・・・・・


   この後少し化粧し(まだ、中途半端だが)
  >この後少し化粧し(まだ、中途半端だが)
   ここはこれでいったんOK。


 ■(今は)
  クリックすると、ダミーで用意したコンテンツに飛ぶが
  これはダミーだ。
  メニューから、ワンクリックで各ブログが表示しないと
  まどろっこしい。
  クリックすると、ダミーで用意したコンテンツに飛ぶ


 さて、もう少しやるか・・・

commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/1224-a4a67638
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。