前端的CMS链接没有转换,即href = [sitetree_link_id = xx]

时间:2012-09-26 00:12:55

标签: silverstripe

我们在运行2.4的旧网站上发现了一个问题,当用户在CMS内容中创建链接,选择要链接的现有网页时,链接未转换为前端的实际网址并且所有链接都以<a href="[sitetree_link_id=12]">

的格式发布

导致此问题的原因以及如何解决?

1 个答案:

答案 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​​。