我们在运行2.4的旧网站上发现了一个问题,当用户在CMS内容中创建链接,选择要链接的现有网页时,链接未转换为前端的实际网址并且所有链接都以<a href="[sitetree_link_id=12]">
导致此问题的原因以及如何解决?
答案 0 :(得分:4)
标签看起来设置不正确。它应该是[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()
中,输入一个调试语句(我喜欢die("I got here!");
)以确认实际调用了HTMLText :: forTemplate()。如果不是,您可能需要在Content变量的某些预处理中手动调用它。而不是:
$content = $this->Content;
这样做:
$content = $this->obj('Content')->forTemplate();
我希望其中一个答案有所帮助。无论哪种方式,如果你能回发都会很棒,所以我们可以找出造成这种情况的原因。它可能有助于我们在SilverStripe 3.1中更容易使用API。