Posted by wataru.kato on May 7, 2013 at 8:45am
Drupal7です。
ノードの追加のリンクをViewsで作ったPageのヘッダーに入れています。
#Viewsで絞り込み確認しつつ、必要なコンテンツを適宜追加する画面にしたい
これを、特定のPageでは、コンテンツタイプで既定したそのノードの既定値では
Tags=(空)
なのですが、これを特定のリンクでは
Tags="仕事"
といった、ノードの既定値とは異なる値がセットされた状態の新規追加画面に遷移させられないか、考えています。
モジュールで追加時のイベントを自作する、といった手段以外ないでしょうか?
その場合もリンクのURLの値などで判定ができるようにしないといけませんが・・・
Comments
Prepopulateモジュールで出来そうですね。
Node作成URLのクエリーにフィールド名と値を付けると、それを受け取って自動入力することができます。
一応Taxonomyも埋められるようですが、試行錯誤は必要でしょうね。
Prepopulate | drupal.org http://drupal.org/project/prepopulate
デフォルトを指定していた場合、それを上書きできるかはわかりませんので、
URL側でデフォルトを設定して、URL書き別けるなど試しながら進めてみてください。
途中経過
情報ありがとうございます。
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
まだ実装されていないのか、私の記述方法が悪いのか、どっちかなのでしょうが・・・
もうすこし試します。
編集しました。
公式prepopulateのドキュメントだと
http://drupal.org/node/228167
http://www.example.com/node/add/content?edit[taxonomy][1]=2
という事になってますね。
これがうまく行きません…
私の今の環境では、
タクソノミー名=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ページには
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実行ブロック内で
などでも見れますね。
タクソノミーが複数入力可、だから?
実は、tagsのボキャブラリIDは1でした。ですので、
× node/add/article?edit[taxonomy][1]=40
で、やはりうまく行きませんでした。
ですが、今気が付きましたが私はtagsの入力個数を無制限で使っています。
ですので、1個ずつのタクソノミーには対応できるが、複数個入力可の場合には
このモジュールは対応できていない、という事かもしれません。
#既にデータ登録済みで今のコンテンツタイプではタクソノミー1個のテストができません。
#どこかでテスト用のコンテンツタイプを作ってやってみます