我有一个场景,我需要在我的站点上有一个带有所有CSS、JS、image和SVG引用的页面,这些引用都是用绝对URL (https)硬编码的。目前,他们使用的是相对URL。<img src="$ThemeDir/images/image.jpg" />。
是否有一种方法可以轻松地为这些引用添加一个自定义基本路径,可能会利用Silverstripe的URL处理特性?该解决方案需要处理以下用途:
Requirements::插入父控制器(Page)中的CSS和JS文件。我可以在当前控制器中硬编码需求,但是要对继承的需求使用绝对URL,我需要对它们进行block(),并再次添加新的URL。$Image.URL。$ThemeDir引用的其他资产。在控制器中用我自己的ThemeDir()函数覆盖这一点似乎不起作用。如果这是不可能的,我可以为备用页面维护一个完全独立的模板,我只是想看看是否有一个更少维护的解决方案。
谢谢!
发布于 2017-08-16 10:06:39
我不认为有一个简单的/干燥的解决方案,因为这是一个边缘的情况。我到底是怎么做到的:
Requirements::clear(),然后需要父控制器与https协议组合的CSS和JS文件(通过combine_files在Live中生成)。这样,我只引用父控制器中的各个CSS/JS文件。$AbsoluteBaseURL添加到任何链接/图像引用的开头。对于页面中包含的相同内容,添加了一个变量$Base,例如。<% include Footer Base=$AbsoluteBaseURL %>,用于在Footer.ss中添加URL。其他页面只包含部分,而不声明变量,因此使用相对URL。get_file_contents在svgIcon(icon-name)中),并创建了一个函数svgIcon(icon-name),它只将哈希输出到页面上的SVG <symbol> ID,或者输出到未嵌入SVG的页面上的SVG sprite文件(和ID哈希)的完整路径。希望对那些发现自己有同样问题的人来说是有意义的。
https://stackoverflow.com/questions/45671881
复制相似问题