2007-10-24

Drupal で設定すべき項目

最初に設定すべきもの

  • Administer >> Site configuration >> File system >> File system path
  • Administer >> Site configuration >> Date and time
  • Administer >> Site configuration >> Clean URLs

(↑ id:metalglue:20071014:1192378712 よりコピー)

  • Administer >> Site Building >> Modules
    • 必須: Book, Path, Upload
    • オプション: Blog, Forum, Search, Statistics
    • まれに: Blog API
    • 不明: Aggregator
    • 不要: Tracker (Views でオーバーライドされる)
  • Administer >> Site configuration >> File uploads
  • 野良モジュール
    • CCK: 全部 on
    • GeSHi: GeSHi Filter を on
      • (debian) Path to GeSHi library に /usr/share/php-geshi を設定する.
    • Taxonomy Menu: Taxonomy Menu を on
      • ある term に属するノードは,その term のメニューをクリックしたときに表示されるページに全部表示される.その表示方法が指定できないのでメニュー構成用には向かないと思う.不要.
    • Views: Views, Views UI を on
    • Image: 全部 off
      • imagemagick を on (sudo cp image.imagemagick.inc /usr/share/drupal5/include)
    • imagefield:
    • imagecache:
  • テーマ
    • カスタマイズしたいテーマをコピーし,template.php のプレフィックスを変更する.

その他

  • Administer » Site configuration » Input formats で各フィルタの permission を設定しないと,ノードを作成するときにフィルタが選択できない.

モジュール候補

  • Pathauto
    • タイトルが日本語の場合,エイリアスが作成されない.それどころか,タイトルの日本語中に半角アルファベットが混じっていると,そのアルファベットだけでエイリアスが作成されてしまう.
    • デフォルトの設定では,自分で設定したエイリアスが上書きされてしまうので,日本語だけのタイトルの場合にエイリアスが設定できない.
    • 不必要かとも思ったが,YYYY-MM-DD- とかを付けられるので考えてみよう.
    • その際,設定で Default path pattern を空にしておけば自動エイリアスを無効にできる.
  • Lightbox V2: イメージ拡大(元画像の表示).
  • Paging
  • Views Bookmarks
    • 思っていたのと違った.自身の Drupal サイトのノードを保管するブックマーク.
  • Views Bulk Operations: ノードのリストをチェックボックスとともに表示して,複数ノードに対して操作を可能にする.
    • 開発中か何かで動作しない.
  • Custom Filter: 正規表現を利用してフィルタを作成する.
    • よさそう.グローバルに置換したい名称とかを変数にできそう.例: ${ploom}
  • Audit Files : アップロードしたファイルとデータベースエントリの整合性を検証する.
  • Date
    • 必要.jstools を入れるとポップアップカレンダーが利用できる.
  • Javascript Tools
    • 必要.
  • Node Relativity : ノード間に親子関係を定義する.
  • API: Drupal の API ページに用いられているモジュール.
    • Drupal のコード専用.
  • Avatar Selection
  • Web File Manager
    • upload.module で用いられる files ディレクトリの下に webfm 専用のディレクトリを用意し,そこの中を Web インタフェースで操作できるようにする.ファイルをアップロードしたり,ダウンロードしたりできる.
  • Site notes: サイト構築の過程などをメモする?とか自動生成する?とか
    • 単に一般ユーザからアクセスできないノード型を用意するだけ.特にサイト構築がどうとかという話ではない.
  • IMG File filter
    • [img:N] と入力すると,そのノードに添付した N 番目の画像を表示するための <img> を生成してくれる.サムネール表示にも対応しているが,単に <img width=XXX> とするだけなのが難.Lightbox に対応した <a> も生成してくれる.
  • Fivestar
  • Node Queue
    • Administer でキューを作成すると,ノードの下のほうに "Add to queue" のようなリンクが現れる.キューの管理が admin インタフェースしかない.ユーザごとに操作できるようになっていたほうがいい?
  • Term Display : taxonomy の term の表示方法をカスタマイズする.
  • Comment Info : 匿名でコメントしたときの情報をクライアント側に保持させるようにして,再入力を不要にする.
  • Usercontent: 自分が書いたコンテンツ(コメントを含む)をプロファイルページに表示する.
    • なかなかいい.
  • ASIN Field
  • Amazon associate tools
    • 必要
  • Amazon Filter
    • 必要
  • NTLM & LDAP Authentication
  • Authorship Module : ノードの著者表示部分の見かけを変更できる.
  • Content Templates (Contemplate): ノードの「変数」を用いてページに変換する方法を記述できる.CCK に有用.
    • インストールすると Administer >> Content template が設定できるようになる.ここで各ノードタイプごとにテンプレートを記述する.テンプレートは PHP で記述する.利用できる変数とその値の例が表示される.jquery_update.module のせいかどうかはわからないが,フィールドの enable/disable が怪しい.
  • freelinking: CamelCase または [[]] によってリンクを記述できる.
    • [[ページタイトル]] で Title が「ページタイトル」のノードへのリンクを表す.[[表示テキスト|ページタイトル]] や [[表示テキスト|URL]] なども可能.
  • DHTML Menu: Administer のように葉でない節をクリックするとページ遷移が起きるようなメニューに便利.
    • ブロックに DHTML:Navigation などが新たに用意される.
  • Visibility API : コンテキスト(ロール,パス)に応じてブロックの可視/不可視を切り替える.
  • Thickbox : jQuery の thickbox を利用可能にする.Image または imagefields をサポート.
  • jQuery Lightbox
  • Inline
  • Mathematics Filter
    • mimetex を用いた数式画像生成モジュール.バグがあって Filtered HTML では動作しない(修正可能).
    • apt-get install mimetex; ln -s /usr/bin/mimetex /usr/lib/cgi-bin/mimetex.cgi
  • Unwrap Filter: 改行フィルタを無効にする.
    • 2つ以上連続する <br> を <p> で置き換えた後 <br> を取り去る.使えなさそう.
  • Table Alternate Rows
  • Annotate for Authors and Critics alike!: ノードについての個人的メモを書けるようにする.
    • バグあり.annotate.install で {annotate} とする.まあいらないかな.
  • Filter Default: ノードタイプごとにデフォルトのフィルタを選択できるようにする.
    • ノードタイプごとではなく,Role ごと.Administer >> Input formats に Defaults タブが追加される.
  • DruTeX
    • これはなかなか凄い.ただ,正確にどのようなフォーマットを受け入れるのかが不明.それがわからないと他のフィルタとの干渉がどうなるかはかれない.
  • Node breadcrumb
    • 指定したノードタイプ, タクソノミーにあてはまるノードに特定のメニューアイテムを結びつける.これによってページ先頭に表示される「パン屑」をカスタマイズできる.つまり結びつけたメニューの階層が表示される.
    • メニューのしくみを理解していないので,有用かどうか判断しかねる.ノードを樹状にオーガナイズする方法 texonomy menu? があれば必要ないのか?
  • Recent Blocks: 「最近編集したブロック」を表示.
    • そうじゃなくて,最近編集したほげほげを表示するブロックを用意するモジュール.Views があれば不要.
  • Table of Contents : ノード中のコンテンツの目次を生成.
  • Node Browser
  • Compact Forms
    • インプットフィールドのラベルを本体にオーバーレイ表示することでフォームをコンパクトに表示できる.フォームの id を指定することで適用されるフォームを選択できる.login フォーム以外に何があるのか?
  • External Links: 内部リンクと外部リンクを区別できる.
    • 外部リンクにアイコンがつく.外部リンクをたどるときに新しいウィンドウを開くように設定できる.イイ!
  • Block Assign: 山ほどブロックがあるときのよりよいUIを提供する.
    • データベース関連のエラーが表示されて使えない.

  • Panels
    • 特定のレイアウトで特定の内容を表示するページを作成できる.一つの設定から複数のページを生成するような類のものではない.
    • レイアウトを選べる.3カラムとか,3カラム+ヘッダ+フッタとか.
    • 各セクションに表示する内容を選べる.view または block など.
    • そのレイアウトをどのURLで表示するかを設定できる.
    • 結構使い道ありそう.FrontPage とかで.
  • Link
    • CCK のフィールドとしてリンクを扱える.ブックマークページ用として使える?
  • Giant Scale Image Viewer
  • E-Journal
  • Related Block
  • Mailsave : メールで送信したコンテンツをノードにする.
  • MySite : MyYahoo!様のノードを作成.
  • Sections
  • SWFUpload: アップロードフォームを Flash に置き換える.
    • ...まあまあ?...
  • EasyLink: リストから選択してソースアンカーを生成できるようにする.
    • TinyMCE に依存.うまく設定できない(動作しない).
  • Views Fusion
  • Node Family
  • Iconizer
  • Texy!
  • Textile
  • Attachment
  • Mobile Media Blog : blog を携帯やメールからポストできるようにする.
  • Tabbed Block : 複数のブロックをタブ付のブロックにまとめることができる.
  • TinyMCE WYSIWYG Editor
    • geshifilter と相性が悪い.「改行を取り去る」オプションをoffにすればよいが.
  • typogrify : -- を — にしたりする.
  • Username check
  • News page : Allows creation of pages which show syndicated 'news' items from an aggregator category.
  • Front Page : フロントページだけ別のテーマとかで表示できたりする.
  • CCK Taxonomy Fields
    • Taxonomy で作成した vocabulary を CCK field として設定できる.ただしこれで設定した term は taxonomy データベースには保存されない.使えないと思う.
  • Content Taxonomy
    • Taxonomy で作成した vocabulary を CCK field として設定できる.これで設定した term の保存先を選択できる.また,入力に用いるUIコンポーネントも選択できる.
    • この CCK field を設定した content type では,通常の taxonomy 入力ができなくなる.すなわち,複数の vocabulary を選択できる content type では,全ての vocabulary について Content Taxonomy モジュールによる CCK field を設定する必要がある.
    • よいと思う.このモジュールが提供するサブモジュール Content Taxonomy Views による機能がどこに行けば見られるのかが不明.
  • editablefields
    • CCK field を on the fly で変更する view を作成できる.
    • view の設定の Page > View Type で Editablefields -xxx を選択する.
    • view の設定の fields に CCK field を追加し,Option から Editable を選択する.
    • 使えそう.
  • Taxonomy Fields
    • ノードにある term を設定すると,その term に結び付けられた CCK field がそのノードの編集画面に現れるようにできる.
    • 複雑すぎだし,あまり必要なさそう.
  • Text Field Tags
    • テキストタイプの CCK field の表示を変更できる.しかし H1~4, b, i, u, blockquote のみなのであまり使い道はなさそう.
  • BUEditor
    • wysiwyg でない plain な textarea への入力をサポートを提供する.
  • IMCE
    • 画像,ファイルのアップローダ

27ページから続く...


  • Fileview: attachment を見る
    • attachment は通常ページ下にリスト形式で表示され,クリックするとオリジナルファイルが開く.このモジュールはクリックして開くページをカスタマイズできる.
  • Links Package: URL リンクの管理?
    • うまく動作しない.不要.
  • Upload previews: attachment を見る
    • ずばりそのとおり.必要.
  • Attachments
    • いらん.

  • Override Node Publishing Options: admin node permission なしでもノードの publish オプションを操作できる.
    • 必須.
  • Quote: コメントに引用機能.
    • いらない.
  • Node Hierarchy : 要確認.
  • Aggregation
    • インストールすると Feed という content type が追加される.Feed Item というのも追加されるが,これは Feed から生成されるものでユーザが作成することは普通はないので無視.
    • Feed を作成する.Aggregation Feed Types: から適切なものを選択(自動決定がないのがつらい).Feed URL: に外部フィードの URL を入力.Options で enable, Publish item にチェック.
    • cron が走ると,Feed Item タイプのノードが自動的に作成される.これを views で見ればいい?
      • そのとおり.views で Aggragation:Original Author というフィルタが使えるようになっているが,これでは役に立たない.Feed を作成するときに taxonomy が指定できるので,それを使うようだ.このためには,あらかじめ Feed Item に適用可能な vocab を作成しておく必要がある.
    • Feed タイプのノードを消すと,それによって生成された Feed Item ノードも消去される.
    • 結論: 不要の気がする.いちいち Feed Item のノードを作成するのが...しかしそれ以外ないか...
  • Aggregator Summary
    • 読み込む CSS がレイアウトを破壊する.だめ.
  • News Page
    • aggregator モジュールで購読しているフィードから,文字列で grep して絞り込んでリストするページを作成できる.

2007-10-18

Subversion のログを変更可能にする

# cd /path/to/repos
# cd hooks
# install -m 754 pre-revprop-change.tmpl pre-revprop-change

pre-revprop-change の中身を確かめて,

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

のようになっていることを確認すること.

ログをクライアントから変更するには,以下のとおりにする.

$ svn pe --revprop -r REV svn:log

2007-10-16

Drupal 実験中

モジュール

  • Views
    • Haiku Operating System のように,promote されたリストを自在に使いたいときに使える?
  • Last Node
    • 軽い Views として使える?
  • Node Browser
    • 評価先送り
  • Image
    • 画像ノードを作成する.
  • Image Assist
    • 画像をインラインでノード内に表示.Image モジュールで作成したリストから選べる.
    • 画像のタイトルが日本語だと画が出ない.

2007-10-15

Vim で現在のハイライト設定を見本で表示する

以下を実行すると,現在有効になっている :colorscheme におけるハイライトのカラーサンプルと,ハイライトグループのリンクの様子が表示される.これによって,色の具合が変な場合にどのハイライトグループを調整すればよいかが分かる.

:runtime syntax/hitest.vim

2007-10-14

Debian で Drupal の複数インスタンスをホストする

$ sudo apt-get install drupal5

インストールされるもの

/usr/share/drupal5/ 本体
/etc/drupal/5/ 設定
/etc/cron.d/drupal5  
/var/lib/drupal5/ 作業域
/usr/share/dbconfig-common/data/drupal5/  
/usr/share/lintian/overrides/drupal5  
/etc/apache2/conf.d/drupal.conf  

アクセス経路解析

  • /etc/apache2/conf.d/drupal.conf で Alias /drupal5 /usr/share/drupal5
  • /usr/share/drupal5/includes/bootstrap.inc の conf_path() で /etc/drupal/5/sites/XXX/settings.php の XXX が決定される.基本的には URL のホスト部分とパスからディレクトリ名の候補を作り,settings.php が見つかるまで探す.
  • settings.php で $db_url が設定される.これは同じディレクトリにある dbconfig.php で設定された $dbname などから決定される.
    • $db_url が設定されている箇所の近くの $db_prefix というのを設定すれば一つのデータベースで複数のインスタンスをサポートできそうだ.

手順

# cd /etc/drupal/5/sites
# vi default/settings.php
  $db_prefix = $dbprefix;
# vi default/dbconfig.php
  $dbprefix = '';
# mkdir /srv/drupal5
# chown www-data.www-data /srv/drupal5
# chmod g+s /srv/drupal5
# sudo -u www-data mkdir -p /srv/drupal5/sites/all/modules /srv/drupal5/sites/all/themes
# ln -s /srv/drupal5/sites/all .
# cp -a default www.example.com.drupal.one
# vi www.example.com.drupal.one/dbconfig.php
  $dbprefix = 'one_';
# sudo -u www-data mkdir /srv/drupal5/dirs
# sudo -u www-data ln -s /usr/share/drupal5 /srv/drupal5/dirs/one
# sudo -u www-data mkdir -p /srv/drupal5/files/one
# chmod 750 /srv/drupal5/files/one
# sudo -u www-data ln -s /srv/drupal5/files/one /var/lib/drupal5/files
# sudo -u www-data mkdir -p /srv/drupal5/sites/one/modules /srv/drupal5/sites/one/themes
# ln -s /srv/drupal5/sites/one/* www.example.com.drupal.one
# cd ..
# vi htaccess
  # RewriteEngine on
  # RewriteCond %{REQUEST_FILENAME} !-f
  # RewriteCond %{REQUEST_FILENAME} !-d
  # RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
  php_value mbstring.language               "neutral"
  php_value mbstring.func_overload          "0"
  php_value mbstring.internal_encoding      "UTF-8"
# vi apache.conf
  Alias /drupal/one /srv/drupal5/dirs/one
  <Directory /srv/drupal5/dirs/one>
  <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteBase /drupal/one
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
  </IfModule>
# vi /usr/share/drupal5/scripts/cron.sh
  grep '^Alias' /etc/drupal/5/apache.conf | while read a; do
      b=($a)
      curl --silent --compressed "http://${HOSTNAME}${b[1]}/cron.php"
  done
# /etc/init.d/apache2 reload
(access to http://www.example.com/drupal/one/install.php)

追加手順

# cd /etc/drupal/5/sites
# cp -a default www.example.com.drupal.two
# vi www.example.com.drupal.two/dbconfig.php
  $dbprefix = 'two_';
# sudo -u www-data ln -s /usr/share/drupal5 /srv/drupal5/dirs/two
# sudo -u www-data mkdir /srv/drupal5/files/two
# chmod 750 /srv/drupal5/files/two
# sudo -u www-data ln -s /srv/drupal5/files/two /var/lib/drupal5/files
# sudo -u www-data mkdir -p /srv/drupal5/sites/two/modules /srv/drupal5/sites/two/themes
# ln -s /srv/drupal5/sites/two/* www.example.com.drupal.one
# cd ..
# vi apache.conf
  Alias /drupal/two /srv/drupal5/dirs/two
  <Directory /srv/drupal5/dirs/two>
      Options +FollowSymLinks
      AllowOverride All
      order allow,deny
      allow from all
  <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteBase /drupal/two
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
  </IfModule>
  </Directory>
# /etc/init.d/apache2 reload
(access to http://www.example.com/drupal/two/install.php)

最初に設定すべきもの

  • Administer → Site configuration → File system → File system path
  • Administer → Site configuration → Date and time
  • Administer → Site configuration → Clean URLs

2007-10-08

crontab 中の %

crontab (5) 中のコマンド部分の % 記号は特殊な意味を持つ.最初の % までのコマンドが実行され,2 個目以降の % は改行に変換されてから実行されたコマンドの標準入力に渡される.

例:

0 7 * * *    mail -s "Good Morning" mary%Mary,%%Good morning and I love you.%

コマンド中に % を含めるには \ でエスケープする必要がある.

0 0 * * *    command > log-`date +\%Y\%m\%d`.txt

Drupal を Debian で始める

インストール

# apt-get install drupal5
(Configure database for drupal5 with dbconfig-common? -> YES)
(Database type to be used by drupal5: -> mysql)
(Password of your database's administrative user: -> mysql の root のパスワード)
(MySQL application password for drupal5: -> 適当に作る)
(Web server(s) that should be configured automatically: -> apache2)

準備

  • データベースの初期化
    • http://www.example.com/drupal5/install.php にアクセス.
  • 初期(管理)ユーザの作成
    • Username: admin, Mail: you@your.site.tld
    • Timezone を +0900 に設定.
  • アクセス権の設定
    • Administer -> Access control で,authenticated user に対して node module 系の許可を与える.
  • ユーザの作成
    • Username: kimura, Mail: metalglue@gmail.com
    • Timezone を +0900 に設定.

Clean URL

  • mod_rewrite を有効にする
  • # a2enmod rewrite
    # /etc/init.d/apache2 restart
    
  • そのままでは設定がうまくいかないので修正
  • # vi /etc/drupal/5/htaccess
      RewriteBase /drupal5
    
  • Administer -> Clean URLs に行き,「Run the clean URL test」をクリックする.
  • Clean URLs: enable を選択し,「Save configuration」をクリックする.

日本語対応

  • php の mbstring に対応する.
  • # vi /etc/drupal/5/htaccess
      php_value mbstring.language               "neutral"
      php_value mbstring.func_overload          "0"
      php_value mbstring.internal_encoding      "UTF-8"
    
    • この設定が有効であることをどのようにして試せばよいのか?

GeShi filter

  • 色つき構文強調を行うモジュール.
  • <code> または <blockcode> で囲むと強調してくれる.
  • Pre-requisites とインストール.
  • # mkdir -p /usr/share/drupal5/sites/all/modules
    # cd !$
    # tar xf geshifilter.tar.gz
    # cd geshifilter
    # tar xf geshi.tar.gz
    
  • Administer -> Input formats -> Filtered HTML -> GeSHi filter をオン.
  • Administer -> Input formats -> Filtered HTML input format -> Allowd HTML Tags に <blockcode> を加える.
  • Administer -> Input formats -> Filtered HTML input format -> Rearrange