如何在不更改页面的情况下将html片段加载到页面中


How to load an html snippet into page without changing pages

我是PHP新手(3天),我了解使用includes创建高级模板的基本概念。我想进一步利用这个工具来加载更细粒度的内容,但我不确定如何处理。下面的html是一个页面模板的例子,它与php-includs放在一起。如果你引用这个html,假设我在这里包含的页面上有一个小部件:<?php include('include/WIDGET.php'); ?>。在最简单的场景中,小部件上方会有一个链接,上面写着"小部件2"。单击此链接后,我希望WIDGET.php内容替换为widget2.php。如何操作include以加载widget2.php

HTML

<!-- File: index.php -->  
        <html>
            <head>
                <?php include('include/head.php');?>
                <title><?php echo $siteName;?></title>
            </head>
            <body>
                <?php include('include/header.php'); ?>
        <!-- CONTENT -->
                <?php include('include/WIDGET.php'); ?>
                <?php include('include/main-content.php'); ?>
        <!-- CONTENT END -->
                <?php include('include/footer.php'); ?>
            </body>
        </html>

要更改包含的文件,您需要为页面提供某种参数,该参数可以有条件地包含正确的小部件。

例如,将其包含在URL查询字符串中,例如:

http://yoursite/index.php?content=widget2

然后,在您的PHP文件中,您可以获得以下值:

if (isset($_GET['content']) && !empty($_GET['content'])) {
     $widget = $_GET['content'];
} else {
     $widget = 'widget';
}

并将其包含在您的HTML:中

[...]
<!-- CONTENT -->
<?php include('include/' . $widget . '.php'); ?>
[...]

这只是给你一个相关逻辑的例子,但我不会使用我提供的代码,因为它非常不安全,而且不会检查文件等的存在

我知道你才刚刚开始,一次需要学习很多东西,但你可能需要考虑使用Zend、Symfony或CakePHP等PHP框架,以利用已经为你设置的一些路由和模板解决方案。