Drupal

Drupal で、ファイルシステムで設定したパスを取得する (file_directory_path)

Drupal では、画像やファイルをアップロードする先のディレクトリは、ファイルシステムへのパスとして admin/settings/file-system で設定できるようになっている。このファイルシステムへのパスを自身のモジュールから参照するには、

file_directory_path()

という API 関数を呼び出せばよい。

続きを読む

Python で、XMLRPC を使う。

Python で XMLRPC を扱うには、涙がちょちょぎれる(死語?)ほど簡単であった。XMLRPC サーバ側を Drupal にすると、その生産性は何倍にもなるであろう。

そこでまず、

  • XMLRPC サーバとしての Drupal 側ではアクセスしてきた XMLRPC クライアントの IP アドレスを返してあげる機能、

すなわち get_addr メソッドを実装する。そして

  • Drupal にアクセスして get_addr メソッドをコールする Python の XMLRPC クライアント

を考えてみる。

しかも Drupal の XMLRPC サーバには、Drupal のユーザー名とパスワード(今回は admin / password)でログインチェックも行うようにする。

続きを読む

Drupal で、カテゴリ(taxnomy)ごとに投稿数をカウントする方法

Druapl で、Movable Type のようにブロックに表示するカテゴリの横に投稿数をカウントして出す方法を考える。

View モジュールその他何か taxnomy 関連のモジュールを使えばできそうな気がしたのだが、探してみて Site Menu モジュールがいいセン行っているが、ブロックに taxnomy をメニューとして表示するときにはカウンタは表示されない。

ブロックそのものに直接記述するコードは以下のようになると思う。入力書式のラジオボタンで、PHP code を選択することを忘れないこと。

続きを読む

Drupal で、サイトを複製する方法

Drupal は、設定ファイル settings.php を除き、設定情報やコンテンツはすべてデータベースに入っているので、リファレンスモデルとなるサイトを作って(すなわち、インストールした直後または、少しの修正をほどこしたサイト)、そこでできたデータベースまたはテーブルをコピーすればよい。

まずは雛形となるサイト(http://template.yourdomain.com など)を作る。その後、settings.php の内容を修正したものを適切なディレクトリにコピーしてから、http://newsite.yourdomain.com/install.php を走らせる。

以下はサイトを複製する SQL スクリプト。仕様としては、

  • コピー元となるサイト
    • データベース名: drupal
    • テーブル名のプリフィックス: template_
  • コピー先のサイト
    • データベース名: drupal
    • テーブル名のプリフィックス: newsite_

このスクリプトを実行するとサイトを大量生産できるのだ。

続きを読む

Drupal で、Leech を設定する方法

YouTube (http://youtube.com/watch?v=nRmd6whQFlY) に設定の仕方ビデオもあるけど、私なりの方法をまとめてみた。

参考:Drupal で、Leech って一体何なんだ?

  1. Leech 用のコンテンツタイプを新規に作成

    http://yourdomain.com/admin/content/types/add にアクセスする。

    • 名前:RSS フィード(←私はそのように名付けている。または、Leech としてもいいと思う)
    • タイプ:rss (または、leech)
    • 説明:すでにご自身のブログをお持ちの場合は、URL 欄に RSS フィードのアドレス (URL) を入力すると、タイトルなどに自動的にサイトの情報が反映されます。
    • デフォルトオプション:掲載 オン(デフォルト)
    • フロントページに掲載: オン(デフォルト)
    • 掲載位置をリスト上部に固定: オフ(デフォルト)
    • 新しいリビジョンの作:オフ(デフォルト)
    • コメントのデフォルト設定:無効(←任意、好みに応じて)
    • Enable leech:オン
    • 更新間隔:15分
    • Generate GUIDs:オフ
    • Publish news items:オン
    • Update already existing news items:オン
    • Delete news items older than:しない
    • Promote items:All
    • Use dates found in feed (if possible):オン
    • Show "original article"/ "visit site" link:Always

    コンテンツタイプを保存する。

  2. (上で定義した)RSSフィードのコンテンツを作成

    コンテンツタイプ名を rss とした場合は、http://yourdomain.com/node/add/rss にアクセスする。

    • タイトル:RSS フィードテンプレート(←私はこのような名前をつけているが、任意でよい)
    • 本文:(空のまま)
    • 掲載:オフ
    • フロントページに掲載:オフ

    このままいったん保存する。

  3. そのまま、このコンテンツを編集する

    http://yourdomain.com/node/1/edit にアクセスする。

    template タブで、Saving PHP code: のところに

    <?php $node->field_body[0]['value'] .= $node->body; ?>

    と書いて、Create ボタンを押す。

  4. RSS フィードの作成

    これで Leech したい RSS を見つけてきて、RSSフィードを新規作成し、URL をコピーする。

    設定が正しくされていれば、URL を貼りつけてカーソルのフォーカスを移動したときに、タイトルやその他の情報が自動取得され、各フィールドに埋め込まれる。

  5. これで動かなかったら、
    • アクセスコントロールの権限をチェックする。
    • cron の設定を確かめる。Leech は、cron.php に依存するので、Leech をセットアップしたサイトでは cron が正しく動いていなければならない。
続きを読む

Drupal で、サードパーティ製のモジュールやテーマを置くディレクトリ(sites/all/modules、sites/all/themes)

バージョン 4.x までの Drupal では、ダウンロードしてきたモジュールやテーマは、modules ディレクトリや themes ディレクトリに展開・インストールしていた。

しかし、これだとコアをアップデートしたいときに、コアのモジュールやテーマとダウンロードしてきたモジュールやテーマがごっちゃになってしまうという問題があった。それを解決するために、、

続きを読む

Drupal のリンク集

  • Drupal 本家(テーマ、モジュールもここからダウンロード)
    RSS リーダーに登録するべき。
    http://drupal.org/

  • Drupal ジャパン
    http://drupal.jp/

  • もうひとつの Drupal ジャパン - Drupal日本語情報集約サイト
    日本で Drupal コミュニティが分断される。このような状態はよくない。Drupal ジャパンにはがんばって欲しい。
    http://www.drupal-jbox.net/

  • Sourceforge の Drupal日本語プロジェクト
    Drupal という共通項があるのだから、日本人同士よく話し合いたいものだ。
    http://sourceforge.jp/projects/drupal-jp/

  • Dries Buytaert (Drupal の作者)
    RSS リーダーに登録するべき。
    http://buytaert.net/

  • Drupal のサイトの例(Dries 君のページ)
    http://buytaert.net/tag/drupal-sites

  • Drupal API Reference
    私もよく使うが、掲載されているのはサンプルソースではなく、対応するコアコードの部分なので、あまり役に立たない。
    http://api.drupal.org/

  • Drupal Coding Standards
    Drupal でのソースコードのインデントはスペース2つ。
    http://drupal.org/node/508

  • Creating modules - a tutorial: Drupal 5.x
    モジュール開発はまずはここからだろう。英語だけど、これは私もよく読みましたよ!
    http://drupal.org/node/82920

  • モジュール開発(入門編)
    Drupal のモジュール開発で、日本で説明してあるサイトは少ないから、これもみておくべき。
    http://neoceed.co.jp/ja/node/36

  • テーマ作成ガイド
    テーマについての説明。日本語資料としては貴重。
    http://www.cms-solution.jp/themeguide

<iframe src="http://xml-jp.amznxslt.com/onca/xml?Service=AWSECommerceService&ItemId=1590597559&AssociateTag=twinklexxx-22&AWSAccessKeyId=152ZP71KPB47XM09CS02&Operation=ItemLookup&IdType=ASIN&ContentType=text%2Fhtml&Version=2006-03-08&Page=1&ResponseGroup=ItemAttributes,Images,Offers&Style=http://perltips.twinkle.cc/files/sites/perltips/xsl/amazon.xsl" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" height="175"></iframe>

Updated: 2007/08/05
Original: 2007/06/24

続きを読む

Drupal をインストールした後にすべきこと。

  1. 最初のアカウントを作る。たとえば admin という名前で UNIX でいうところの root 権限を持つユーザーを作る。
  2. 左サイドバーのメニューから Administer をクリック、以降、システムの管理メニューから設定を行う。
  3. 作業をしやすくするためにブロックでナビゲーションブロックを右サイドバーへ。
  4. クリーンURLを有効にする
  5. モジュール Locale、Path、Profile、Statistics を有効にする
  6. ロールに administrators を追加
  7. アクセスコントロールを設定。特に、administrators ロールに権限をすべて与える。
  8. 設定作業をしやすくするため、メニューの管理セクション、コンテンツの管理、サイトの構築、サイトの環境設定、ユーザーの管理、ログで、展開にチェックをいれて有効にする。
  9. 日本語翻訳ファイルを設定
  10. サイト情報を設定
  11. 日付と時刻でタイムゾーンと日付フォーマットを設定
  12. ファイルシステムを設定。files/sites/subdomain_name としている。
  13. 入力書式を設定。<img> <font> <div> <iframe> <code> などを必要に応じて追加する。
  14. 画像ツールキットで、JPEG 品質を 100% に。
  15. アクセスログの設定で、アクセスログの取得:有効、その他ログの期間なども設定。
  16. cron.php を crontabでスケジューリングする。
  17. テーマを決定
  18. Google AdSense のモジュールをインストール、設定する。
  19. Google Analytics のモジュールをインストール、設定する。
  20. XML Sitemap モジュールをインストールする。
  21. Goolge ウェブマスターツールにサイトマップを登録する。
  22. パフォーマンスで、キャッシュを有効にする。Drupal (に限らずだが)で出力するページはスタイルシートのタグだらけの重いものなので、効果がある。
続きを読む

Drupal で、サブドメイン間のセッションを混乱させないために。

Drpual はひとつのインストール、ひとつのデータベースで、複数のサブドメインのサイトを運用することができる。レンタルサーバでサブドメインが unlimited な人などは重宝するだろう(私がそう)。なぜひとつのデータベースで複数のサイトを利用するといいことがあるのかといえば、日本人の場合は日本語翻訳テーブルが各サイトで共用できること。それ以外に利点があるかっていうと、バックアップがひとつですんだりユーザーテーブルも共用する気になればできたり、まぁ運用方法によるとは思う。

それで、

続きを読む
Drupal を購読