我有一个场景,我需要在我的网站上有一个页面,所有CSS,JS,图像和SVG引用都使用绝对URL(https)进行硬编码。目前,他们使用相对URL,例如。 <img src="$ThemeDir/images/image.jpg" />
。
有没有办法可以轻松地为这些引用添加自定义基本路径,可能会利用Silverstripe的URL处理功能?解决方案需要处理以下用途:
通过Requirements::
在父(Page
)中插入的CSS和JS文件
控制器。我可以硬编码当前的要求
控制器,但要使用绝对URL作为继承的要求,
我需要block()
他们,然后再添加新网址。
图片已上传到CMS中的资源,并通过$Image.URL
插入到模板中。
$ThemeDir
引用的其他资源。用控制器中我自己的ThemeDir()
函数覆盖它似乎不起作用。如果无法做到这一点,我可以为备用页面维护一个完全独立的模板,我只是想我会看到是否有一个需要较少维护的解决方案。
谢谢!
答案 0 :(得分:1)
我不认为这是一个简单/干燥的解决方案,因为它是一个如此边缘的案例。我到底是怎么做到的:
Requirements::clear()
,然后需要父控制器组合CSS&amp; JS文件(通过实时模式生成)
combine_files
)使用https协议。这样我只引用父控制器中的各个CSS / JS文件$AbsoluteBaseURL
。对于同一内容包含在页面上,添加了一个变量$Base
,例如。用于在Footer.ss中添加网址的<% include Footer Base=$AbsoluteBaseURL %>
。其他页面只包含部分而不声明变量,因此使用相对URL get_file_contents
)并创建了一个函数svgIcon(icon-name)
,它只向SVG输出哈希值{{ 1}}页面上的ID或引用SVG未嵌入的页面上的SVG精灵文件(和ID哈希)的完整路径。希望对发现自己有同样问题的人有意义。