0

在 ExpressionEngine 模板中访问 HTTP 主机名的最简单方法是什么(无需在模板中使用 PHP)。

是否已经创建了一个插件来执行此操作,或者我应该使用某种全局变量?

如果还有一种方法可以访问 ExpressionEngine 模板中的其他 HTTP 服务器变量,则可以加分。

4

4 回答 4

9

您可以将主机名设置为全局变量并使用它。您可以使用 php 在配置文件中设置全局变量,然后您将可以在模板中访问它。

或者你可以使用 {path='site_index'}

$assign_to_config['global_vars']['global_var_name'] = 'Global var value';
于 2012-10-27T00:56:15.297 回答
3

仅使用标准全局变量 {site_url} 怎么样?

如果你想分配一个配置变量,那么你可以这样做:

$assign_to_config['global_vars']['gv_hostname'] = $_SERVER['HTTP_HOST']; 

然后在您的模板中,您可以通过 {gv_hostname} 调用它,当然这不会在主机名之前添加 http://。

于 2012-10-27T11:50:14.957 回答
3

您可以为此使用名为服务器变量的插件 http://devot-ee.com/add-ons/server-variable

{exp:server_var:server var="HTTP_HOST"}

任何其他服务器变量也可用: http: //php.net/manual/en/reserved.variables.server.php

于 2012-10-28T16:16:30.580 回答
1

您可以将以下代码添加到 /system/expressionengine/config/config.php 文件中

$assign_to_config['global_vars']['my_http_host'] = $_SERVER['HTTP_HOST'];

然后可以在模板中使用,如下所示:

{my_http_host}

如果你想要协议,即。http 如果不是 https 你可以这样做:

$assign_to_config['global_vars']['my_protocol'] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';

然后可以在模板中使用,如下所示:

{我的协议}

这是PHP 保留服务器变量的列表

于 2012-10-27T19:41:23.270 回答