1

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

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

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

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

4

4 回答 4

0

这是我会使用的:

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

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

<?php } ?>
于 2013-07-16T23:01:06.417 回答
-1

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

<?php

$pages = array();

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

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

索引.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>
于 2013-07-16T23:13:09.850 回答
-2

准备一个对象,您可以根据需要在其中添加样式或 js 文件,这里是一个小例子。

class head {

    private styles = array();
    private scripts = array();

    public function __construct() {}

    // add script in page
    public function add_script(filepath){
       array_push($this->scripts, filepath);
    }

    // add style in page
    public function add_style(filepath){
       array_push($this->styles, filepath);
    }

    // get html <link> for styles
    public function get_styles(){
       $html = '';
       $len = count($this->styles);
       for($i=0; $i < $len; $i++){
           $html .='<link rel="stylesheet" type="text/css" href="'.$this->styles[$i].'">'; 
       }
       return $html;
    }

    // get html <script> for scripts
    public function get_scripts(){
       $html = '';
       $len = count($this->scripts);
       for($i=0; $i < $len; $i++){
           $html .='<script type="text/javascript" src="'.$this->scripts[$i].'"></script>'; 
       }
       return $html;
    }

 }
 // destruct ...

在您的控制器中:

require('/class/head.php');
$head = new head();
$head->add_style('/css/myStyle.css');
$head->add_script('/js/myScript.js');

在头

<?php echo $head->get_styles(); ?>
<?php echo $head->get_scripts(); ?>
于 2013-07-16T23:11:08.740 回答
-2

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

因此,您可能不需要对在每个页面上加载的内容如此挑剔,因为它可能不会导致重新下载 css 或 js 文件。

于 2013-07-16T23:01:40.480 回答