【问题标题】:How to create a public folder inside themes folder in SilverStripe如何在 SilverStripe 的主题文件夹中创建公用文件夹
【发布时间】:2020-03-12 11:04:32
【问题描述】:
我正在处理一个遗留的 SilverStripe 项目。我正在尝试在主题文件夹中创建一个名为“files”的公用文件夹。该文件夹中的所有文件都可以通过浏览器访问。
我创建了一个文件夹并在其中创建了一个文件。
当我从 URL 访问文件夹中的文件时,它给了我 404 错误。但是当我从其他文件夹(如 css、fonts、img 等)访问文件时,它按预期工作。它只是不适用于我刚刚创建的“文件”文件夹。我需要配置一些东西吗?
【问题讨论】:
标签:
silverstripe
silverstripe-4
【解决方案1】:
您需要在项目的 composer.json 中“公开”该文件夹,因此运行 composer vendor-expose 会将文件链接或复制到您的公共资源文件夹。
您的 composer.json 将如下所示:
{
"name": "app/myproject",
"type": "silverstripe-project",
"require": {
"silverstripe/recipe-cms": "4.4.x-dev"
},
"extra": {
"resources-dir": "_resources",
"expose": [
"themes/mytheme/dist",
"themes/mytheme/files"
]
}
}
最好将所有生成的可公开文件(js、css)收集到一个名为“dist”的文件夹中,这样您就不必单独公开它们。
您可以手动调用 composer vendor-expose(例如,在每次文件更改后在 windows 上,因为符号链接在 windows 下不起作用)并且在您运行 composer install 或 composer update 时自动调用。
See docs.