warning: Creating default object from empty value in /var/www/drupal-5.23/modules/taxonomy/taxonomy.module on line 1418.

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

Drupal は、設定ファイル settings.php を除き、設定情報やコンテンツはすべてデータベースに入っているので、リファレンスモデルとなるサイトを作って(すなわち、インストールした直後または、少しの修正をほどこしたサイト)、そこでできたデータベースまたはテーブルをコピーすればよい。 まずは雛形となるサイト(https://template.yourdomain.com など)を作る。その後、settings.php の内容を修正したものを適切なディレクトリにコピーしてから、https://newsite.yourdomain.com/install.php を走らせる。 以下はサイトを複製する SQL スクリプト。仕様としては、
  • コピー元となるサイト
    • データベース名: drupal
    • テーブル名のプリフィックス: template_
  • コピー先のサイト
    • データベース名: drupal
    • テーブル名のプリフィックス: newsite_
このスクリプトを実行するとサイトを大量生産できるのだ。
Drupal は、設定ファイル settings.php を除き、設定情報やコンテンツはすべてデータベースに入っているので、リファレンスモデルとなるサイトを作って(すなわち、インストールした直後または、少しの修正をほどこしたサイト)、そこでできたデータベースまたはテーブルをコピーすればよい。 まずは雛形となるサイト(https://template.yourdomain.com など)を作る。その後、settings.php の内容を修正したものを適切なディレクトリにコピーしてから、https://newsite.yourdomain.com/install.php を走らせる。 以下はサイトを複製する SQL スクリプト。仕様としては、
  • コピー元となるサイト
    • データベース名: drupal
    • テーブル名のプリフィックス: template_
  • コピー先のサイト
    • データベース名: drupal
    • テーブル名のプリフィックス: newsite_
このスクリプトを実行するとサイトを大量生産できるのだ。

Drupal で、Leech を設定する方法

YouTube (https://youtube.com/watch?v=nRmd6whQFlY) に設定の仕方ビデオもあるけど、私なりの方法をまとめてみた。 参考:Drupal で、Leech って一体何なんだ?
  1. Leech 用のコンテンツタイプを新規に作成 https://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 とした場合は、https://yourdomain.com/node/add/rss にアクセスする。
    • タイトル:RSS フィードテンプレート(←私はこのような名前をつけているが、任意でよい)
    • 本文:(空のまま)
    • 掲載:オフ
    • フロントページに掲載:オフ
    このままいったん保存する。
  3. そのまま、このコンテンツを編集する https://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 が正しく動いていなければならない。
YouTube (https://youtube.com/watch?v=nRmd6whQFlY) に設定の仕方ビデオもあるけど、私なりの方法をまとめてみた。 参考:Drupal で、Leech って一体何なんだ?
  1. Leech 用のコンテンツタイプを新規に作成 https://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 とした場合は、https://yourdomain.com/node/add/rss にアクセスする。
    • タイトル:RSS フィードテンプレート(←私はこのような名前をつけているが、任意でよい)
    • 本文:(空のまま)
    • 掲載:オフ
    • フロントページに掲載:オフ
    このままいったん保存する。
  3. そのまま、このコンテンツを編集する https://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 ディレクトリに展開・インストールしていた。 しかし、これだとコアをアップデートしたいときに、コアのモジュールやテーマとダウンロードしてきたモジュールやテーマがごっちゃになってしまうという問題があった。それを解決するために、、
バージョン 4.x までの Drupal では、ダウンロードしてきたモジュールやテーマは、modules ディレクトリや themes ディレクトリに展開・インストールしていた。 しかし、これだとコアをアップデートしたいときに、コアのモジュールやテーマとダウンロードしてきたモジュールやテーマがごっちゃになってしまうという問題があった。それを解決するために、、

Drupal で、フォーム関数が実行される順番 (Form API)

フォームが業務を規定すると、Dries 君は云うのだ。ウェブセントリックなウェブ 2.0 のパラダイムでは、これは正しいように思える。我々はブラウザの中でできることしか、できないのだ。値の入力はフォームが基本、ということだ。 さて、Drupal の Form API は、複雑で、理解しづらい。フォーム間の値の受け渡しに至っては未熟なところがあるようにも思える。現在のところ事実上 Drupal 唯一の参考書である Pro Drupal Development を読んでもわからないところもある。そこでサンプルフォームを作り、とりあえず Form API に関係する関数がどのような順番で実行されるのか試してみた(試したのは Drupal 5)。
フォームが業務を規定すると、Dries 君は云うのだ。ウェブセントリックなウェブ 2.0 のパラダイムでは、これは正しいように思える。我々はブラウザの中でできることしか、できないのだ。値の入力はフォームが基本、ということだ。 さて、Drupal の Form API は、複雑で、理解しづらい。フォーム間の値の受け渡しに至っては未熟なところがあるようにも思える。現在のところ事実上 Drupal 唯一の参考書である Pro Drupal Development を読んでもわからないところもある。そこでサンプルフォームを作り、とりあえず Form API に関係する関数がどのような順番で実行されるのか試してみた(試したのは Drupal 5)。