0

さまざまな詳細を要求し、それらの詳細を新しく作成されたノードのプロパティとして保存するページの編集ウィジェットを作成しようとしています。

例えば: Make Model Mileage

それらを /content/cars などの親ノードの下にノードとして保存したいと思います。

/content/cars の下に新しいノードを作成し、そこにそれらのプロパティを保存するウィジェットを取得するにはどうすればよいですか?

作成したサーブレットにデータを送信する必要がありますか? または、これを有効にするオプションはありますか?

4

3 に答える 3

2

おそらくやりたいことは、ノードを作成するパスの包含ページにコンポーネントを含めることです。

たとえば、ページ/ content / carsがあり、その下の/ content / cars / jcr:content / chevyにChevyノードを作成する場合は、次のフラグメントにコンポーネントを含めます。

<cq:include path="chevy" resourceType="myapp/components/manufacturer" />

これにはコンテンツが含まれ、レンダリングされ、/ apps / myapp / components/manufacturerにあるコンポーネントで編集できるようになります。

必要に応じて、ノードを絶対パスに配置することもできます。たとえば、別のページの/ content / data / cars / chevyにあるコンテンツを参照する場合は、次のように使用できます。

<cq:include path="/content/data/cars/chevy" resourceType="myapp/components/manufacturer" />

于 2012-09-07T17:12:55.657 に答える
1

Adobe から提供されたチートシートに基づく:

http://dev.day.com/content/ddc/blog/2008/07/cheatsheet/_jcr_content/par/download/file.res/cheatsheet.pdf

デフォルトの Sling POST サーブレットは、ExtJS ダイアログに含まれる入力タグの「name」属性を調べることで、更新する JCR プロパティを認識します。テキストフィールドやドロップダウンフィールドなどのウィジェットを構成して、特定のプロパティをターゲットにして更新するには、ウィジェット定義でプロパティの名前を指定する必要があります。

たとえば、XML ファイルを使用して /content/cars でページ ダイアログを定義していて、ユーザーがモデル、メーカー、および製造年を car ページの jcr:content ノードに保存できるウィジェットが必要であるとします。関連するダイアログ定義には、次のようなノードが含まれます。

<make
    jcr:primaryType="cq:Widget"
    xtype="textfield"
    name="./make"/>
<model
    jcr:primaryType="cq:Widget"
    xtype="textfield"
    name="./model"/>
<year
    jcr:primaryType="cq:Widget"
    xtype="textfield"
    name="./year"/>

ウィジェット タイプを変更するにはxtype属性を調整し、プロパティをターゲットに変更するにはname属性を調整します。ダイアログが呼び出されているページ/コンポーネントのコンテンツ ノードからの相対値であることに注意してください (この場合は、/content/cars/jcr:content からの相対値です)。

別の例: make の値を /content/cars/jcr:content/brands のようなノードの「make」というプロパティに保存したいとすると、定義は次のようになります。

<make
    jcr:primaryType="cq:Widget"
    xtype="textfield"
    name="./brands/make"/>

利用可能な xtypes のリファレンスについては、 http ://dev.day.com/docs/en/cq/current/widgets-api/index.html をご覧ください。

于 2012-09-11T20:46:25.897 に答える
0

これを試して :

この js 関数をページに追加します

function doOpenDlg(url, path) {
    var d = CQ.WCM.getDialog(url);
    var reloadPage = true;
    if(d) {
        if( reloadPage ) {
            d.success = function(form, action) {
                CQ.Util.reload(CQ.WCM.getContentWindow());
            };
        }
        d.show();
        d.loadContent(path);
    }
}

次に、ダイアログのようなファイルを作成します。この例では:

/apps/myapp/components/page/mypage/myxmlfile.xml

次に、このファイルに一致するダイアログを開くことができます:

 <input type="button" value="Open my dialog" style="font-size: 14px;font-weight: bold;"
           onclick="doOpenDlg('/apps/myapp/components/page/mypage/myxmlfile.infinity.json', '<%=currentNode.getPath() %>');" />

これにより、ダイアログ データは currentNode に保存されますが、任意のパスを配置できます。

于 2013-11-20T10:15:10.703 に答える