首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >准备所有的资产和需求路径与自定义基地的银条?

准备所有的资产和需求路径与自定义基地的银条?
EN

Stack Overflow用户
提问于 2017-08-14 09:53:10
回答 1查看 151关注 0票数 0

我有一个场景,我需要在我的站点上有一个带有所有CSS、JS、image和SVG引用的页面,这些引用都是用绝对URL (https)硬编码的。目前,他们使用的是相对URL。<img src="$ThemeDir/images/image.jpg" />

是否有一种方法可以轻松地为这些引用添加一个自定义基本路径,可能会利用Silverstripe的URL处理特性?该解决方案需要处理以下用途:

  • 通过Requirements::插入父控制器(Page)中的CSS和JS文件。我可以在当前控制器中硬编码需求,但是要对继承的需求使用绝对URL,我需要对它们进行block(),并再次添加新的URL。
  • 图片上传到/assets中的CMS和插入模板通过$Image.URL
  • 模板中$ThemeDir引用的其他资产。在控制器中用我自己的ThemeDir()函数覆盖这一点似乎不起作用。

如果这是不可能的,我可以为备用页面维护一个完全独立的模板,我只是想看看是否有一个更少维护的解决方案。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 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。
  • 外部文件中的SVG文件不能跨域工作,因此我将SVG嵌入到页面上(get_file_contentssvgIcon(icon-name)中),并创建了一个函数svgIcon(icon-name),它只将哈希输出到页面上的SVG <symbol> ID,或者输出到未嵌入SVG的页面上的SVG sprite文件(和ID哈希)的完整路径。

希望对那些发现自己有同样问题的人来说是有意义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45671881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档