Página 1 de 1

Abrir Modulos dentro do header.tpl

Enviado: 06 Dez 2012, 22:33
por andersonnarciso
Galera, alguém sabe o que tenho que fazer para que isso
Código: Selecionar todos
<?php foreach ($modules as $module) { ?>
<?php echo $module; ?>
<?php } ?>
Funcione dentro do header.tpl?
Ou se alguém sabe como criar um conteudo_header.tpl para que ele funcione como um content_top.tpl?

Re: Abrir Modulos dentro do header.tpl

Enviado: 07 Dez 2012, 13:37
por Desimon
Anderson não é garantido que funcione, mas vale a tentativa. Lembrando que eu desencorajo qualquer mudança nos Controllers do OC.
Abra o arquivo: /catalog/controller/common/header.php

Na linha 146, insira o seguinte trecho de código (retirado do /catalog/controller/common/content_top.php):
Código: Selecionar todos
$layout_id = 0;
		
		if ($route == 'product/category' && isset($this->request->get['path'])) {
			$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'])) {
			$layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']);
		}
		
		if ($route == 'information/information' && isset($this->request->get['information_id'])) {
			$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');
		}

		$module_data = array();
		
		$this->load->model('setting/extension');
		
		$extensions = $this->model_setting_extension->getExtensions('module');		
		
		foreach ($extensions as $extension) {
			$modules = $this->config->get($extension['code'] . '_module');
			
			if ($modules) {
				foreach ($modules as $module) {
					if ($module['layout_id'] == $layout_id && $module['position'] == 'content_top' && $module['status']) {
						$module_data[] = array(
							'code'       => $extension['code'],
							'setting'    => $module,
							'sort_order' => $module['sort_order']
						);				
					}
				}
			}
		}
		
		$sort_order = array(); 
	  
		foreach ($module_data as $key => $value) {
      		$sort_order[$key] = $value['sort_order'];
    	}
		
		array_multisort($sort_order, SORT_ASC, $module_data);
		
		$this->data['modules'] = array();
		
		foreach ($module_data as $module) {
			$module = $this->getChild('module/' . $module['code'], $module['setting']);
			
			if ($module) {
				$this->data['modules'][] = $module;
			}
		}
No header.tpl, insira onde tu quer que apareçam os módulos:
Código: Selecionar todos
<?php foreach ($modules as $module) { ?>
<?php echo $module; ?>
<?php } ?>

Faz um teste aí e nos diga o que acontece.

Abraço.

Re: Abrir Modulos dentro do header.tpl

Enviado: 07 Dez 2012, 16:51
por andersonnarciso
Cara eu havia também solicitado ajuda no forum oficial, um usuário havia me dado algumas respostas, uma bem parecida com a sua, porém faltando apenas trocar o 'position' do foreach, fiz os paços dele e funcionou
http://forum.opencart.com/viewtopic.php ... 24#p365024

E esse é o motivo de querer colocar um modulo dentro do header http://sualoja.agenciawebsul.com/ veja o banner, agora só teho que descobrir como fazer com que ele redimencione automaticamente de acordo com o tamanho da janela do navegador, porque ele não redimenciona e perde a centralização quando está fora de resoluções como 1920x1080