在Laravel 5中从公共文件夹外部提供CSS和JS

我理解这种打破了Laravel的结构化点,但是有一种方法可以解决我的疯狂问题。 我打算使用一个laravel安装来托管几个由数据库驱动的网站。 目前,所有站点共享相同的布局,并且我有一个系统可以在DB中存储一些自定义CSS,为每个站点提供不同的配色方案。 我想改变它,以便他们可以使用完全不同的视图。 因此,站点A加载views / theme1 / app.blade.php,站点B加载views / theme2 / app.blade.php。 </ p>

我已通过使用以下命令返回视图来实现此目的。</ p>

  $ theme = getDomainThemeName(); 
return view($ 主题。'/ home');
</ code> </ pre>

这也有效,但现在我的任务是动态加载资产。 我正在使用bootstrap生成主题并对HTML进行一些调整以创建app.blade.php文件。 我有2个可能的解决方案,但我更喜欢从views目录服务css文件的方法。 这意味着以下映射。</ p>


http:/ /website.com/css/style.css =&gt;
/resources/views/theme1/css/style.css



nn

可以 像这样做? 另一种选择是使用php来读取css文件并使用yield将其插入应用程序。 它有效,但这意味着我无法使用浏览器缓存来缓存资产。 我还以为我可以在公共文件夹中创建子目录。 公共/ THEME1 / CSS / style.css中。 这是最合乎逻辑的意义,但这意味着我必须分割主题系统。 我希望能够在views目录中解压缩一个主题,它才能正常工作。</ p>

我使用的是Laravel 5,我也可以通过root访问服务器。 在centos 7上运行PHP 5.4。</ p>
</ div>

展开原文

原文

I understand this sort of breaks the structured point of Laravel, but there is method to my madness. I plan on using a single install of laravel to host several websites that are database driven. At the moment all of the sites share the same layout and I have a system to store some custom CSS in the DB to give each site a different color scheme. I want to change this so they can use completely different views. So site A loads views/theme1/app.blade.php and site B loads views/theme2/app.blade.php.

I have implemented this by using the following to return a view.

$theme = getDomainThemeName();
return view($theme.'/home');

This is also working, but i am now left with the task of dynamically loading the assets. I am using bootstrap the generate the themes and making a few tweaks to the HTML to create the app.blade.php file. I have 2 potential solutions to this but i would much rather a way to server the css files from the views directory. This means the following mapping.

http://website.com/css/style.css => /resources/views/theme1/css/style.css

Can something like this be done? Another option would be to use php to read the css file and insert it into the app using a yield. It works, but it means i cant use browser caching to cache the assets. I was also thinking i could just create sub directories in the public folder. public/theme1/css/style.css. This makes the most logical sense, but it means i have to fragment the theme system. Id like to be able to unzip a theme in the views directory and it just works.

I am using Laravel 5, i have root access to the server too. Running PHP 5.4 on centos 7.

1个回答



我认为最好的方法是拥有下一个结构:</ p>

  / public / css  /style.css
/public/css/theme1/custom1.css
/resources/views/common.blade.php
/resources/views/theme1/main.blade.php
</ pre>

然后使用php每个网站主题有条件地加载。
缓存可能不会有任何问题。</ p>
</ div>

展开原文

原文

I think the best approach is having next structure:

/public/css/style.css
/public/css/theme1/custom1.css
/resources/views/common.blade.php
/resources/views/theme1/main.blade.php

And then loading conditionally with php each site theme. It may not be any trouble with caching.

donglan8870
donglan8870 那你可以使用Elixir。 如果您使用SASS / SCSS或LESS而不是CSS,您可以调用elixir(函数(mix){...})来使其工作,因为它存储在/ resources / assets / sass下,例如,所以你可以 删除/ resources /中的zip文件夹并调用Elixir。 所有文档都在这里:Elixir Laravel 5.1官方文档
接近 5 年之前 回复
dongwa3808
dongwa3808 我同意这是最好的解决方案,但我希望有一个wordpress风格的主题系统。 解压缩文件夹,它只是工作。 有了这个,需要设置2个文件夹。 我可以设置一个“安装”系统,如果它们不存在于公共目录中,它将从视图文件夹中复制资产。 我只是希望有类似wordpress的东西。
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐