首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCart:如何创建全局变量?

OpenCart:如何创建全局变量?
EN

Stack Overflow用户
提问于 2013-03-06 16:42:46
回答 2查看 12.2K关注 0票数 2

我试图在OpenCart中创建两个全局变量。我基本上希望能够在我的任何.tpl文件中声明它们

代码语言:javascript
运行
复制
<?php echo $global1; ?>

我已经尝试了编辑,library/system.phpconfig.php,通过在我的文件中添加$global1="test"。但是,在.tpl文件中调用它不起作用吗?

例如,查看下面的文件,我希望能够在任何时候调用这些变量。我要编辑config.php还是什么??该示例显示了对每个$header文件使用的.tpl调用。

not_found.tpl

代码语言:javascript
运行
复制
<?=$header?>
<div class="breadcrumb">
<? foreach ($breadcrumbs as $breadcrumb) { ?>
    <? $breadcrumb['separator']; ?><a href="<?=$breadcrumb['href']?>"><?=$breadcrumb['text']?></a>
<? } ?>
</div>
<div id="content">
    <?=$global1?>
    <img src="/catalog/view/theme/default/image/error.png"/>
</div>
<?=$footer?>

已更新

/catalog/controller/common/header.php

代码语言:javascript
运行
复制
<?php   
class ControllerCommonHeader extends Controller {


    protected function index() {

        // NEW GLOBAL VARS
        $cdnDefault="//www.gorgeouscouturedev.com/catalog/view/theme/";
        $currentUseLang = $this->language->get('code'); 

现在在/catalog/view/theme/default/template/common/home.tpl

代码语言:javascript
运行
复制
<?=$header?>
<?=$column_left?>
<?=$column_right?>
<div id="content">

<? echo $cdnDefault ?>
<? echo $currentUseLang ?>

    <?=$content_top?>
        <div class="flexslider">
            <ul class="slides">
                <li><img src="catalog/view/theme/default/image/desktop.png"/></li>
                <li><img src="catalog/view/theme/default/image/blogger.png"/></li>
            </ul>
        </div>
    <?=$content_bottom?>
</div>
<?=$footer?>

还有错误:

代码语言:javascript
运行
复制
 Notice: Undefined variable: cdnDefault in /catalog/view/theme/default/template/common/home.tpl on line 6
 Notice: Undefined variable: currentUseLang in /catalog/view/theme/default/template/common/home.tpl on line 7 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-06 17:18:20

您可以使用$GLOBALS超级全局数组

例如,在controller/common/header.php中首先声明它

代码语言:javascript
运行
复制
$GLOBALS["1"] = "test";

然后在任何tpl文件中使用它,如

代码语言:javascript
运行
复制
<?php echo $GLOBALS["1"]; ?>

关于headerheaderfive other files实际上是在每个控制器文件(对应于每个tpl文件)中声明的,如下所示

代码语言:javascript
运行
复制
$this->children = array(
            'common/column_left',
            'common/column_right',
            'common/content_top',
            'common/content_bottom',
            'common/footer',
            'common/header'     
        );

对更新问题的回答

/catalog/controller/common/header.php

代码语言:javascript
运行
复制
<?php   
class ControllerCommonHeader extends Controller {


    protected function index() {

        // NEW GLOBAL VARS
     $GLOBALS["cdnDefault"]="//www.gorgeouscouturedev.com/catalog/view/theme/";
     $GLOBALS["currentUseLang"] = $this->language->get('code');

现在在/catalog/view/theme/default/template/common/home.tpl

代码语言:javascript
运行
复制
<?=$header?>
<?=$column_left?>
<?=$column_right?>
<div id="content">

<? echo $GLOBALS["cdnDefault"]; ?>
<? echo $GLOBALS["currentUseLang"]; ?>

    <?=$content_top?>
        <div class="flexslider">
            <ul class="slides">
                <li><img src="catalog/view/theme/default/image/desktop.png"/></li>
                <li><img src="catalog/view/theme/default/image/blogger.png"/></li>
            </ul>
        </div>
    <?=$content_bottom?>
</div>
<?=$footer?>
票数 1
EN

Stack Overflow用户

发布于 2013-03-06 17:17:34

如果您只想使用静态值,则只需使用常量即可。只需在config.php文件中创建一个,如

代码语言:javascript
运行
复制
define('CDN_URL', 'http://cdn.someurl.com/');

然后你可以用

代码语言:javascript
运行
复制
<?php echo CDN_URL; ?>

在你申请的任何地方。如果您想像在编辑后的问题中那样对其进行编码,那么代码的基本缺陷是您在控制器文件中使用的是$cdnDefault而不是$this->data['cdnDefault'],这将导致未定义的问题。但是请注意,这个变量一点也不全局,它只是按应该编码的方式进行了编码。

在我看来,正确的方法是为您在管理区域的SYSTEM > SETTINGS中编辑创建一个新的设置值,然后使用$this->config->get('config_value_here')调用它,而不是采取更快的黑客方法。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15253101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档