2010
04.06

あらかじめindex.htmlなどのURLでトップ用のページを作っておき、

管理セクション→サイトの環境設定→サイト情報
デフォルトのフロントページ:index.html

とする。

2010
03.21

パンくずリストの最後に現在のページを追加して、さらにリスト形式でマークアップする。
template.phpに以下を追加

function phptemplate_breadcrumb($breadcrumb) {
  //ページのタイトルを取得
  $title = drupal_get_title();
  //パンくずリストの配列の最後に、タイトルを追加
  array_push($breadcrumb,$title);
  if (!empty($breadcrumb)) {
    //return '<div class="breadcrumb">'. implode(' &gt; ', $breadcrumb) .'</div>';
    $pankuzu = '<ul class="breadcrumb">';
    foreach ($breadcrumb as $pan) {
      $pankuzu .= '<li>'.$pan.'</li>';
    }
    $pankuzu .= '</ul>';
    return $pankuzu;
  }
}
2010
03.21

http://drupal.jp/drupal6/quick_start

ここを見ながら

————————————————————————————-

coreserverで使う場合の設定

http://drupal.0829.info/installation-and-configuration/before-installation/xrea-xrea

————————————————————————————-

http://drupal.jp/

よりDrupalをDLして解凍

————————————————————————————-

.htaccessの以下の部分のコメントアウトを外す

# magic word for xrea.com
# <Files index.php>
#   AddHandler application/x-httpd-phpcgi .php
# </Files>

↓↓↓↓

# magic word for xrea.com
<Files index.php>
  AddHandler application/x-httpd-phpcgi .php
</Files>

————————————————————————————-

Drupalディレクトリに以下の内容のphp.iniを作成

; magic word for mbstring
mbstring.language = neutral
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = off
mbstring.func_overload = 0
mbstring.internal_encoding = UTF-8

————————————————————————————-

scripts ディレクトリは Drupal の動作には不要であり、セキュリティ上好ましくないので除外
robots.txt 以外の、拡張子が .txt のファイルも不要ですので除外

————————————————————————————-

以上完了したらアップロード

————————————————————————————-

パーミッション変更
sites/default/settings.php (666)
sites/default/files (777)
sites/default/files 以下にある全てのディレクトリ(color, css, js, languages, pictures, tmp) (777)
sites ディレクトリ以下の各ディレクトリ内にある、ファイル .drupal はこの時点で不要なので削除してもOK

※モジュールやテーマをインストールする際には、sites/all 以下の modules や themes ディレクトリにインストールすること

————————————————————————————-

インストールしたURLにアクセスするとインストール画面になる
(その前にデータベースを作成しておく)

1.日本語プロフィールを選択し【Save and continue】
2.データベース情報を入力し【保存して次へ】
3.サイトの環境設定情報を入力し【保存して次へ】
ここで /sites/default/settings.php の書き込み権限を取り除くようにメッセージが表示されている場合、指示に従ってパーミッションを 644 などの読み込み専用権限に変更する。
また、 install.php ファイルと profiles ディレクトリは、もはや不要ですのでついでに削除しておくとよい。
4.日本語プロフィールのインストールが完了しましたと出れば完了

2010
02.26

WordPressをCMSとして使用する際、細分化した定型の項目を、カスタムフィールドを使って入力してもらうようにすると、更新時のトラブルも少なくウマーです。
私はCustom Field Templateを使ってほぼ全ての内容をカスタムフィールドで入力してもらうようにしています。
数が不定の複数項目を同列でリスト出力したい場合などに、同じキーの入力フィールドを追加していける機能があるのですが、入力した順に記録されず順番がばらばらになってしまいます。
そこで、入力フィールドはひとつにしておいて、テキストエリアにしておきます。入力時には項目ごとに区切り文字を入れて入力してもらい、表示の際に、区切り文字で分割して配列にほりこみ、foreachなどでまわすとスムーズ且つスマートです。
区切り文字の代わりに改行を使ってもいいです。(その場合は”\n”で分割する)
(例_1)
カスタムフィールド
キー:instruments
値:ボーカル,ギター,ベース,オルガン,ドラム

テーマのループ内で

if( post_custom('instruments') ) {
	echo "<ul>\n";
	$items = explode("," , post_custom('instruments'));
	foreach($items as $value) {
		echo "<li>".$value."</li>\n";
	}
	echo "</ul>\n";
}

出力

<ul>
<li>ボーカル</li>
<li>ギター</li>
<li>ベース</li>
<li>オルガン</li>
<li>ドラム</li>
</ul>

(例_2)
キー:band
値:
ジョン,ギター/ボーカル/コーラス
ポール,ギター/ボーカル/コーラス
ジョージ,ベース/コーラス
リンゴ,ドラム/コーラス

if( post_custom('band') ) {
	echo "<dl>\n";
	$band = explode("\n" , post_custom('band'));
	foreach($band as $member) {
		$part = explode("," , $member);
		echo "<dt>".$part[0]."</dt>\n";
		echo "<dd>";
		$inst = explode("/" , $part[1]);
		if($inst[1]) {
			echo "\n<ul>\n";
			foreach($inst as $inst) {
				echo "<li>".$inst."</li>\n";
			}
			echo "</ul>\n";
		} else {
			echo $inst[0];
		}
		echo "</dd>\n";
	}
	echo "</dl>\n";
}

<dl>
  <dt>ジョン</dt>
  <dd>
    <ul>
      <li>ギター</li>
      <li>ボーカル</li>
      <li>コーラス</li>
    </ul>
  </dd>
  <dt>ポール</dt>
  <dd>
    <ul>
      <li>ギター</li>
      <li>ボーカル</li>
      <li>コーラス</li>
    </ul>
  </dd>
  <dt>ジョージ</dt>
  <dd>
    <ul>
      <li>ベース</li>
      <li>コーラス</li>
    </ul>
  </dd>
  <dt>リンゴ</dt>
  <dd>
    <ul>
      <li>ドラム</li>
      <li>コーラス</li>
    </ul>
  </dd>
</dl>
2009
11.07
$hensuu = get_defined_vars();
print_r($hensuu);
2009
11.07

任意のノードテンプレート(node-example.tpl.php)に以下を追加。

プレーンな内容を出力する場合

<?php print $field_フィールド名[0][value]; ?>

フォーマット済みの内容を出力する場合

<?php print $field_フィールド名[0][safe]; ?>
<?php print $field_フィールド名[0][view]; ?>

↑どう違うんやろ?調べる

このままだとダブって表示されることになるので、$contentからカスタムフィールドの値を取り除く。↓

管理セクション>コンテンツの管理>コンテンツタイプ>manage fields>フィールドの表示
で、「Exclude」にチェック

2009
10.01

本文などで改行したりすると、勝手に挿入される<p>や<br />がうっとおしくてややこしい。
それっぽいプラグインもありますが、なんかめんどくさいっていう場合、いっそのこといったん全部除去して、テンプレート側で必要な部分に入れなおすという手もある。
ただ、この方法では、Enterで段落が分かれている部分が<br />2こに置き換わるので、想定外に行間が開くことになるので悩ましげ。

$hoge = get_the_content();
//strip_tags()でhtmlタグを取り除く(2番目の引数で取り除かないタグを指定できる)
$hoge = strip_tags($hoge, '<a>');
//nl2br()で文中の改行コードを<br />に変換する
$hoge = nl2br($hoge);
//前後に<p>タグを付け加えてどーん
echo ('<p>'.$hoge.'</p>');
2009
09.28

WordPressなどで構築したサイトを納品する際、更新のマニュアル作成に時間と労力をかけるのはどうかと思うので、動画でマニュアルをさくっと作れないかなーとおもって調べたところ、画面操作を録画して、最終的にswf形式にしてくれるというフリーソフトを発見。

以下のページで詳しい解説と使い方が見られます。
http://www.gigafree.net/media/recording/wink.html

2009
09.25
bloginfo('url');
get_bloginfo('url');
2009
09.24

画像ナビゲーションを使う場合に、カレント項目の画像を変える場合のJS
ナビゲーションのリストのliタグにurl(カテゴリースラッグ)と同名のclass名を振り、画像も同じ名前を使う前提
汎用性は低いw

$(function(){
	var url = document.URL.split('/');
	var href = url[3];
	if ( href == '' ) {
		href = 'index';
	}
	//href = href.split('.');
	//href = href[0];
	var currentObj = $('#gNav li.'+href+' img');
	if(currentObj[0]) {
		currentObj[0].setAttribute("src", currentObj[0].getAttribute("src").replace("_off.", "_current."));
	}
});