2013-07-16 34 views
1

我的菜单系统全部来自索引文件。一个简单的例子:仅在必要时包含CSS/JS

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

是我的问题:当他们需要我怎么只能包括一些JS-文件和CSS-文件。例如,我有一个滑块文件。我只想在访问该页面时包含与滑块相关的js/css文件。

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

+1

因为这实在是一个关于如何以可选地包括文件在PHP的问题,我已经移除了JavaScript和CSS标签。 –

+0

无效?为什么? – 2013-07-16 23:00:02

+0

@RobRaisch同意,我的错误。 – hskrijelj

回答

-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> 
+0

不错,谢谢。 – hskrijelj

+0

我想知道为什么downvote?并且不要忘记接受你使用@hskrijelj的答案 – kennypu

0

这里是我会用什么:

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

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

<?php } ?> 
+0

我知道这个方法。我正在寻找另一个解决方案。但是,如果我所搜索的内容不可行,我将采用这种方法,并且您将获得批准。 – hskrijelj

+0

我没有看到一个会议将如何帮助你在这里。不使用任何if/else条件,对于包含CINDITIONALLY来说将会很困难。或者我可能只是缺乏想象力) – user1721135

+0

你可以神奇地拥有一个模板特定的源包括,所以它不在其他地方,但它不会在会话中,我不认为这将是有益的。 – user1721135

-2

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

Theerfore您可能不需要对每个页面上加载的内容做如此的选择,因为它可能不会导致新的下载的CSS或JS文件。

+0

我知道。但是,如果不打算使用,我并不需要首先下载一些js。 – hskrijelj

-2

准备的对象,其中,因为你需要

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 ... 

在你的控制器,你可以添加样式或js文件:

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

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

wtf?这是一个非常好的解决方案。 – pirs

+0

从未想过为此使用OOP,但我会考虑它。非常感谢。 – hskrijelj

+0

面向对象的设计模式是好的,上面的代码不是:1.变量声明SYntax错误,2.空的“构造函数”(其中btw不是一个真正的构造函数,因为它在php中是__construct),3.字符串连接HTML,4.你的函数什么都不返回。 – EJTH