sitecreator

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

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

sitecreator    546

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

 

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

 

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

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

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


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

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

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


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

создай свой шаблон "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, ни в какие ворота такой совет не лезет.

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


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

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

 

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

 

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

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

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

 

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

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

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

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


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

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;

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

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


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

 

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

Плохо.

 

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

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

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


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

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

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

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


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

Я делал так:

	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 общий.

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


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

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

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

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

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

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

Войти

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

Войти


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

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