2

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

<?php echo $global1; ?>

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

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

not_found.tpl

<?=$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

<?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

<?=$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?>

和错误:

 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 
4

2 回答 2

6

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

define('CDN_URL', 'http://cdn.someurl.com/');

然后你可以使用

<?php echo CDN_URL; ?>

应用程序中的任何位置。如果您想像在编辑过的问题中那样对其进行编码,那么您的代码的根本缺陷是您使用$cdnDefault而不是$this->data['cdnDefault']在您的控制器文件中,这会导致未定义的问题。但是请注意,这个变量根本不是全局变量,它只是按应有的方式编码

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

于 2013-03-06T17:17:34.813 回答
1

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

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

$GLOBALS["1"] = "test";

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

<?php echo $GLOBALS["1"]; ?>

关于那个header东西,header实际上five other files是在每个控制器文件(对应于每个 tpl 文件)中声明的,就像这样

$this->children = array(
            'common/column_left',
            'common/column_right',
            'common/content_top',
            'common/content_bottom',
            'common/footer',
            'common/header'     
        );

回答更新的问题

/catalog/controller/common/header.php

<?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

<?=$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?>
于 2013-03-06T17:18:20.097 回答