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

[Решено?..] Добавление блока в шаблон Home

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

В шаблоне home.tpl помимо content_top, column_left, column_right и content_bottom нужно добавить блок servicerow2

 

сделал следующие шаги:

1. добавил строку в catalog/controller/common/home.php

$data['servicerow'] = $this->load->controller('common/servicerow2');

2 добавил файл \catalog\controller\common\servicerow2.php c кодом

<?php
class ControllerCommonServicerow2 extends Controller {
	public function index() {
		$this->load->model('design/layout');

		if (isset($this->request->get['route'])) {
			$route = (string)$this->request->get['route'];
		} else {
			$route = 'common/home';
		}

		$layout_id = 0;

		if ($route == 'product/category' && isset($this->request->get['path'])) {
			$this->load->model('catalog/category');

			$path = explode('_', (string)$this->request->get['path']);

			$layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path));
		}

		if ($route == 'product/product' && isset($this->request->get['product_id'])) {
			$this->load->model('catalog/product');

			$layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']);
		}

		if ($route == 'information/information' && isset($this->request->get['information_id'])) {
			$this->load->model('catalog/information');

			$layout_id = $this->model_catalog_information->getInformationLayoutId($this->request->get['information_id']);
		}

		if (!$layout_id) {
			$layout_id = $this->model_design_layout->getLayout($route);
		}

		if (!$layout_id) {
			$layout_id = $this->config->get('config_layout_id');
		}

		$this->load->model('extension/module');

		$data['modules'] = array();

		$modules = $this->model_design_layout->getLayoutModules($layout_id, 'servicerow2');

		foreach ($modules as $module) {
			$part = explode('.', $module['code']);

			if (isset($part[0]) && $this->config->get($part[0] . '_status')) {
				$data['modules'][] = $this->load->controller('module/' . $part[0]);
			}

			if (isset($part[1])) {
				$setting_info = $this->model_extension_module->getModule($part[1]);

				if ($setting_info && $setting_info['status']) {
					$data['modules'][] = $this->load->controller('module/' . $part[0], $setting_info);
				}
			}
		}

		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/servicerow2.tpl')) {
			return $this->load->view($this->config->get('config_template') . '/template/common/servicerow2.tpl', $data);
		} else {
			return $this->load->view('default/template/common/servicerow2.tpl', $data);
		}
	}
}

3 добавил файл \catalog\view\theme\default\template\common\servicerow2.tpl c кодом 

<?php foreach ($modules as $module) { ?>
<?php echo $module; ?>
<?php } ?>

4 вставил строчку в файл catalog\view\theme\default\template\common\home.tpl

<?php echo $servicerow2; ?>

на странице сайта выходит ошибка 

Notice: Undefined variable: servicerow2 in /var/www/u0128313/data/www/grc-security.ru/catalog/view/theme/default/template/common/home.tplon line 6

 

Уважаемые специалисты, подскажите, что я делаю не так?

 

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


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

зачем Вам блок то ? 

все что делаете не так - это добавляете блок 

Изменено пользователем ArtenPitov

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


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

Не надо делать пользовательские позиции

Это не правильно

Ни один модуль не будет знать о них, плюс лишние затраты на вычисления

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


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

зачем Вам блок то ? 

все что делаете не так - это добавляете блок 

 

Не надо делать пользовательские позиции

Это не правильно

Ни один модуль не будет знать о них, плюс лишние затраты на вычисления

Часто встают задачи размещения блоков модулей в других местах. Например из header нужно перенести в content_top или наоборот. Если использовать javascript, то при загрузке видно, как модуль скачет по странице, что меня не устраивает. Поэтому блок делаю для того, чтобы понять как устроен механизм магазина и потом обходиться без javascript. Если модули не увидят этот блок, значит будем разбираться.

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


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

fofa, спать иногда надо.

смотри имена переменных.

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


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

Часто встают задачи размещения блоков модулей в других местах. Например из header нужно перенести в content_top или наоборот. Если использовать javascript, то при загрузке видно, как модуль скачет по странице, что меня не устраивает. Поэтому блок делаю для того, чтобы понять как устроен механизм магазина и потом обходиться без javascript. Если модули не увидят этот блок, значит будем разбираться.

jquery делайте без $(document).ready(function(){

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


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

afwollis, ага, посмотрю)

markimax, попробую)

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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