sitecreator

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

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

sitecreator    517

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

 

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

 

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

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

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


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

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

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


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

создай свой шаблон "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    933

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

 

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

 

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

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

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

 

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

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

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

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


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

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    933

 

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

Плохо.

 

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

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

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


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

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

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

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


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

Я делал так:

	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 пользователей онлайн

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