web-dev-qa-db-ja.com

ノード編集フォームを複数のページに分割します(できればパネルバリアントを使用)

タスク

私の目標は、ノード編集ページを分割して、メインのフィールドフォームをデフォルトのページ(追加ページ自体またはmynodeurl/ edit)のままにし、その他のフィールドフォームを他のフォームに追加することですページ(例mynodeurl/ option&mynodeurl/ otheroption)。

これを行う最良の方法(およびそれを機能させる方法)は、node add/editページにいくつかのバリアントを使用することだと思います(Panels Module)、URLパスはstring:url path selection rulesでフィルタリングされます。

問題

文字列のurlパス選択ルールをそのように機能させる方法がわかりません(実際には、文字列のurlパスの選択ルールがノード(またはノードの追加/編集ページ)でどのように機能するかはまったく知りません。カスタムページにURLパスベースの選択ルールを実装し、ノードには決して実装しない)。

私がそれを解決しようとした方法

/ option option/ option nodetype // option etc. to the node template and the node add\edit form variant、the only機能したのは、現在のパスが "/ option"でないときにトリガーするようにメインノードビューのバリアントを設定し、現在のパスが "/のときにトリガーする追加のバリアントを設定するときです。オプション」、ノードの追加/編集ページでまったく同じことが機能しませんでした。 ( http://shot.faintrush.me/xfvu1c0aic.png <-このスクリーンショットを参照してください)。

Nodeテンプレートページを使用している唯一のバリアントであり、そこにフォームを追加しても機能しないため、私にとっては役に立たない。( Nodeテンプレートページでフォームを機能させることもできます)。

もちろん、* /オプションはおそらくそこに置くのに最適ではありません。私が見つけた唯一のオプションで、少なくとも少しは生きています。

追加情報

ここで説明したように、デフォルトで私のURLは機能します-> https://drupal.org/node/1993068 (これらのURLエイリアスは自動的に作成されますが、pathauto + aを使用する方法とは異なりますカスタムトークン)siteurl.com/nodetype/25/editのようなリンクを機能させるには、sub-pathautoモジュールを使用します(sub-pathauto urlの深さを2に設定して、siteurl.com/nodetype/25/edit /にアクセスしようとしました上記のスクリーンショットの設定のオプション-機能しませんでした)。

追加情報

/ node /%node/optionパスを使用してカスタムページを作成し、%nodeノード編集フォーム:ノードIDコンテキストですが、次の理由で別の問題が発生していますNode idは実際にはURLパスと一致せず、ノード編集フォームに適切なコンテキストを割り当てる方法はありません-URLで使用している一意のコンテンツタイプノードID(もう一度、リンクから問題を少しだけ読んでください)トークンや変数によって取得するのではなく、URLエイリアスはルールモジュールによって一度だけ生成されます。

私は同じ問題(少し異なる単語で書かれた)をdrupal公式Webサイトの問題キューにパネルモジュールに投稿しましたが、数日間アクティビティがないようですので、ここで試してみましょう。

何か助けていただければ幸いです!

3
FaintRush

Multistep Nodeform をご覧ください。

enter image description here

ステップごとに、このステップに含めるフィールドを定義できます。 「フィールド」には、「タイトル」、「本文」、「オーサリング情報」などのコアフィールドと、他のモジュールで定義されたフィールド(日付など)が含まれます。

1
leymannx

URLをテストする場合、元のパスをテストします。したがって、node/15にmatch/christmasのエイリアスがあり、match/christmas/optionsで別のパネルを使用する場合は、パネルに「PHPコード選択ルール」を追加できます。私が管理した方法は、dpm()で引数を出力する必要があります:

dpm(arg(0)); // node
dpm(arg(1)); // the node id, ex: 15
dpm(arg(2)); // options

それらを私はコードを次のように更新しました:

if (arg(0) == 'node' && arg(1) == 'options') {
    return TRUE;
}
else {
    return FALSE;
}

そしてそれは働いた= D

しかし、PHPコードを配置することはベストプラクティスではありません。 SO私は、「文字列URLパス」選択ルールを作成しました。そのパスが使用されていることを確認しました。

node/*/options

これが役立つことを願って=)

0
nimbfire

私は質問を完全に理解していませんが、カバーすることがたくさんあるので、ここにいくつかの断片と断片があります、そしてうまくいけば私たちはそれからより良いものを解決することができます。

何に価値があるかについては、Panelsを参照してください。しかし、問題の中心となるのはページマネージャーです。

Node idが実際にURLパスと一致せず、ノード編集フォームに適切なコンテキストを割り当てる方法がないため、別の問題が発生しています。

ノードの独自の識別子スキームを思いついた場合、ページマネージャーはそれを知りません。あなたはそれを言うことができますが、新しいコンテキストタイプを実装しています。 Ctoolsプラグインとは何か(コンテンツタイプ、アクセスなど)、およびそれらをどのように作成するか? を参照してください。

Nodeテンプレートページでフォームを機能させる方法を知っている場合は、ここで回答することもできます。

Node /%/ editでは、編集フォームのコンテキストは暗黙的です。node/%では、関係に移動して手動で明示的に追加できますが、それがどのように役立つかわかりません。さらに、ノードビューを使用してノードを編集することは一般的に奇妙です。

0
Letharion

Field Groupモジュールは、ノード編集フォームを水平タブに分割できます。たとえば、各タブの下に、表示するフィールドを選択できます。

ここ: https://www.drupal.org/project/field_group

0
W.M.