【问题标题】:Bootstrap: Is it possible to create a template that can be imported to each new page on a website?Bootstrap:是否可以创建一个可以导入到网站上每个新页面的模板?
【发布时间】:2019-05-22 22:17:24
【问题描述】:

我正在使用 Bootstrap 创建个人网站/博客。我对这个框架和一般的网络开发有点陌生,所以我很感激一些指示。 我希望我添加的任何新页面都具有相同的布局:侧导航菜单占据 3 列,而内容占据剩余的 9 列。在小格式中,我会让它们每个占据完整的 12 列。 我想制作这个模板,因为如果有一天我决定改变我的网站布局,我不想通过每个单独的文件来这样做。 那么有什么方法可以创建一个模板,并将其导入到每个页面中呢?

我用谷歌搜索了它,但似乎找不到任何关于它的信息。对我来说,这似乎是一个非常明显的功能,所以我想我会找到一些东西,但我一直没能找到。

这是我的页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Intro</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="../main.css">
    <link rel="stylesheet" type="text/css" href="template.css">
</head>
<body>
    <!-- Top navbar -->
    <nav class="navbar navbar-expand-md">
        <a class="navbar-brand" href="#">Logo</a>
        <button class="navbar-toggler navbar-dark" type="button" data-toggle="collapse" data-target="#main-navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="main-navigation">
            <ul class="navbar-nav">
                <li class="nav-item">
                    <a class="nav-link" href="#">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">About</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Contact</a>
                </li>
            </ul>
        </div>
    </nav>

    <!-- Main body of page -->
    <div class="container-fluid">
        <div class="row">
            <!-- Sidebar -->
            <div class="col-lg-3 col-md-3 col-sm-12" id="sideBar">
                <h4 class="feature-title">Table of Contents</h4>
                <div class="panel-group">
                    <div class="panel panel-default">
                        <div class="panel-heading">
                            <h4 class="panel-title"><a data-toggle="collapse" href="#collapse1">Introduction</a></h4>
                        </div>
                        <div id="collapse1" class="panel-collapse collapse">
                            <ul class="list-group">
                                <li class="list-group-item">One</li>
                                <li class="list-group-item">Two</li>
                                <li class="list-group-item">Three</li>
                            </ul>
                        </div>
                        <div class="panel-heading">
                            <h4 class="panel-title"><a data-toggle="collapse" href="#collapse2">Fundamentals</a></h4>
                        </div>
                        <div id="collapse2" class="panel-collapse collapse">
                            <ul class="list-group">
                                <li class="list-group-item">One</li>
                                <li class="list-group-item">Two</li>
                                <li class="list-group-item">Three</li>
                            </ul>
                        </div>
                        <div class="panel-heading">
                            <h4 class="panel-title"><a data-toggle="collapse" href="#collapse3">Software</a></h4>
                        </div>
                        <div id="collapse3" class="panel-collapse collapse">
                            <ul class="list-group">
                                <li class="list-group-item">One</li>
                                <li class="list-group-item">Two</li>
                                <li class="list-group-item">Three</li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Page Contents -->
            <div class="col-lg-9 col-md-9 col-sm-12" id="main">
                <h3 class="feature-title">Introduction</h3>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
            </div>
        </div>
    </div>

    <!--- Script Source Files -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    <script src="../main.js"></script>
    <script src="template.js"></script>
    <script src="https://use.fontawesome.com/releases/v5.5.0/js/all.js"></script>
</body>

我希望导航栏和侧边栏在我的所有页面中保持不变。只是页面内容(id="main")在正文中会有所不同。另外,我希望页面标题(在他的标题中)也可以更改。有没有办法使这个变量? 我更喜欢这样做的另一个原因是目录会随着我添加更多页面而改变,所以我不想每次制作时都通过每个文件来更改目录一个新页面。

感谢您的帮助。谢谢

编辑: 这是 template.css 的 CSS

#main {
  transition: margin-left .5s;
  padding: 20px;
}

#sideBar {
  background: black;
  padding: 20px;
}

.list-group-item {
  background: black;
}

.list-group-item:hover {
  color: green;
}

【问题讨论】:

    标签: twitter-bootstrap templates web-frontend


    【解决方案1】:

    仅供参考:根据我的建议,您应该使用一些好的脚本/编程语言,如 Ruby On Rails、Django 或 PHP,以实现让一个模板动态呈现所有其他页面内容的功能。因此,您只需要更改您的主模板并将反映在所有页面上。这是最佳做法。


    好吧,我仍然在为您提供解决方案,因为您处于学习阶段,您可以使用 JQuery 实现这一点:) 仅用于学习目的的好主意。

    [ 不用于生产目的 - 只是您问题的解决方案]

    请在 github repo 上找到您的问题的解决方案。我已经合并了您的代码并创建了一个示例项目供您使用:

    它有一个名为 template.html 的模板,以及用于 (id="main") index.html、about.html 和 contact.html 的其他不同内容特定页面,通过遵循 template.html 模板呈现它自己的内容。

    请查看此 github 存储库: https://github.com/ashishprajapati/template-for-basic-html

       git clone git@github.com:ashishprajapati/template-for-basic-html.git
    

    要启动 html 服务器,请按照以下步骤操作

       npm install http-server -g
    

    请在克隆项目所在的同一目录中使用此命令

       http-server
    

    【讨论】:

    • 非常感谢您的努力。待会我回家再研究一下。此外,我将研究如何使用 PHP 执行此操作。 PHP中是否有这种东西的名称,只是为了让我知道要搜索什么?
    • 另外,出于好奇,为什么 JQuery 不适合这个?谢谢
    • 非常感谢 Zuhaib,请看这篇中篇文章link.medium.com/60TvdQWuUW,您将很容易理解在 php 中使用模板的用例。基本上,php中有“include”和“require”函数,它们允许我们动态地包含不同的页面:)继续学习朋友!
    • JQuery 或 javascript 不适合您询问的用例,因为使用 jquery 无法实现模板功能。它需要脚本语言 (php) 来实现模板功能。它将允许我们根据需要在后端动态修改 html 页面,并可以为最终用户提供所需的 html 页面。但是,如果您将谈论 jquery,那么以正确的方式是不可能的。如果您检查我的 index.html 代码,您会看到我使用一些参数“partial=_index”重定向到 template.html,然后获取索引页面的内容并加载到 #main id
    • 所以,你可以理解。在编写一些聪明的代码后可以实现,但我对这种代码风格仍然不满意。在这里,如果您将点击 index.html,然后提供完美的 html 索引页面,则用户将被重定向到“template.html?partial=_index”,如果您将点击contact.html,那么它将点击“template.html?partial=contact” ' 并提供联系页面。这对你的学习目的有好处,但最好学习一门脚本语言,如 PHP、Ruby On Rails 或 Python/Django。谢谢:)
    猜你喜欢
    • 2022-11-14
    • 2021-11-03
    • 2015-11-11
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2011-01-04
    相关资源
    最近更新 更多