Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Расширение модульных позиций


ampersand
 Поделиться

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

Всем доброго времени суток!

Сделал небольшое расширение движка для модулей, что бы их можно было расставлять не только по правой и левой стороне сайта, но так же можно было ставить вверх, в низ, хидер и футер.

Вот хотел узнать: нужен ли кому то такой функционал кроме меня? Если да, то могу опубликовать.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


Рад, что нужная модификация, выкладываю :) :

Advanced module positions (v. 0.1)

Сделано и протестировано на ocStore v0.1.7 (OpenCart 1.4.9.3).

Эта небольшая модификация позволяет расставлять модули не только по правой и левой сторонам сайта, но так же размещать их в шапке, подвале, верхней и нижней части страниц.

V0.1 - Нуждается в тестировании. Адаптация для ocStore v0.1.7, а в частности: только русский язык, расстановка стандартных модулей из сборки ocStore, так что если используете нестандартные модули или другие языки - пишите, добавлю в следующую версию модификации или же напишу небольшой мануал как это всё допилить. :)

Скриншоты:

Изображение

Изображение

Установка:

(для стандартного шаблона)

Содержимое архива залить в папку с установленным Opencart или ocStore, на вопросы о замене ответить утвердительно.

Затем в папке /catalog/view/theme/default/template/common в файлы footer.tpl, header.tpl, home.tpl и success.tpl добавить следующий код (в то место, где требуется отображение модулей):

в footer.tpl:

<?php echo $column_footer; ?>
в header.tpl:
<?php echo $column_header; ?>
в home.tpl и success.tpl:
<?php echo $column_top; ?>	<?php echo $column_bottom; ?>

Блочные позиции почти что установлены.

Что бы позиции "Верх" и "Низ" отображались на остальных страницах, нужно в шаблоне в каждый файл, который начинается со строки

<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>

добавить код (в то место, где требуется отображение модулей):

<?php echo $column_top; ?>	<?php echo $column_bottom; ?>

(для нестандартного шаблона)

Содержимое архива залить в папку с установленным Opencart или ocStore, на вопросы о замене ответить утвердительно.

В папку /catalog/view/theme/Ваш_шаблон/template/common залить файлы column_bottom.tpl, column_footer.tpl, column_header.tpl, column_top.tpl из папки в архиве /catalog/view/theme/default/template/common.

А дальше как для стандартного шаблона. :)

Лицензия: GNU GPL, версию не помню. В общем пользуйте на здоровье, изменяйте, исправляйте, дополняйте и тп. :)

Жду рецензий! :)

advanced module positions.tar.gz

  • +1 6
Ссылка на комментарий
Поделиться на других сайтах


Рад, что нужная модификация, выкладываю :) :

Advanced module positions (v. 0.1)

Сделано и протестировано на ocStore v0.1.7 (OpenCart 1.4.9.3).

Жду рецензий! :)

Ух ты. Спасибо огромное ampersand! Вот это вещь. Пойду тестить.

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


Шикарно. Роскошно. К админке прикрутить не думаете? Вроде "лево", "право".. и т.п.

С уважением.

з.ы. Будем тестить.

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

ну... как. Типа модуля. Мол, хочу MyHTML_module выводить над футером. Както так... В админке-ж можно выставить где "последние_товары" выводятся, правильно?

С уважением.

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

ну... как. Типа модуля. Мол, хочу MyHTML_module выводить над футером. Както так...

То есть что бы был один отдельный модуль управляющий размещением всех остальных по блочным позициям, А не у каждого модуля в настройках выставлялось его положение?

В админке-ж можно выставить где "последние_товары" выводятся, правильно?

Ну ведь "последние_товары" это ж модуль и его позиция выставляется в админке по адресу Дополнения - Модули - "Последнее" - изменить.

Моя доработка по такому принципу и работает. :)

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


  • 2 недели спустя...

У нас работает. Правда, для данной площадки оказалось неактуально и решили отказаться, а для новых проектов аккуратненько в архивчике присутствует. Объединить данную доработку с вот этой темой (спасибо очередное tim21701) - будет бомба. Я к тому, что "шаблоны" можно будет создавать невероятной гибкости ;)

Автору риспект плюс плюс ;)

С уважением.

UPD: Тестил на 1.4.8Б - стало с первого раза и журнал ошибок чист.

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

  • 2 недели спустя...

А можно уточнить по поводу этого момента

Блочные позиции почти что установлены.

Что бы позиции "Верх" и "Низ" отображались на остальных страницах, нужно в шаблоне в каждый файл, который начинается со строки

<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>

добавить код (в то место, где требуется отображение модулей):

<?php echo $column_top; ?> <?php echo $column_bottom; ?>

в поиске нашло 175 файлов которые начинаются со строки <?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>

это во весх файлах вручную чтоли нужно добавлять строки?

<?php echo $column_top; ?> <?php echo $column_bottom; ?>

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


  • 2 недели спустя...

Нет, их должно быть намного меньше.

Вставлять их нужно в следующие *.tpl файлы (если нужно отображение блочной позиции на этих страницах):

.../catalog/view/theme/default - папка шаблона:

/account - внешний вид страниц управления учетной записью (12 файлов)

/checkout - внешний вид страниц оформления заказа (7 файлов)

/common - тут только в home.tpl, success.tpl, ну и если надо в maintenance.tpl

/error - тоже если надо (1 файл)

/information - внешний вид контактов, карты сайта, страниц с текстовым контентом (3 файла)

/mail - тут ничего не надо

/module - тут так же ничего не требуется изменять

/payment - и сюда не лезем. :)

/product - внешний вид страниц товаров, категории товаров, поиск товаров (6 файлов)

Вроде ничего не забыл.

Итого ~31 файл.

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


класс!! спасибо!

все работает кроме одного - у моего собственного модуля отсутствует выбор новых позиций. Как было "слева, справа, главная" так и осталось.

в чем беда?

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


вот этот модуль не видит новых позиций

Не надо выкладывать модуль, который есть в разделе "Дополнения".

Достаточно дать на него ссылку.

afwollis

Изменено пользователем afwollis
Ссылка на комментарий
Поделиться на других сайтах


спасибо за конструктивное замечание я каюсь )

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

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


Выбор позиций для модуля дописывается в сам модуль. Я работал со стандартной комплектацией, по этому то, что дополнительно - надо дописывать.

Чуть позже отпишусь что где дописать или же сам добавлю (с пояснениями как это делается).

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


алилуйя, спасибо =) а то я уже всю голову сломал... уже даже в БД залез.. подумал может там хранятся позиции.. но не увидел ничего похожего... буду ждать.

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


Выбор позиций для модуля дописывается в сам модуль. Я работал со стандартной комплектацией, по этому то, что дополнительно - надо дописывать.

Чуть позже отпишусь что где дописать или же сам добавлю (с пояснениями как это делается).

тоже очень жду вашего решения! :)

Спасибо!

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


спасибо за разъяснения

подскажите еще такой момент в каком файле надо сделать изменения что бы блок(модуль) отображался только на внутренних страницах (каталог, подкаталог) по центру

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


  • 4 недели спустя...

Выбор позиций для модуля дописывается в сам модуль. Я работал со стандартной комплектацией, по этому то, что дополнительно - надо дописывать.

Чуть позже отпишусь что где дописать или же сам добавлю (с пояснениями как это делается).

Как раз искал такое решение и наткнулся на эту тему. Мне в хидер надо вставить не стандартный модуль "Cлайдер последних товаров". Опишите куда и чего прописывать. И достаточно ли мне будет закинуть файлы только для хидера? Мой сайт находится здесь

В хидере место для слайдера.

Очень нужное решение потому как в стандартном скрипте почему то это не предусмотрено.

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


  • 2 недели спустя...

алилуйя, спасибо =) а то я уже всю голову сломал... уже даже в БД залез.. подумал может там хранятся позиции.. но не увидел ничего похожего... буду ждать.

Извините, что пропал, совсем запарился...

И так, как сделать, что бы дополнительные модульные позиции действовали и на нестандартные модули:

Дело в том, что доп. позиции для модуля должны быть прописаны в самом модуле, по этому нестандартные модули допиливаем сами. :)

При чем при создании этого расширения я заметил, что выбор позиций люди реализовывают по разному (двумя способами).

Способ первый:

Идем admin/controller/module/нужный_модуль.php

Находим строки:

$this->data['text_left'] = $this->language->get('text_left');
$this->data['text_right'] = $this->language->get('text_right');

после них добавляем:

$this->data['text_top'] = $this->language->get('text_top');
$this->data['text_bottom'] = $this->language->get('text_bottom');
$this->data['text_header'] = $this->language->get('text_header');
$this->data['text_footer'] = $this->language->get('text_footer');

Это язык. :)

Далее находим:

$this->data['positions'] = array();
		
		$this->data['positions'][] = array(
			'position' => 'left',
			'title'    => $this->language->get('text_left'),
		);
		
		$this->data['positions'][] = array(
			'position' => 'right',
			'title'    => $this->language->get('text_right'),
		);

и после этого добавляем:

$this->data['positions'][] = array(
			'position' => 'top',
			'title'    => $this->language->get('text_top'),
		);
		$this->data['positions'][] = array(
			'position' => 'bottom',
			'title'    => $this->language->get('text_bottom'),
		);
		$this->data['positions'][] = array(
			'position' => 'header',
			'title'    => $this->language->get('text_header'),
		);
		$this->data['positions'][] = array(
			'position' => 'footer',
			'title'    => $this->language->get('text_footer'),
		);
...соответственно.

Всё, по идее всё должно работать. :)

Иногда бывает, что второй блок кода найти не удается, по этому нужен второй способ.

Способ 2:

Тут: admin/controller/module/нужный_модуль.php так же вставляем язык (первый блок кода).

Далее идем: /admin/view/template/module/нужный_модуль.tpl

И после кода:

              <?php if ($google_talk_position == 'left') { ?>
              <option value="left" selected="selected"><?php echo $text_left; ?></option>
              <?php } else { ?>
              <option value="left"><?php echo $text_left; ?></option>
              <?php } ?>
              <?php if ($google_talk_position == 'right') { ?>
              <option value="right" selected="selected"><?php echo $text_right; ?></option>
              <?php } else { ?>
              <option value="right"><?php echo $text_right; ?></option>
              <?php } ?>
( Внимание! $google_talk - это название модуля, так что будьте внимательны. Самое лучшее найти этот блок кода в модуле, скопировать его и вставить просто заменив text_left на top/bottom/header/footer. :) )

добавляем:

<?php if ($category_position == 'top') { ?>
              <option value="top" selected="selected"><?php echo $text_top; ?></option>
              <?php } else { ?>
              <option value="top"><?php echo $text_top; ?></option>
              <?php } ?>
              <?php if ($category_position == 'bottom') { ?>
              <option value="bottom" selected="selected"><?php echo $text_bottom; ?></option>
              <?php } else { ?>
              <option value="bottom"><?php echo $text_bottom; ?></option>
              <?php } ?>
              <?php if ($category_position == 'header') { ?>
              <option value="header" selected="selected"><?php echo $text_header; ?></option>
              <?php } else { ?>
              <option value="header"><?php echo $text_header; ?></option>
              <?php } ?>
              <?php if ($category_position == 'footer') { ?>
              <option value="footer" selected="selected"><?php echo $text_footer; ?></option>
              <?php } else { ?>
              <option value="footer"><?php echo $text_footer; ?></option>
              <?php } ?>

( опять же не путаемся с переменными )

Всё, по идее всё должно работать.

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах


Красавчег. Спасибо, правда я за это время уже сам допёр что и куда но для других будет полезно. Прими +1 от меня.

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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