Перейти к содержанию
sitecreator

[Решено] один код tpl для нескольких модулей. как?

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

Возьмем для примера похожие визуально и функционально модули "рекомендуемые" и "последние".

 

код featured.tpl и latest.tpl  совершенно одинаковый.

 

И очень редко когда приходится делать разный внешний вид для "рекомендуемых" и "последних".

Поэтому если есть желание сделать визуально одинаково несколько однотипных модулей (с одинаковым кодом tpl), то возникает вопрос как сделать изменения только в одном месте?

Поделиться сообщением


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

include('шаблон.tpl');

Поделиться сообщением


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

создай свой шаблон "module/yourcustommultimoduletpl.tpl" и подключай его в контроллерах модулей вместо родных

		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/yourcustommultimoduletpl.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/module/yourcustommultimoduletpl.tpl';
		} else {
			$this->template = 'default/template/module/yourcustommultimoduletpl.tpl';
		}
chukcha, ни в какие ворота такой совет не лезет.
  • +1 3

Поделиться сообщением


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

Это почему же...

 

У меня есть шаблон вывода products - шаблон одинаковый для всех контроллеров

 

вызываю его из шаблонов

<?php
    include('allproduct_all.tpl');
?>

Изменения, если надо делаю только в нем.

 

В нем, например:

<?php if ($products) { ?>
		<div class="product-grid">
			<?php foreach ($products as $product) { ?>
...

И где здесь ворота? :(

Поделиться сообщением


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

chukcha, стандартный контроллер делает так. есть разница?


        if (file_exists(DIR_TEMPLATE . $this->template)) {
            extract($this->data);
            
              ob_start();
      
              require(DIR_TEMPLATE . $this->template);
      
              $this->output = ob_get_contents();

              ob_end_clean();
              
            return $this->output;

а вообще отклоняться от стандарта плохой тон

Поделиться сообщением


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

 

а вообще отклоняться от стандарта плохой тон

Плохо.

 

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

Тем более, что include, может быть обернут специфическим кодом под каждый шаблон.

Поделиться сообщением


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

так юзать один как предложил afwollis

с другой стороны, если в самом tpl файле include'ить другой tpl не вижу ничего плохого если иначе совсем никак

Поделиться сообщением


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

Я делал так:

	public function index() {
...

		if (($this->request->server['REQUEST_METHOD'] == 'POST') && ($this->validate($this->request->post))) {
			$to_save = array();
			foreach($this->request->post as $key=>$val) {
				$key = str_replace('yandex_yml_', 'yandex_yml2_', $key);
				$to_save[$key] = $val;
			}
			$this->model_setting_setting->editSetting('yandex_yml2', $to_save);

...

Получается модуль и его клон: 2 контроллера, а tpl общий.

  • +1 1

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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