【问题标题】:Image Files, CSS and JS Files in CodeIgnitterCodeIgniter 中的图像文件、CSS 和 JS 文件
【发布时间】:2016-10-26 08:48:36
【问题描述】:

我今天开始使用 CodeIgniter!所以我有两个简单的问题!

问题 1 有什么办法可以自动化 php 代码中引用图片的方式,而不是写 img/mainpage/folder.png everytime?
我可以使用 img 文件的路径设置一个全局变量并在所有页面中使用它吗?示例:set $IMGPATH = '..\img\'. 并在所有页面中使用 <img src='$IMGPATH\myimage.png' 之类的内容?

问题 2 有什么方法可以一次加载我的 JS 和 CSS 文件,并让它适用于所有页面,而不是在每个页面标题上继续加载 JS 和 CSS 文件?
如何使用 CodeIgniter 优化我的 CSS 和 JS 文件并一次性加载它并让它适用于所有页面?

【问题讨论】:

    标签: javascript php html css codeigniter


    【解决方案1】:

    第一季度

    转到application/config/config.php 并将其添加到最后

    $config['image_path']='img/mainpage/';
    

    所以在代码中你可以调用它

    $this->config->item('image_path');
    

    与视图参数绑定($data)


    第二季度

    在视图文件夹中创建文件调用模板。(application/view/template.php)。而在template.php 里面

    <?php $this->load->view('includes/header'); ?>
    <?php $this->load->view($main_content); ?>
    <?php $this->load->view('includes/footer'); ?>
    

    当你从控制器传递数据时使用这个

    $data['main_content'] = 'path/of/relevant/view';
    $this->load->view('template', $data);
    

    header.php 中加载所有的 CSS 和 JS。

    【讨论】:

    • 我不明白我应该为这项工作做什么。你能更详细地解释一下吗?抱歉,但我对 codeigniter 完全陌生。你能告诉我从控制器传递数据时我应该在哪些文件中添加这些行吗?谢谢
    • @LucasHenriqueFreitas 是关于第一个还是第二个
    【解决方案2】:

    问题 1:
    您可以创建一个新的配置值,取自 CI 的文档,只需在其中添加一个新值作为 $this-&gt;config-&gt;set_item('image_location', 'image folder'); 并在使用 $this-&gt;config-&gt;item('image_location'); 显示图像时调用它。

    我不是 100% 确定,因为我没有在 CI 中设置自己的配置值,但从文档 https://www.codeigniter.com/userguide3/libraries/config.html 来看,上面是这样做的方法。

    【讨论】:

      【解决方案3】:

      问题一:

      您可以创建一个带有静态成员的类来保存路径。

      class Path {
        public static $path = "path/to/directory";
      }
      

      然后在你的代码中你可以调用&lt;img src='&lt;?=Path::$path?&gt;/myimage.png' /&gt;

      问题 2:

      使用框架是可能的,但这确实是个坏主意。更好的方法是使用缓存。如果你使用 apache,你可以启用 mod_expires 然后使用类似这样的东西:

      <IfModule mod_expires.c>
        ExpiresActive On 
        ExpiresByType text/css "access plus 1 week"
        ExpiresByType text/javascript "access plus 1 week"
      </IfModule>
      

      这意味着浏览器只会从 Internet 加载 css 和 javascript 文件一次,然后会在一周内从缓存中加载它们(速度非常快)。一周后,它将再次从互联网加载它们等等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-01
        • 2012-03-17
        • 1970-01-01
        • 2016-03-28
        • 1970-01-01
        相关资源
        最近更新 更多