Я пытаюсь сделать две глобальные переменные в 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
вы можете использовать супер глобальный массив $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?>
Если вы просто хотите использовать статическое значение, вы можете просто использовать константу. Просто создайте файл в файле 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')
а чем считать то, что считается более быстрым методом взлома