Jump to content

Recommended Posts

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

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

заранее спс

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

в 2 столбца

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

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

Share this post


Link to post
Share on other sites

в 2 столбца

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

Share this post


Link to post
Share on other sites

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

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

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

спс

Share this post


Link to post
Share on other sites

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

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

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

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

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

Изображение

Share this post


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>

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

Начнем.

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

ocstore 1.5.5.1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
все сделал по инструкции. не отображает модуль в header.tpl

версия ocStore v1.5.5.1.2

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

Share this post


Link to post
Share on other sites
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, напишите плз.

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.