ノードの追加時に、既定値と少し値を変えた追加画面からスタートさせたい

Events happening in the community are now at Drupal community events on www.drupal.org.
wataru.kato's picture

Drupal7です。

ノードの追加のリンクをViewsで作ったPageのヘッダーに入れています。
#Viewsで絞り込み確認しつつ、必要なコンテンツを適宜追加する画面にしたい

これを、特定のPageでは、コンテンツタイプで既定したそのノードの既定値では

Tags=(空)

なのですが、これを特定のリンクでは

Tags="仕事"

といった、ノードの既定値とは異なる値がセットされた状態の新規追加画面に遷移させられないか、考えています。

モジュールで追加時のイベントを自作する、といった手段以外ないでしょうか?
その場合もリンクのURLの値などで判定ができるようにしないといけませんが・・・

Comments

Prepopulateモジュールで出来そうですね。

qchan's picture

Node作成URLのクエリーにフィールド名と値を付けると、それを受け取って自動入力することができます。
一応Taxonomyも埋められるようですが、試行錯誤は必要でしょうね。

Prepopulate | drupal.org http://drupal.org/project/prepopulate

デフォルトを指定していた場合、それを上書きできるかはわかりませんので、
URL側でデフォルトを設定して、URL書き別けるなど試しながら進めてみてください。

途中経過

wataru.kato's picture

情報ありがとうございます。

READMEにあった

http://drupal.org/node/228167

を参考に、Prepopulateモジュールにて、デフォルト値の指定ができました。

以下の記述ですと、タイトルに"test"と入ってくれるリンクボタンを作成できました。

http://(drupalのサイト)/node/add/article?edit[title]=test

ですが、私がやりたかったTaxonomyのタグですと、うまく行きません。
単純なフィールドではないせいだと思いますが・・・
以下どちらも、デフォルト値が入らず通常の新規作成画面になります。

http://(drupalのサイト)/node/add/article?edit[field_tags]=test
http://(drupalのサイト)/node/add/article?edit[field_tags][0]=test

まだ実装されていないのか、私の記述方法が悪いのか、どっちかなのでしょうが・・・
もうすこし試します。

編集しました。

Seiji's picture

公式prepopulateのドキュメントだと
http://drupal.org/node/228167

http://www.example.com/node/add/content?edit[taxonomy][1]=2

という事になってますね。

これがうまく行きません…

wataru.kato's picture

私の今の環境では、

タクソノミー名=tags
追加したいタームのID=40
コンテンツタイプ=article
コンテンツタイプに追加したフィールド名=field_tags

なのですが、

× node/add/article?edit[taxonomy][1]=40
× node/add/article?edit[tags][1]=40
× node/add/article?edit[field_tags][1]=40

× node/add/article?edit[taxonomy][0]=40
× node/add/article?edit[tags][0]=40
× node/add/article?edit[field_tags][0]=40

でした。代入する値がタームのIDなのはあっていると思うのですが、
代入先の変数名?がフィールド名(field_tags)なのかタクソノミー名(tags)なのか"taxonomy"という固定値なのか、読み取れていません。
あと2次元目は配列のインデックスと読んだのですが、0始まりか1始まりか。両方試しました。
それとも2次元目はタクソノミーのIDなのか・・・

Handbookページには

qchan's picture

Handbookページには
http://drupal.org/node/228167

以下の様なURLを書く場合
http://www.example.com/node/add/content?edit[taxonomy][1]=2

[1] がボキャブラリID
2 がタームID とありますね。

例えばタクソノミー名=tags のボキャブラリIDが3で
追加したいタームのID=40だったら

node/add/article?edit[taxonomy][3]=40

となるのではないでしょうか。
確かにDrupal7からボキャブラリのIDを管理画面で見つけにくくなってます。
ボキャブラリIDの探し方としては

*Develモジュールを入れて、該当Nodeの中を見る
*DBのtaxonomy_vocabularyテーブルを見る。
*DevelのPHP実行ブロック内で

$tax=taxonomy_vocabulary_machine_name_load("tags");
echo $tax->vid;

などでも見れますね。

wataru.kato's picture

実は、tagsのボキャブラリIDは1でした。ですので、

× node/add/article?edit[taxonomy][1]=40

で、やはりうまく行きませんでした。
ですが、今気が付きましたが私はtagsの入力個数を無制限で使っています。

ですので、1個ずつのタクソノミーには対応できるが、複数個入力可の場合には
このモジュールは対応できていない、という事かもしれません。

#既にデータ登録済みで今のコンテンツタイプではタクソノミー1個のテストができません。
#どこかでテスト用のコンテンツタイプを作ってやってみます