2

OpenCart 内で 2 つのグローバル変数を作成しようとしています。.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そのことに関して、それheaderfive 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 に答える