Перейти к содержанию
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 выводить над футером. Както так...

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

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

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

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

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


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

ыыы. Тогда тестим-тестим-тестим.

Еще раз спасибо.

Еще раз с уважением.

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


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

Всегда пожалуйста!

Всё так же жду рецензий! :rolleyes:

Взаимно с Уважением! :)

  • +1 1

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


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

Есть у кого какие результаты тестирования? )

  • +1 1

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


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

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

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

С уважением.

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

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


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

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

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

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

<?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; ?>

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


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

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

Вставлять их нужно в следующие *.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

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


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

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

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


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

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

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

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

Спасибо!

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


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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

Идем 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 и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.