Silverstripe 前端上的CMS链接未转换ie href=[sitetree\u link\u id=xx]

Silverstripe 前端上的CMS链接未转换ie href=[sitetree\u link\u id=xx],silverstripe,Silverstripe,我们的一个运行2.4的旧站点发现了一个问题,当用户在CMS内容中创建链接,选择要链接的现有页面时,该链接没有转换为前端的实际URL,所有链接都以 是什么原因导致此问题?如何修复此问题?标签似乎设置不正确。它应该是[sitetree\u link id=12],而不是[sitetree\u link\u id=12] 后来,我们为解析器添加了对[sitetree\u link,id=12]的支持,这样链接就不需要包含空格,但我想不起来是在2.4版本中还是仅在3.0+版本中 你能确认你的所见即所得插

我们的一个运行2.4的旧站点发现了一个问题,当用户在CMS内容中创建链接,选择要链接的现有页面时,该链接没有转换为前端的实际URL,所有链接都以


是什么原因导致此问题?如何修复此问题?

标签似乎设置不正确。它应该是
[sitetree\u link id=12]
,而不是
[sitetree\u link\u id=12]

后来,我们为解析器添加了对
[sitetree\u link,id=12]
的支持,这样链接就不需要包含空格,但我想不起来是在2.4版本中还是仅在3.0+版本中

你能确认你的所见即所得插入是错误的
\uuu
?如果是这样,您可能需要在
tiny\u mce\u improvements.js
中签出
handleaction\u insert
函数,以确认它有这样一行:

case 'internal':
    href = '[sitetree_link id=' + this.elements.internal.value + ']';
如果插入的链接实际上没有错误的
\uuu
,但它们没有被解析,那么请尝试检查您的sapphire/\u config.php文件:

ShortcodeParser::get('default')->register('sitetree_link', array('SiteTree', 'link_shortcode_handler'));
如果您的站点对
ShortcodeParser
进行了任何更改,您可能无意中关闭了
sitetree\u链接
支持

如果所有这些看起来都正常,那么可能是由于某种原因没有调用ShortcodeParser。在
HTMLText::forTemplate()
中,放入一条调试语句(我喜欢
die(“我到这里了!”);
)以确认HTMLText::forTemplate()确实被调用。如果不是,您可能需要在内容变量的某些预处理中手动调用它。与此相反:

$content = $this->Content;
这样做:

$content = $this->obj('Content')->forTemplate();

我希望其中一个答案能有所帮助。不管是哪种方式,如果你能发回邮件,那就太好了,这样我们就可以找出造成这种情况的原因。它可能会帮助我们使API更易于在SilverStripe 3.1中使用。

您看过tinymce中的纯html吗?添加到从其他来源粘贴的内容中的链接存在一些问题当从所见即所得(WYSIWYG)而不是粘贴的内容中创建新链接时,会出现此问题。href=[sitetree\u link\u id=xx]这是silverstripe保存内容的方式。所以这不是问题所在。您是否有可能覆盖contentgetter方法,或者直接访问php中的$this->Content或类似的方法?您是否可以使用它?不幸的是,没有。我们仍处于必须将硬链接放入详细答案的阶段,在我的案例中,
$content=$this->content
行是罪魁祸首+1.