仅在必要时包含CSS / JS

时间:2013-07-16 22:56:13

标签: php

我的菜单系统都来自索引文件。一个简化的例子:

#index.php
...
<div id="container">
include($inc_file) //index.php?site=news will show news.php
</div>
...

我的问题是:如何在需要时只包含一些js文件和css文件。例如,我有一个带滑块的文件。我想在访问该页面时只包含与滑块相关的js / css文件。

我知道我可以制作if / else子句,但我发现它有点无效。是否可以放置一个包含数组的会话,其中包含应该包含在首页的所有文件?

4 个答案:

答案 0 :(得分:0)

以下是我要使用的内容:

<?php
$path_parts = pathinfo(__FILE__);
$filename = $path_parts['filename'];

if ($filename === "somepage") {
?>
<script src=""></script>
<link ...>

<?php } ?>

答案 1 :(得分:-1)

我只想为每个页面预设一个数组,其中包含需要包含的css / js文件数组。
例如,
的settings.php

<?php

$pages = array();

$pages['index'] = array(
    "css" => array("main.css","index.css"),
    "js"  => array("jquery.min.js","someotherjs.js")
);

$pages["about"] = array(
  ...
);

<强>的index.php

<?php

include('settings.php');


?>
...
<head>
    <?php
        foreach($pages['index']['css'] as $css)
            echo "<link rel='stylesheet' type='text/css' href='$css'>";
    ?>

    ...
    <?php
        foreach($pages['index']['js'] as $js)
            echo "<script src='$js'></script>";
    </body>
</head>

答案 2 :(得分:-2)

这可能不是您期望的答案,但您知道浏览器不会下载自上次下载以来未发生更改的cssjs个文件。它们缓存在客户端PC上,只有在服务器上的副本发生更改时才会刷新。

因此,您可能不需要对每个页面加载的内容如此具有选择性,因为它可能不会导致重新下载css或js文件。

答案 3 :(得分:-2)

准备一个对象,您可以根据需要添加样式或js文件

class head {

    private css = array();

    public function head(){}

    public function add_css(file){
       $this->css[] = file; 
    }
    public function get_css(){
       $html = '';
       if(count($this->css)>0){
           for($i=0;$i<count($this->css);$i++){
              $html .='<link rel="stylesheet" type="text/css" href="/css/'.$this->css[$i].'">'; 
           }
       }
       if(!empty($html)) return $html;
    }
 }
 // destruct ...

在您的控制器中:

require('/class/head.php');
$head = new head();
$head->add_css('myStyle.css');

头部

<?php echo $head->get_css(); ?>