Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

добавление языковых переменных в нестандартный tpl


 Поделиться

Рекомендованные сообщения

Здравствуйте. У меня есть часто повторяющийся кусок кода, который мне надо вставлять в разные модули. например в последнее, рекомендуемое, еще куда-то. Я вынесла этот кусок в отдельный tpl файл и через include подцепляю его. 

файл лежит в папке с шаблоном: template/new/product.tpl

В этом файле помимо прочего мне нужно выводить русский текст. Почитала всяческое в интернетах и сделала так:

1) завела в файл language/russian/new/product.php

<?php
$_['mynewtext']       = 'траляля';
?>

2) в new/product.tpl в нужном мне месте написала

<?php echo $mynewtext; ?>

3) создала файл catalog/controller/new/product.php

там написала вот такое

<?php  
class ControllerModuleNewProduct extends Controller {
	protected function index() {	
		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/new/product.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/new/product.tpl';
		} else {
			$this->template = 'default/template/new/product.tpl';
			}
        $this->language->load('new/product');			
		$this->data['mynewtext'] = $this->language->get('mynewtext');		
	}
}
?>

Подозреваю, что в последнем пункте у меня косяки, так как  есть всяческие мануалы, как сделать это для нового модуля, а для моего случая (когда нужно просто подцепить новый tpl файл) ничего нет:(

 

Подскажите, как исправить, ибо  на сайте вместо моей переменной  "траляля" выводится

Notice: Undefined variable: mynewtext

Ссылка на комментарий
Поделиться на других сайтах


А если попробовать ?

public function index() {
Ссылка на комментарий
Поделиться на других сайтах

А где Вы вызываете эту переменную и как?

 

попробовала - не помогло :(

Еще у Вас 

class ControllerModuleNewProduct

Хотя файл у Вас лежит как я понимаю catalog/controller/new/product.php

То есть должно быть

class ControllerNewProduct
Ссылка на комментарий
Поделиться на других сайтах

И 

$this->response->setOutput($this->render());

Есть у Вас или нет в файле контроллера? Код весь показали?

Изменено пользователем Prorab337
Ссылка на комментарий
Поделиться на других сайтах

 

А где Вы вызываете эту переменную и как?

Переменную вызываю  файле template/new/product.tpl (который в свою очередь вызываю через include из latest.tpl) вот так:

<?php echo $mynewtext; ?>

ControllerModuleNewProduct переименовала в ControllerNewProduct, но это тоже эффекта не произвело. 

да, код контроллера привела полностью.

такого куска текста $this->response->setOutput($this->render()); у меня не было. 

Строку эту я добавила, ничего не изменилось. Что еще я неправильно делаю?

Изменено пользователем fendile
Ссылка на комментарий
Поделиться на других сайтах


Покажите код latest.tpl, а то что-то я уже запутался...

Если вы просто делаете инклуд  template/new/product.tpl то результата не будет

Изменено пользователем Prorab337
Ссылка на комментарий
Поделиться на других сайтах

Покажите код latest.tpl, а то что-то я уже запутался...

Если вы просто делаете инклуд  template/new/product.tpl то результата не будет

<?php include('catalog/view/theme/'.$config->get('config_template').'/template/new/product.tpl'); ?>
Ссылка на комментарий
Поделиться на других сайтах


Если Вам в latest.tpl нужна переменная $mynewtext; то сделали бы так:

 

1. В контроллере latest 

$this->data['mynewtext'] = $this->getChild('new/product');

2. В контроллере NewProrduct должны сделать return того что хотите видеть в mynewtext к примеру

<?php  
class ControllerNewProduct extends Controller {
	public function index() {	
		
        $this->language->load('new/product');	
       $this->data['mynewtext'] = $this->language->get('mynewtext');

             if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/new/product.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/new/product.tpl';
	    } else {
			$this->template = 'default/template/new/product.tpl';
	    }		
		
       return $this->render();		
	}
}
?>

3. А уже в latest.tpl спокойно

<?php echo $mynewtext; ?>

Можно и попроще сделать не придерживаясь принципов движка.

 

Как-то так если я правильно понял

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.