0

ボタンを定義するには、CMSテキスト領域で文字列/ショートコードを使用する必要があります...技術者以外のユーザーにとっては、次のような簡単なものです。

[button text = "Click Here" href = "http://www.google.com"]

その文字列に基づいて、フロントエンドでmootools(または一般的にはjavascript)を使用してボタンを動的に作成する必要があります(jqueryは私たちの環境では利用できません)。これまでのところ、角かっこで始まるコードを解析してから、コードで使用するためにそれらの属性を取得することはできませんでした。次に、元のショートコードを破棄する必要があります。より良い方法があれば、上記のように正確に設定する必要はありません...どんな提案でも大歓迎です。

ありがとう!

4

1 に答える 1

0

これが私が思いついた解決策です...ちょっとハックですが、うまくいきました。私が使用している CMS は Coldfusion ベースですが、メソッドは転送可能である必要があります...

別の複雑さ: 私たちの場合、編集可能なボタンをテンプレートの編集可能な領域とは別の場所に表示する必要がありました。基本的に、メイン コンテンツ エリアから簡単に編集できるようにするために、サイドバーに編集不可のボタンを配置しました。したがって、ユーザーがボタンを定義する場合、サイドバー ボタンをユーザー定義のボタンに置​​き換えます。そのため、mootools を使用して作成されたボタンを取得し、ページのサイドバーのボタンを置き換えてから、元のボタンを破棄するという追加の手順があります。

目標は、ユーザーが CMS のテキスト領域のどこかにショートコードを入力することでした。次のようなものです。

[button id="override-button" title="XXX" href="YYY"][/button]

バックエンドはこれを DOM 要素に変換し、フロントエンドでは mootools を使用して必要な場所にボタンを配置し、元のマークアップを破棄します。

まず、DB出力でコードを検索しました...

<cfset find1='\[button'>    <!-- open-->
<cfset find2='\]\[/button]'>    <!-- close -->

次に、coldfusion で正規表現の置換を使用して、ボタンの最初のインスタンスをマークアップに置き換えました... (rs.body は、データベースから返された本文データを参照します)...

<cfset replace1 = "<button">
<cfset replace2 = "></button>">
<cfset rs.body=#REReplace(rs.body,find1,replace1,"ONE")#>
<cfset rs.body=#REReplace(rs.body,find2,replace2,"ONE")#>

したがって、結果のマークアップは次のようになります。

<button id="override-button" title="XXX" href="YYY"></button>

次に、mootools を使用してその DOM 要素を操作しました。前述のように、サイドバーには既に「open-form-b​​utton」という ID のボタンがあったため、これはそのボタンを取得し、テキストとリンクを上で定義した属性に置き換えてから、上で定義した要素を破棄します。

var overrideBtn = $('override-button');
var overrideBtn_title,overrideBtn_href = null;

if (overrideBtn) {
overrideBtn_title = overrideBtn.getProperty('title');
overrideBtn_href = overrideBtn.getProperty('href');

if (overrideBtn_title && overrideBtn_href)
{
    $('open-form-button').set('text', overrideBtn_title);
    $('open-form-button').setProperty('href',overrideBtn_href);
    overrideBtn.dispose();
}
}

以上です。これが他の人にとってどれほど役立つかはわかりませんが、ジュリアンが私の解決策を投稿することを提案したので、途中で誰かに役立つことを願っています! 幸運を!

于 2012-10-31T14:40:48.567 に答える