juraweb

Позиция модулей

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

juraweb    0

привет всем!!!!!!

Ребят не подскажите как добавить позиции модулей?(не нашел на форуме инфу)

заранее спс

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


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

не подскажите как добавить позиции модулей?

Что и куда добавить?

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


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

Что и куда добавить?

ну вот у нас есть позиции справа слева и на главной

а мне например нада на главной в столбец пустить хтмл модули

в 2 столбца

вижу выход тока через добавление доп позиций модуля.

а как?.........

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


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

в 2 столбца

Стандартными средствами - никак. Можно поигратьс вложенными модулями в html либо назначить id другие и через css позиционировать.

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


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

Стандартными средствами - никак. Можно поигратьс вложенными модулями в html либо назначить id другие и через css позиционировать.

не вложеннные не канают нада через админку

лана пущу в 1 столбец а css задам в самом модуле

спс

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


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

Чего тему так и не развили?

Очень даже интересно. И думаю многим будет полезно.

Стандартная структура шаблона opencart 1.5 такая

<?php echo $header; ?>
<?php echo $column_left; ?><?php echo $column_right; ?>
<div id="content"><?php echo $content_top; ?>
<?php echo $content_bottom; ?>
<?php echo $footer; ?>
Мне понадобился дополнительный <div>, в который хочу чтобы вошло это <?php echo $column_left; ?><?php echo $column_right; ?>

<div id="content"><?php echo $content_top; ?><?php echo $content_bottom; ?>

То есть структура шаблона должна стать такой

<?php echo $header; ?>
<?php echo $contentwrapper; ?>
<?php echo $column_left; ?><?php echo $column_right; ?>
<div id="content"><?php echo $content_top; ?>
<?php echo $content_bottom; ?>
<?php echo $footer; ?>
Создал для $contentwrapper контроллер, отдельно .tpl где указал нужную информацию, которая появилась ниже меню во всю длину шаблона, а уже ниже должна идти колонка слева и весь контент.

Пока что не знаю, где закрыть этот <div id="contentwrapper">

<div id="content"> оказался в <div id="column-left">

Буду рад за помощь. Если сам дойду, отпишусь.

В рисунках показано, как хочу сделать.

Изображение

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


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

Дополняю свои исследования.

Вернул всё к стандартному шаблону OpenCart.

В файле home.tpl поменял структуру как мне нужно, а именно получилось так:

<?php echo $header; ?><div id="contentwrapper"><?php echo $column_left; ?><?php echo $column_right; ?>
<div id="content"><?php echo $content_top; ?>
<?php echo $content_bottom; ?></div></div>
<div id="divAdLeft" style="display:none;"></div>
<div id="divAdRight" style="display:none;"></div>
<div id="hdevider_full"></div>
<?php echo $footer; ?>
Прикол заключается в следующем.

Сейчас в позиции Левая колонка стоит баннер.

Всё размещается красиво.

Поставил себе модуль News/Blog.

Ставлю его тоже в позицию Левая колонка Порядок 2 под баннером.

Тут и начинаются танцы с бубнами.

Весь контент с середины съезжает в левую колонку под блок News/Blog.

<div id="content"> оказывается в <div id="column-left">

<div id="column-left">
		   <div id="content"></div>
</div>

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


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

Спасибо. Тема интересная, но я вопрос уже решил по другому. К стилям шаблона добавил новый див, в который уже вошли все остальные: контент, left, right. Пришлось также поправить все файлы папки template, то есть в моем случае я добавил $contentwrapper во все файлы между $header и $content. Всё работает, получилось. Теперь у меня есть целый блок в длину шаблона между header и content. Если я добавляю колонку слева или справа, она появляется только под этим $contentwrapper

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


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

partizzzzzan привел полезную ссылку. Там все подробно расписано по полочкам. Единственное, там не написано как вставить позицию в header.tpl или другой шаблон. А сделать это просто:

1. Открываем контроллер нужного шаблона (например catalogviewthemephototemplatecommonheader.php

2. Находим (или создаем подключение детенышей и добавляем свою позицию. Получается что-то вроде:

$this->children = array(
'module/cart',
'common/my_new_position'
);
Теперь в шаблоне будет доступна переменная $my_new_position

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


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

Ребята, решение есть - ссылка. Но на всякий пожарный, если вдруг через несколько дней (недель, месяцев и т.д) страница с решением перестанет открываться, привожу инструкцию ниже:

Начнем.

Главное что нужно запомнить перед началом добавления, структуру папки по адресу
admin/view/template/module/название.tpl
, каждый шаблон отвечает за вывод модуля. Важно выбрать один необходимый модуль, можно несколько или хоть все. Например шаблон featured.tpl отвечает за вывод рекомендуемых товаров и т.д.

Сейчас по порядку. Пример: Допустим нам нужно вывести модуль слайдера в отдельный блок и назвать его <?php echo $content_slider; ?>

1. Создание контроллера

Нужно создать головной файл с настройками в catalog/controller/common/ с названием content_slider.php в него добавить код:

<?php
class ControllerCommonContentSlider extends Controller {
public function index() {
	$this->load->model('design/layout');
	$this->load->model('catalog/category');
	$this->load->model('catalog/product');
	$this->load->model('catalog/information');

	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'])) {
		$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_slider' && $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;
		}
	}

	if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/content_slider.tpl')) {
		$this->template = $this->config->get('config_template') . '/template/common/content_slider.tpl';
	} else {
		$this->template = 'default/template/common/content_slider.tpl';
	}

	$this->render();
}
}
?>

обязательно проверьте номера строк: 2 (ControllerCommonContentSlider), 50, 79, 80, 82 в них должны быть имена совпадающие с названием шаблона у меня это content_slider, в дальнейшем при создании новых блоков необязательно копировать весь текст, достаточно поправить строчки с необходимым названием, например content_sale и т.д.

2. Создание шаблона

Далее нам необходимо сделать файл шаблона для вывода модуля в catalog/view/theme/default/template/common/ здесь создаем шаблон с именем который у нас носит контроллер content_slider.tpl с внутренностями

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

3. Объявляем модуль в нужном месте

Теперь необходимо дать понять движку где выводить наш модуль, на главной в хедере или футере. Переходим в catalog/controller/common/название.php для вывода слайдера на главной мне нужен home.php открываю его и дописываю в код

$this->children = array(
		'common/column_left',
		'common/column_right',
		'common/content_top',
		'common/content_bottom',
		'common/footer',
		'common/header',
	);

строчку ’common/content_slider’, (Будьте внимательны, дописывайте код перед футером и хедером. Связано это из за возможных проблем с jQuery!) получится:


$this->children = array(
		'common/column_left',
		'common/column_right',
		'common/content_top',
		'common/content_bottom',
		'common/content_slider',
		'common/footer',
		'common/header'
	);

если Вы добавляете например в футер, то там Вы можете не обнаружить строчку $this->children = array, в этом случает перед $this->render(); добавьте $this->children = array(‘common/content_slider’);

4. Вывод хозяйства в шаблоне

Выводим наш модуль в шаблоне, для этого я в catalog/view/theme/default/template/common/home.tpl добавляю строчку в нужном мне месте

<?php echo $content_slider; ?>

5. Отображение в Админке

Что бы мы могли выбрать нашу новую позицию нам нужно что бы она отображалась в админке, это логично;) тут вспоминаем что было сказано в самом начале о самом важном, выбираем в admin/view/template/module/название.tpl нужный шаблон, у меня это slideshow.tpl, в нем находим

<?php if ($module['position'] == 'content_top') { ?>
<option value="content_top" selected="selected"><?php echo $text_content_top; ?></option>
<?php } else { ?>
<option value="content_top"><?php echo $text_content_top; ?></option>
<?php } ?>

и перед ним (можно после, эта строка отвечает за вывод названия из выпадающего списка в адмике) вставляем


<?php if ($module['position'] == 'content_slider') { ?>
<option value="content_slider" selected="selected">Slider Box</option>
<?php } else { ?>
<option value="content_slider">Slider Box</option>
<?php } ?>

теперь в этом же файле (ниже), ищем строку



html += '	  <option value="content_top"><?php echo $text_content_top; ?></option>';

и добавляем перед ним строку



html += '	  <option value="content_slider">Slider Box</option>';

Все!

Проверено мной - работает!

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


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

Ya2mama. Спасибо! Отличный пост, все подробно расписано.) А ссылка действительно перестала работать).

Работает - и мной проверено!

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


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

все сделал по инструкции. позицию добавлял в content_bottom.  не выводит модуль в указанной позиции. в чем может быть проблема? 

 

ocstore 1.5.5.1

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


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

Ya2mama, за это - "(Будьте внимательны, дописывайте код перед футером и хедером. Связано это из за возможных проблем с jQuery!)" - отдельное спасибо! Долго не могла понять, почему слайдшоу не работает в новосозданной позиции. +1

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


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

все сделал по инструкции работает отлично.
но пробовал для вывода слайдера на header.tpl добавляю в catalog/controller/common/header.php 

$this->children = array(
'common/content_slider',
'module/language',
'module/currency',
'module/menu',
'module/cart'
);

и в header.tpl

<?php echo $content_slider; ?>

не отображает модуль. пробовал даже все схемы. результат ноль. помогите пжл. 
заранее спасибо.

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


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

есть кто сможет помочь? 

мне просто слайдер на шапку надо поставит и на всех страницах чтоб он быль. 

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


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

есть кто не будь живой ?

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


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

ребят, а как вывести Модуль HTML в товар?

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


Ссылка на сообщение
Поделиться на другие сайты
sanyok    0
все сделал по инструкции. не отображает модуль в header.tpl

версия ocStore v1.5.5.1.2

помогите пжл.

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


Ссылка на сообщение
Поделиться на другие сайты
eugenex    0
5. Отображение в Админке

Что бы мы могли выбрать нашу новую позицию нам нужно что бы она отображалась в админке, это логичноwink.png тут вспоминаем что было сказано в самом начале о самом важном, выбираем в admin/view/template/module/название.tpl нужный шаблон, у меня это slideshow.tpl, в нем находим

<?php if ($module['position'] == 'content_top') { ?>
<option value="content_top" selected="selected"><?php echo $text_content_top; ?></option>
<?php } else { ?>
<option value="content_top"><?php echo $text_content_top; ?></option>
<?php } ?>
и перед ним (можно после, эта строка отвечает за вывод названия из выпадающего списка в адмике) вставляем


<?php if ($module['position'] == 'content_slider') { ?>
<option value="content_slider" selected="selected">Slider Box</option>
<?php } else { ?>
<option value="content_slider">Slider Box</option>
<?php } ?>

теперь в этом же файле (ниже), ищем строку



html += '	  <option value="content_top"><?php echo $text_content_top; ?></option>';

и добавляем перед ним строку



html += '	  <option value="content_slider">Slider Box</option>';

 

Получилось до добавления в админку. Добавление в админку наверное требуется актуализировать.  Я использую Opencart 2.0.1.0 и у меня нет в admin/view/template/module/название.tpl кода

<?php if ($module['position'] == 'content_top') { ?>

 

Если кто-то знает, как это делается в 2.0.1.0, напишите плз.

 

Если найду сам - напишу.

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


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

а как все тоже самое реализовать в  2.1.0.2?

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


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

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

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

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

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

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

Войти

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

Войти


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

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