2

リボン ツールバーをカスタマイズしてボタンを追加しています。そのボタンをクリックすると、作成者が既存の RTF フィールド コンテンツに追加されるデータを選択できる aspx ページが開きます。

私たちの要件は、リンク、つまりアンカー要素としてデータを返すことです。作成者がリンクポップアップページをクリックするたびに、作成者が他のオプションを選択できるようにする必要があります。送信ボタンをクリックすると、新しい値を古い値に置き換える必要があります。

課題は次のとおりです。

現在、ポップアップ ページは、aspx ページを表示するためのエントリ ポイントである javascript によって開かれます。作成者はデータを選択して送信します。値を返し、RTF フィールドに追加するのはこの JavaScript です。ポップアップページが独立したページとして開かれたとき、そこからデータを返す方法。

早めの対応よろしくお願いします。

前もって感謝します。

4

1 に答える 1

1

RTF フィールドにコンテンツを追加するだけの場合、そのためにカスタム URL を使用する方がはるかに簡単ではないでしょうか?

カスタム URL は、スキーマ フィールドに設定できるリンクであり、そのフィールドのタイトルのリンクとしてコンポーネントに表示されます。これにより、指定された URL のポップアップが開き、そこからフィールドに直接戻ることができます (既存のコンテンツに追加または置換できます)。

このトピックに関するドキュメントは、http://docportal.sdl.com/sdltridion (トピックへの直接リンク)にあります。

テキスト フィールドにコンテンツを上書きまたは追加するためのカスタム URL HTML ページの例は、次のようになります。

<html>
<head>
<title>Custom URL example</title>
<style>
body {
    background:#fafafa;
    font-family:arial,helvetica,sans-serif;
    font-size:12px;
    line-height:1.5em;
}
a {
    color:#000;
    font-weight:bold;
    text-decoration:none;
}
a:hover {
    color:#666;
}
</style>
<script type="text/javascript" language="javascript" src="/WebUI/Core/Controls/Popup/PopupInit.js"></script>
<script language="JavaScript">
    function overwrite(value) {
        var fields = window.dialogArguments.getFields();
        if (fields && fields.length > 0) {
            if (fields[0].getValues() != null && fields[0].getValues()[0] != null && fields[0].getValues()[0].length > 0) {
                if (!confirm('This will overwrite the existing content of the field. Continue?')) {
                    return;
                }
            }
            fields[0].setValues([value]);
            window.close();
        }
    }
    function append(value) {
        var fields = window.dialogArguments.getFields();
        if (fields && fields.length > 0) {
            var current = '';
            if (fields[0].getValues() != null && fields[0].getValues()[0] != null && fields[0].getValues()[0].length > 0) {
                current = fields[0].getValues()[0];
            }
            fields[0].setValues([current + value]);
            window.close();
        }
    }
</script>
</head>
<body>
    <h1>Make a choise</h1>
    <p><a href="javascript:overwrite(' - dummy content - ')">overwrite current value</a></p>
    <p><a href="javascript:append(' - dummy content - ')">append to current value</a></p>
</body>
</html>

これは、..\Tridion\web フォルダーのどこかに配置する必要がある HTML ページです (通常、そこに CustomURL サブディレクトリを作成するので、/CustomUrl/example.html のように参照できます)。

于 2012-04-04T12:49:51.813 に答える