【发布时间】:2011-06-29 07:29:25
【问题描述】:
我正在 Code Igniter 上重写网站,我需要加载外部 TTF。 MySQL db 指向该 TTF 的路径。我可以以某种方式将这些变量传递给 CSS 并使 foreach 循环“加载”这些字体。
我试过了
$this->load->vars($data);
【问题讨论】:
标签: php html css codeigniter
我正在 Code Igniter 上重写网站,我需要加载外部 TTF。 MySQL db 指向该 TTF 的路径。我可以以某种方式将这些变量传递给 CSS 并使 foreach 循环“加载”这些字体。
我试过了
$this->load->vars($data);
【问题讨论】:
标签: php html css codeigniter
首先,处理提供动态 CSS。我的网站有一个名为“resource”的控制器,它允许我提供 CSS、JS 等(将来可能是图像)。它根据在 url 中传递给它的段加载视图。
所以,当http://mysite.com/resource/css/main.css 被请求时:
Resource 控制器 (.../controllers/resource) 处理数据处理的任何细节(与 MVC 控制器一样)。然后加载:".../views/resources/css.php",将所需 css 文件的名称传递给它。此视图打印出标题,指定 Content-Type(重要!)和任何其他通用内容。然后继续加载:".../views/resources/css/main.css.php"。这有点矫枉过正,但提供了很大的灵活性,就像你听起来需要的那样。
控制器:
...
$segments = $this->uri->segment_array();
array_shift($segments); // remove the first two
array_shift($segments);
$content['stylesheet'] = $segments[0] . ".php"; //e.g. main.css.php
$content['data'] = array(); //Font data, etc
$this->load->view('resources/css.php', $content);
..
通用资源/css.php 这会加载实际的 .css.php 样式表
<?php header("Content-Type: text/css"); // This is key! ?>
/* MySite CSS File (c) 2011 bla bla */
<?php
$this->load->view("resources/css/$stylesheet", $data);
echo "\n";
?>
具体资源/css/main.css.php
<?php echo "/* I can use PHP in my CSS! */\n"; ?>
body { background-color: <?=$data['bg_color']?>; }
p { font-family: <?=$data['p_font_fam'];?>; }
【讨论】:
您可能需要了解如何从 db 中检索数据以及如何显示它们: http://codeigniter.com/user_guide/database/index.html 祝你好运
编辑: 你需要的可能是这样的: 在您从数据库中检索到链接之后,假设您将它们称为 $ttf_links
<?php
foreach($ttf_links as $link){
echo "<link rel='stylesheet' type='text/css' href={$link['row_name']} media='screen' />"
}
?>
然后在你的css中调用你需要的字体
【讨论】:
据我所知,将变量传递给 CSS 不起作用。
我已经阅读了一些关于使用 PHP 进行 CSS 模板的内容,但我再也找不到链接了。找到链接后将立即更新此答案。不过你也可以自己找。
更新
【讨论】:
我看到您这样做的最简单方法是使用文件级 CSS 并以通常的方式更改值。
【讨论】:
一种解决方法是在页面本身中使用 CSS 来加载字体。
【讨论】:
这是答案,我已经实现并且工作正常
【讨论】: