top


総投稿数 本 
no_

スポンサーサイト

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

Drupal データ組み込み:あるDrupalプロジェクトで感激。node_importモジュールと、rulesモジュール組み合わせで、効率データインポート! ・・・ 【今日のDrupal】

 2010-02-16
 Drupalサイト構築。
 実は、私の「創ったmetaboy」でのことではなく
 早速、ある他のプロジェクトで、Drupalを採用。
 そちらでのお話・・・

 ある程度サイト構成かたまってきて
 ・それでは雰囲気掴むために
  ダミーデータを入れよう・・・と。


 と思ったら、(思い通りのことを実現するには)
 標準機能ではできない
 1日嵌り・・・フォーラムにもお世話に
 ・・・自己解決できて
 ・・・(改めて)Drupal のモジュールの
    面白さと便利さ、可能性を感じました・・・とさ。


  追記に顛末  ▼


 ところで、こちらは・・・


◇今日のGoogle(2010/02/15)
今日のGoogle(2010/02/16)
 ※バンクーバー2010
 ずっと、バンクーバー、
 期間中ずっとだよね。失敗したぁ。
最初から毎日ロゴ抑えておけばよかった。
(誰かやってるんだろうなぁ)

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


more

************************************************
◎  node_importモジュールと、rulesモジュールで、
   データインポート自由自在 の巻
                   :Drupalはどう?

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


 やりたいこと!
++++++++++++++++++++++++++++++
 □親カテゴリ と
  子カテゴリ をまとめて
  一括組み込みしたい
------------------------------


 【条件】
 □親カテゴリ は、
  独自に用意した「カテゴリ」という
  メニューに紐付けたい
 □子カテゴリは、それぞれの
  紐付けされる「親カテゴリ」
  の構成そのままに組み込みたい。

 これに関する具体的な指南は見つからなかったけれど、
 これって結構あるんじゃないかなぁ・・・


 ■試行錯誤


  □まず、node_importモジュール


 

  ◆[モジュール] Node import

Node import | drupal.org
Node import | drupal.org データを組みときに
 非常に重宝されている
 ・・・というネットでの記事を
 よく見かけますね。

 ・・・しかし、
     そもそもこういう機能が
     標準にはないんですね、Drupal。
     ・構造や定義などをインアウトする機能は
      あるようですが(それでデータも?)
     短銃にデータだけまとめてインアウトできる
     機能・・・あっても良さそうなもの。



  □ダウンロード>いつものように sites/all/modules/ 以下にあげて
  □管理セクション で モジュール 有効化。

  ※当然(?)
    「コンテンツの管理」に入りました。
   「コンテンツの管理」に入りました
    使ってみましょう・・・


   □環境設定
   環境設定
    ここで、用意したファイルを置く場所の設定 と
    そのファイルの所有者(Owner) の設定が必要なようです。
    ごもっとも。


   □New import
   「コンテンツの管理」に入りました
    英文での解説がズラリ・・・
    軽く(?)読み飛ばして▼
   読み込むコンテンツタイプを決定
    読み込むコンテンツタイプを決定。
    (今回はまず 親カテゴリ:カテゴリ1)
   環境設定で用意したファイルを選択
    環境設定で用意したファイルを選択します。
      ▼
   用意したテキストファイルの最初の行に「項目名」を
    ・[First row contains column names] にチェックを入れると
     用意したテキストファイルの最初の行に「項目名」を
     入れることができて わかり易い。
    ※Smaple data: は実際のファイルから抜粋して読み込まれていて
      「カテゴリ名」~の 行は、実際に
      用意したテキストファイルの最初の行に入れてある。
      ▼
   選択プルダウンで、項目を紐付ける設定ができる
    ・左側に「コンテンツタイプ」での項目名
    ・右側に「用意したテキストファイル」から
        選択プルダウンで、項目を紐付ける設定ができる。


    よしよし、完璧やぁ~ん。


    ・・・と、どこが!


    データを個別で入れるときに設定できる
    ・メニューの設定 が出てこないじゃないか!
     ※これでは、自動的に
      用意したメニュー「カテゴリ」に組み込むことができない!


    ・・・・・
    嵌った
    ・・・・・


    結局
    かなりの時間、ネット上で情報を探したけれど判らず・・・
   □(またもや) フォーラムのお世話になった。
    > node_importモジュールについて、お教えいただけますか?
     (いつものことですが)怪答をいただき、
      ヒントを与えていただき、その後 試行錯誤。
      Rulesモジュールと組み合わせるんだぁ!


      学んだこと:できることはできる事で行い
            発想を変えて他の機能と組み合わせるべし


      ところで、最後に、ヒントをお教えいただいた
      Antoineさんが、私の解決方法が
       「metaboyのphp snippetをrulesのissue queueに持って行くのかな?」
      なんて、
      「またぁ~」といううれしいコメントを。
      駄目です。すぐに木に登る性格なので。


    で、


 

  ◆[モジュール] Rules

Rules | drupal.org
Rules | drupal.org いろいろな場面で、
 ・何かのトリガ をきっかけに
 ・特定のアクション をおこす

 ・・・これ、
     今回利用してみて、ほんとに便利。
     今後もいろいろな場面で使いそうです。



  □ダウンロード>いつものように sites/all/modules/ 以下にあげて
  □管理セクション で モジュール 有効化。

  ※ダッシュボード 直下に入りましたねぇ。
   ダッシュボード 直下に入りましたねぇ


    早速・・・

   □概観
   概観
    最初にいくつかサンプルが用意されています。
    結局参照はしませんでしたが・・・
    ・after_newcontents_category1
    ・after_newcontents_category2
    の2つが今回作成したものです。


    要は、node_importモジュールで 一括組み込みした際
    この
     ・新しいコンテンツを保存後
      というのが発動されて、決められた動作を行う
    と。


   □ルールを新しく追加
   名前を入れて、イベントを起こすタイミング(トリガ)を決めて
    名前を入れて、イベントを起こすタイミング(トリガ)を決めて


   □ルールエレメント
    ・条件(IF)は、簡単。
     今回 オリジナルで用意しているコンテンツタイプを設定。
    ・課題は
     アクション(DO)


     ここに、期待しているアクション
     ・メニュー設定 に関する項目が無い!


 

     で、フォーラムでも報告しているように
     ・独自のPHPコードを実行 というのを選んで、
$node->menu['menu_name'] = "menu-category1";
$node->menu['link_title'] = $node->title;
return array("node" => $node);
 と。
     要は、
     オブジェクト構造の目的の項目
      ・上位メニュー:menu['menu_name']
      ・メニューでの名称:menu['link_title']
     を直接指定して、$node を再構築。
     それを返してやればいいわけです。
     わかり易い。

    なお、カテゴリ2はまた少し違います。
    こちらは、特定の紐付けではなく、それぞれの親カテゴリへの
    紐付けなので、次のような方法をとりました。


   □カテゴリ2
    ・まず、ダミーの項目をひとつ用意しておき
    ・親カテゴリの
      mlid を 用意するテキストファイルにも準備。


     これも、node_import の標準では組み込むところは
     ありませんので、ダミー項目に入れておきます。


 

    ・その後、ルールを新しく追加して、
     こちらのルールは、
     ・独自のPHPコードを実行 で、
$node->menu['menu_name'] = "menu-category1";
$node->menu['link_title'] = $node->title;
$node->menu['plid'] = $node->field_category2_dummyid[0][value];
return array("node" => $node);
 と。
     つまりダミー項目に入れておいた 親のmlid を
     ここでは、親(parent)を示す plid に
     入れてやる、と。

    おぉ、うまくいったぞ。使えるなぁ、Rules


 また、Drupalの面白さに嵌ってゆくmetaboy でした。

commentsコメント
comment_post












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

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

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

 

リンク集

 

最近の記事

 

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

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

 

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