首页 文章

PHP模板和外部CSS

提问于
浏览
0

所以我有这个PHP网站,我正在使用模板 . 任何页面都分为三个部分:页眉,内容和页脚 . 每个部分都由 .php 文件表示 .

Headers :

<html>
<head><link_to_some_css /></head>
<body>
<div id="menuBar">
    xxx
</div>

内容:

<?php include("header.php") ?>
    <div id="someHTMLContent">xxx</div>
    <!-- 
        How do I link an external CSS stylesheet from within here?
    -->
<?php include("footer.php") ?>

页脚:

</body></html>

<link> 标签应该位于 <head> 内,但是在 content.php 内我无法访问html的头部 .

很抱歉,如果有人问这个问题,但我对在MVC架构中实现无框架PHP项目有点新意见(因此尝试将CSS JavaScript PHP文件分开以获得更好的结构)

4 回答

  • -1

    创建一个存储CSS链接的css_main.php文件 .

    例子是......

    <link rel="stylesheet" href="(THE PATH OF CSS FILE)" type="text/css" />
    

    之后,只需要在您的内容.php文件中要求“css_main.php”

  • 0

    您可以在 Headers 中或内容中包含链接 . 如果你在 Headers 中有它,它会在你包含 Headers 时加载 . 否则只需将链接放在内容中即可 .

  • 1

    如果你想要 Headers 中包含的内容,那么在包含之前将其设为全局变量 .

    $header = 'Add something to the head tag';
    include('header.php');
    

    在header.php中:

    <head>
    <?php
    if (isset($header)) {
        echo $header;
    }
    ?>
    <!-- Add global headers -->
    </head>
    

    您可以通过定义函数来添加更强大的解决方案,以便在给定链接的情况下创建CSS标记,然后将它们添加到全局$标头字符串中 . 这些将需要包含在标头包含之前包含的 core.php 文件中 .

  • 1

    简单的答案是 - 没办法 .

    它应该做的方式是,有一个对象,它代表所有样式表,在页面创建时初始化,然后添加样式表,然后才显示页面 . 它应该看起来像这样:

    控制器:

    $this->view->script="viewSomePage.php";
    $this->view->stylesheets->add('AddSomeStylesheet.css');
    $this->view->render();
    

    在内部, render() 函数将获取样式表,并将它们传递给视图 .

    视图:

    foreach($this->stylesheets as $stylesheet){
    //do some outputing;
    }
    

    但是,这样做需要每个视图都是某种视图类的实例 . 或者在数组中传递一些数组 . 这是你的选择 .

    这来自MVC的想法本身,一个视图应该什么都不做,而不是显示给它的内容 . 因此,它不应该考虑,要加载哪个样式表,或使用哪个模板/布局 . 如果特定的模板/布局已经有一些样式表 - 很好,但是应该在控制器中定义其他的模板/布局,然后传递给视图 .

    希望这可以帮助 .

    Edit 当我坐着思考时,我想你可能会达到这个目的 . 我的意思是,我没有测试它,我不知道它是否会按预期工作 .

    您可以尝试创建一个简单的javascript,在页面加载时将获取所有 <link> 标记并将它们放在 Headers 中 .

    然而,这是一种非常黑客的方式,除非你绝望,否则不应该使用它 .

相关问题