0 Пользователей и 1 Гость просматривают эту тему.
  • 342 Ответов
  • 78813 Просмотров
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Обновление поста 21.11.2014, рецепты ниже не будут работать на J1.5, J1.6, J1.7. Только для последних версий J2.5 и J3.x

По мотивам - Различные условия в шаблонах

Варианты вызова модуля в шаблонах компонента Jshop
как вызвать модуль, например, в шаблоне категории или товара, 3 способа:

1. Вывод конкретного модуля, на примере модуля меток
Спойлер
[свернуть]

2. Вывод любого (всех) модулей, опубликованных в конкретной позиции - bottom
Спойлер
[свернуть]

3. Еще вариант вызова модулей по позиции
Спойлер
[свернуть]

Различные условия в шаблоне Joomla (templates/ВАШ_Шаблон/index.php)

1. Получаем необходимые параметры

Перед составлением условий, рекомендую - отключить SEF, тогда будет видно в URL какие у вас параметры

Код: php
$input = JFactory::getApplication()->input;
$option = $input->getCmd('option', '');
$controller = $input->getCmd('controller', '');

$option определяет компонент, в нашем случае $option это 'com_jshopping'
$controller работает уже внутри компонента - это может быть 'category', 'product', 'cart' и другое; все это можете узнать отключив SEF в настройках и посмотрев чему равен $controller (в адресной строке) на интересующих вас страницах.

Логические операторы
(для совсем новичков, чтоб вы сами могли составлять условия)
[spoiler title=логические операторы]
==  РАВНО
напр. - $controller == 'product' (показать в товарах)
!=  НЕ РАВНО!
напр. - $controller != 'product' (НЕ показывать в товарах)
&&  И
напр. - $controller == 'category' && $controller == 'product' (и в категориях и в товарах)[/spoiler]

Примеры для шаблона Joomla (templates/ВАШ_Шаблон/index.php)

1. Компонент Jshop установлен как главный пункт меню (для красивых ссылок, допустим), но не хотим выводить его на главной
Код: php
<?php if (JURI::current()!= JURI::base()):?> //само условие
<jdoc:include type="component" /> //непосредственно вывод компонента
<?php endif;?>

2. Позицию модуля не показывать в корзине и при оформлении заказа
Код: php
<?php if ( $option == 'com_jshopping' && $controller != 'cart' && $controller != 'checkout' ) : ?>
<jdoc:include type="modules" name="left" />
<?php endif; ?>

3. Показать модуль только в категории, у которой ID=5
Спойлер
[свернуть]

Различные условия в шаблонах компонента Joomshopping

Первым делом переопределяем шаблоны -  всю папку /components/com_jshopping/templates/default/ копируем, переименовываем в com_jshopping и загружаем по адресу /templates/ваш_шаблон/html/*

1. Выводить описание категории только на первой странице (на второй и последующих - описания не будет)
/templates/ваш_шаблон/html/com_jshopping/category/category_default.php
Спойлер
[свернуть]

2. Выводить что угодно в магазине только для авторизованных пользователей
Спойлер
[свернуть]
В основном мануал собран из тех решений что уже встречались на форуме, для вашего удобства - всё в одном месте, довольно подробно, с пояснениями, - поэтому не стесняйтесь - экспериментируйте с условиями :)
« Последнее редактирование: 03.03.2020, 13:37:38 от nevigen »
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0


<?php if ( $this->countModules('my_module') && $option == 'com_jshopping' && $controller != 'category' && $controller != 'cart' ) : ?>
    <jdoc:include type="modules" name="my_module" />
<?php endif; ?>

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

а в начале надо определить переменные
$option = JRequest::getVar('option', null);
$controller = JRequest::getVar('controller', null);

« Последнее редактирование: 31.08.2012, 01:48:29 от ELLE »
*

aorr

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
А если добавить в шаблон странички товара модульную позицию?
или так делать неправильно?
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
почему же неправильно, делайте как вам нужно :)
-----------------
только не в шаблон странички товара в прямом смысле, делается на уровне шаблона Joomla по указанному принципу

<?php if ( $this->countModules('zakaz') && $option == 'com_jshopping' && $controller == 'product' ) : ?>
<jdoc:include type="modules" name="zakaz" />
<?php endif; ?>
« Последнее редактирование: 21.05.2012, 12:44:09 от ELLE »
*

aorr

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
<?php if ( $this->countModules('zakaz') && $option == 'com_jshopping' && $controller == 'product' ) : ?>
<jdoc:include type="modules" name="zakaz" />
<?php endif; ?>

Этот момент полностью понятен, Спасибо.

А вот если в шаблоне странички товара components/com_jshopping/templates/default/product/product_default.php разместить модульную позицию?
Какой вариант более правильный или корректный?
*

aorr

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Код: php
<?php  $modules = JModuleHelper::getModules('Указать позицию модулей');
if ($modules && is_array($modules)) {
foreach ($modules as $module) {
//заголовок
echo $module->title;
//контент
echo JModuleHelper::renderModule($module);
};
} ?>
Вот сейчас как раз этот вариант и использую.

Но подумал, что может правильнее:
<?php if ( $this->countModules('my_module') && $option == 'com_jshopping' && $controller != 'category' && $controller != 'cart' ) : ?>
    <jdoc:include type="modules" name="my_module" />
<?php endif; ?>

Или особой разницы нет и на производительности это никак не сказывается?
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Efanych, а вот как не модуль вывести через шаблон карточки товара product_default.php , а вот это <jdoc:include type="message" /> ?
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Да, ссылку воланда тож видела)
ладно, буду пробовать, спс.
*

user5

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
а в начале надо определить переменные
$option = JRequest::getVar('option', null);
$controller = JRequest::getVar('controller', null);

подскажите пожалуйста где это сделать?
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
templates/шаблон/index.php
после
<?php
// No direct access.
defined('_JEXEC') or die;
*

user5

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #10 : 05.08.2012, 13:34:28 »
как написать,чтобы когда допустим левая колонка пуста,т.е нет модулей в ней на этой страничке,другой модуль принимал ширину 100%?где-то встречал,но не помню где.заранее благодарен!
*

user5

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #11 : 05.08.2012, 13:51:09 »
Работает корректно только на страницах JS. .Модуль пропадает со всех страниц не являющихся страничкой JS.Как быть?
<?php if ( $this->countModules('user5') && $option == 'com_jshopping' && $controller != 'product' ) : ?>
    <jdoc:include type="modules" name="user5" />
<?php endif; ?>
« Последнее редактирование: 05.08.2012, 14:00:13 от user5 »
*

user5

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #13 : 05.08.2012, 15:25:22 »
Различные условия в шаблонах
спасибо,получилось.вот только с этим никак:
Работает корректно только на страницах JS. .Модуль пропадает со всех страниц не являющихся страничкой JS.Как быть?
<?php if ( $this->countModules('user5') && $option == 'com_jshopping' && $controller != 'product' ) : ?>
    <jdoc:include type="modules" name="user5" />
<?php endif; ?>
*

user5

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #14 : 05.08.2012, 15:49:55 »
спасибо)
*

Oleg24

  • Осваиваюсь на форуме
  • 45
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #15 : 20.08.2012, 14:36:24 »
ELLE, подскажите, что я делаю не так:(

после defined('_JEXEC') or die; в шаблоне вставляю переменные
$option = JRequest::getVar('option', null);
$controller = JRequest::getVar('controller', null);

Затем в коде <?php if ( $this->countModules('my_module') && $option == 'com_jshopping' && $controller != 'category' && $controller != 'cart' ) : ?>
    <jdoc:include type="modules" name="my_module" />
<?php endif; ?>

меняю my_module на название своего модуля (mod_jshopping_last_visit_products) и вставляю в шаблон.

Уже как только не пробовал, модуль все равно выводится и в корзине и в категории:(

J 2.5, JS 2.8.1

Что я делаю не так? :(

сайт klever-floor.ru
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #16 : 20.08.2012, 14:41:41 »
позицию нужно прописать, а не название модуля
*

Oleg24

  • Осваиваюсь на форуме
  • 45
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #17 : 20.08.2012, 14:44:25 »
то есть, если это левая колонка, то все что будет в ней прописано не будет выводится в корзине и категориях?
*

Oleg24

  • Осваиваюсь на форуме
  • 45
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #19 : 20.08.2012, 14:47:40 »
от блин... а мне нужно только модуль...

ладно, спасибо! Буду искать решение дальше:(
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #20 : 20.08.2012, 14:49:28 »
ну так можно под него новую позицию сделать...
*

Oleg24

  • Осваиваюсь на форуме
  • 45
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #21 : 24.08.2012, 12:47:07 »
ELLE, подскажите пожалуйста. Все сделал так Вы и сказали - работает, спасибо!  (+)

Еще остался такой вопрос - модуль "Вы смотрели" не отображается в списке товаров, как его туда добавить? например http://klever-floor.ru/laminat

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

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #22 : 24.08.2012, 13:11:27 »
список товаров это
$controller == 'category'

корзина это -
$controller == 'cart'

попробуйте так
<?php if (JURI::current()!= JURI::base() && $controller != 'cart' ):?>
не на главной и не в корзине
<?php endif;?>
*

Oleg24

  • Осваиваюсь на форуме
  • 45
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #23 : 24.08.2012, 14:11:58 »
ELLE, все работает! СПАСИБО!
*

Silent_Breeze

  • Захожу иногда
  • 171
  • 33 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #24 : 27.08.2012, 02:05:05 »
Сделал так:
  • Поставил Advanced Module Manager - http://www.nonumber.nl/extensions/advancedmodulemanager(В любом случае нужен был и для других целей)
  • Опубликовал фильтр в позицию (в моём случае это была "Left")
  • Открыл редактирование модуля
  • Открыл слайдер "Отображение модуля по условиям"
  • Условие "Компоненты", жмём "Выбрать" и в списке выбираем (ставим галочку напротив) JoomShopping (что бы фильтр показывался только в магазине)
  • Условие "URL", "Активировать при" выбираем "Исключить выбранное". В поле "Соответствие URL (SEF вЫключен)" вставляем части ссылок: com_jshopping&controller=product и com_jshopping&controller=cart (соответственно, что бы пустой модуль фильтра скрывался и не занимал колонку "Left" при показе карточки товара и корзины.)

Надеюсь не сильно запутанно описал?
« Последнее редактирование: 27.08.2012, 02:08:12 от Silent_Breeze »
Здесь всё есть... просто нужно поискать немного... ;)
*

Sinn

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #25 : 05.09.2012, 19:06:25 »
Мне нужно что бы модуль выводился только на главной странице категорий.
после defined('_JEXEC') or die; в шаблоне вставляю переменные
$option = JRequest::getVar('option', null);
$controller = JRequest::getVar('controller', null);

Потом пробую вставить код, но Dreamviewer ругается из-за синтаксической ошибки ...
Если убираю <?php ругаться перестает, но ничего так и не работает

С ошибкой вроде разобрался. Поставил ?> перед копируемым кодом.
Но нужная позиция все равно отображается на всех страницах, плюс в самом низу страницы отображается дубль содержимого позиции. Но уже на нужной странице
« Последнее редактирование: 06.09.2012, 22:51:26 от Sinn »
*

Phoenix88

  • Захожу иногда
  • 81
  • 3 / 0
  • Нет предела самосовершенствованию
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #26 : 13.09.2012, 14:48:22 »
Спасибо большое.. добавила модуль в страничку товара.

<?php if ( $this->countModules('last_2') && $option == 'com_jshopping' && $controller == 'product' ) : ?>
<jdoc:include type="modules" name="last_2" />
<?php endif; ?>

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


МОДУЛЬ - lastest products
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #27 : 13.09.2012, 14:51:11 »
смотрите то, что первом посте -
Варианты вызова модуля в шаблонах компонента Jshop
- этот способ вам больше подойдет (если правильно поняла вопрос)
*

Phoenix88

  • Захожу иногда
  • 81
  • 3 / 0
  • Нет предела самосовершенствованию
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #28 : 13.09.2012, 14:52:42 »
сейчас проверю сорри
*

Phoenix88

  • Захожу иногда
  • 81
  • 3 / 0
  • Нет предела самосовершенствованию
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #29 : 13.09.2012, 15:07:38 »
сейчас проверю сорри

Модуль привязан к определённой категории таким образом, чтобы отображать товары только из определённой категории..
с левой стороны у меня блок с товарами, а с правой контент.
При нажатии на товар в модуле (если прописать модуль для отдельных страниц, в моём случае - это категории товаров в меню), при отображении товара, пропадает модуль..
А отобразить модуль для всех страниц естественно не подходит.
вот я и пытаюсь прописать условия для категории и модуля, присвоенного данной категории и товара и модуля, присвоенного его категории..

Знаю всё очень запутано..... Сама не могу разобраться, тк занимаюсь вёрсткой, а в программировании ни так ни сяк))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин - Вывод значения поля из таблицы продуктов в корзине JoomShopping

Автор draff

Ответов: 3
Просмотров: 751
Последний ответ 26.02.2024, 07:00:01
от kit2m2
Плагин - Товар на складе или Товар под заказ для JoomShopping [Скачать]

Автор kit2m2

Ответов: 58
Просмотров: 9201
Последний ответ 18.05.2023, 12:59:00
от Akeksandr
[Решено] Комплект товаров JoomShopping - конструктор

Автор vgromov

Ответов: 96
Просмотров: 28086
Последний ответ 14.12.2022, 15:21:24
от kit2m2
Функционал сравнение товаров в JoomShopping

Автор falur

Ответов: 53
Просмотров: 13396
Последний ответ 22.08.2022, 09:54:16
от kit2m2
[скачать] Выбор отделения Новой Почты для JoomShopping 4+

Автор v42bis

Ответов: 18
Просмотров: 3568
Последний ответ 06.07.2022, 07:17:06
от denxio