Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Recommended Posts

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

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

заранее спс

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

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

в 2 столбца

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

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

Link to post
Share on other sites

в 2 столбца

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

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

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

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

спс

Link to post
Share on other sites

  • 11 months later...

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

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

Стандартная структура шаблона 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">

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

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

Изображение

Link to post
Share on other sites

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

Вернул всё к стандартному шаблону 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>
Link to post
Share on other sites

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

Link to post
Share on other sites

  • 4 months later...

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

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

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

$this->children = array(
'module/cart',
'common/my_new_position'
);
Теперь в шаблоне будет доступна переменная $my_new_position
  • +1 1
Link to post
Share on other sites

  • 5 months later...

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

Начнем.

Главное что нужно запомнить перед началом добавления, структуру папки по адресу
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>';

Все!

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

  • +1 7
Link to post
Share on other sites

  • 2 months later...

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

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

Link to post
Share on other sites

  • 8 months later...

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

 

ocstore 1.5.5.1

Link to post
Share on other sites

  • 1 month later...

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

Link to post
Share on other sites

  • 2 months later...
  • 2 weeks later...

все сделал по инструкции работает отлично.
но пробовал для вывода слайдера на 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; ?>

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

  • 2 weeks later...

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

Link to post
Share on other sites

  • 1 month later...
все сделал по инструкции. не отображает модуль в header.tpl

версия ocStore v1.5.5.1.2

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

Link to post
Share on other sites

  • 1 year later...
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, напишите плз.

 

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

Link to post
Share on other sites

  • 1 year later...

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.