1

我正在开发一个 CMS,所以我需要将每个站点的全局 css 文件存储在数据库中并加载。我有一个名为 util 的控制器,该方法称为 sitecss。所以我的主要包装视图如下所示:

<link rel="stylesheet" type="text/css" href="/util/sitecss">

css 加载,但没有效果。如果我在页面上查看源代码,然后单击链接,我可以看到 css 就好了。所以我知道它正在加载。它不是来自文件吗?或者也许浏览器假设它没有被缓存?

如果我制作一个静态文件并更改为上面

<link rel="stylesheet" type="text/css" href="/css/site.css">

一切正常。如果我在 .NET 中使用处理程序 ashx 文件执行此操作,则它可以正常工作。我遇到问题是在带有 Codeigniter 的 php 中。我知道有人会问“为什么不直接制作静态文件?” 答案是,这对于这个应用程序是不实用的。这适用于部署速度非常快的数千个站点。

提前致谢!

编辑:

我的控制器方法如下所示:

function sitecss() {
    $cssdata = $this->cmsutils->loadCss($this->session->userdata('sitecss'));
    echo $cssdata;
}

那么我可以先回显一个哑剧类型吗?这似乎不起作用,因为我在

4

2 回答 2

1

您是否可以通过将 css 从控制器传递给视图来加载 css,然后在标题中的某个地方或视图中的其他地方回显它,如下所示:

控制器:

$data['css_rules'] = $this->yourcssmodel->get_css_rules_function();
$this->load->view('yadayadayada, $data);

视图:(可能在标题中)

?>
<style>
<?echo $css_rules;?>
</style>
于 2012-06-20T23:16:04.497 回答
1

编写一个缓存库以从数据库中提取并在缓存文件夹中创建一个 css 文件。

你会需要:

图书馆类

  • 与 css 交互并创建一个表单来执行 CRUD
  • 处理缓存文件监控 CRUD(每小时,甚至在表单的每个 C、U、D 上)
  • 将样式表缓存文件注入 DOM 视图

模型

  • 与数据库交互并执行 CRUD 操作
  • 将数据返回给Controller以创建缓存文件

看法

  • 将值解析为 css 样式表文件格式

另一种选择是使用控制器定义一个 mime 类型,然后只加载一个样式表格式正确的视图。不写入文件系统或任何东西。在 URI 的末尾添加一个 .css 扩展名并称之为好...


我对刚刚发布的应用程序做同样的事情。我在具有指定文本字段的应用程序的管理部分的视图中有一个表单。用户输入十六进制颜色代码,然后保存/更新数据库中的数据。然后,该库会创建一个在标题视图中引用的缓存 css 文件。.gitignore当我们将应用程序部署到多个客户端时,我们这样做是为了消除我们在特殊目录中添加文件的需要。

于 2012-06-21T03:31:20.090 回答