2.4 を実行している古いサイトの 1 つで、ユーザーが CMS コンテンツでリンクを作成し、リンク先の既存のページを選択すると、リンクがフロント エンドとすべてのリンクで実際の URL に変換されないという問題が見つかりました。の形式で送信されます<a href="[sitetree_link_id=12]">
何が原因で、どうすれば修正できますか?
2.4 を実行している古いサイトの 1 つで、ユーザーが CMS コンテンツでリンクを作成し、リンク先の既存のページを選択すると、リンクがフロント エンドとすべてのリンクで実際の URL に変換されないという問題が見つかりました。の形式で送信されます<a href="[sitetree_link_id=12]">
何が原因で、どうすれば修正できますか?
タグが正しく設定されていないようです。[sitetree_link id=12]
ではないはず[sitetree_link_id=12]
です。
リンクにスペースを含める必要がないように、後でパーサーにサポートを追加しました[sitetree_link,id=12]
が、それが 2.4 にあるのか、3.0 以降にあるのか思い出せません。
あなたの WYSIWYG 挿入がその誤りを犯していることを確認できます_
か? その場合は、handleaction_insert
関数をチェックアウトtiny_mce_imporvements.js
して、次のような行があることを確認することをお勧めします。
case 'internal':
href = '[sitetree_link id=' + this.elements.internal.value + ']';
挿入されたリンクに実際には誤り_
がなく、解析されていない場合は、sapphire/_config.php ファイルをチェックしてみてください。
ShortcodeParser::get('default')->register('sitetree_link', array('SiteTree', 'link_shortcode_handler'));
サイトが に変更を加えた場合、ShortcodeParser
うっかりサポートをオフにしてしまった可能性がありますsitetree_link
。
すべてが順調に見える場合は、おそらく ShortcodeParser が何らかの理由で呼び出されていません。に、 HTMLText::forTemplate() が実際に呼び出されていることを確認するHTMLText::forTemplate()
デバッグ ステートメント (I like ) を追加します。die("I got here!");
そうでない場合は、コンテンツ変数の前処理で手動で呼び出す必要がある場合があります。これの代わりに:
$content = $this->Content;
これを行う:
$content = $this->obj('Content')->forTemplate();
それらの答えの1つが役立つことを願っています。いずれにせよ、この問題の原因を突き止めることができるように、返信していただければ幸いです。SilverStripe 3.1 で API を使いやすくするのに役立つかもしれません。