根据打开的模板执行不同的操作

Perform different actions depending of the opened template

我有 3 个模板页面 (smarty templates) 和 1 个 PHP 文件,其条件根据打开的页面显示不同的数据。

目录smarty

  1. page1.tpl
  2. page2.tpl
  3. page3.tpl

目录public_html

  1. file.php

这是file.php

if( stripos($_SERVER['REQUEST_URI'], 'page1.php' )) {
    
     echo 'page1';
} else if( stripos($_SERVER['REQUEST_URI'], 'page2.php' )) {

     echo 'page2';
} else if( stripos($_SERVER['REQUEST_URI'], 'page3.php' )) {

     echo 'page3';
}

现在,当我打开 https://example.com/page1.php 时,应该进入第一个状态并回显第 1 页。这不会发生。它显示空白页。

我猜这是因为我实际上没有名为 page1.php 的文件。如果我创建空 page1.php 文件,一切正常,但我的想法是将所有内容都放在一页中 file.php 并根据打开的页面显示不同的数据。

我在 file.php 中尝试做的是获取 url 并且如果结束 page1.php 则显示 page1 的数据等等。

这是应该怎么做还是有其他方法?

您是否将请求从 page1.php 重定向到 file.php(例如在 Apache 上通过 mod_rewrite)?否则当文件 page1.php 不存在时不会执行任何操作。

也许指向示例。com/file.php?p=page1.php 有效。但在这种情况下,最好检查脚本中的 get 参数。例如:

if (isset($_GET['p']) { $page = $_GET['p']; }

if ($page == 'page1.php') ...

对于后者你可以考虑使用 switch statement.