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

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
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #90 : 18.02.2013, 17:33:10 »
не понятно что у вас не получается
вставьте первый код в самый конец category_default.php и модуль появится в самом конце...в чем проблема?
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #91 : 18.02.2013, 18:08:07 »
Мне нужно чтобы условия данного кода выводились в конце после погинации,
Код
<?php 
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
$limit = JRequest::getInt('limitstart',0);
if ($limit == 10 && $Itemid == 72 ){ ?>
<jdoc:include type="modules" name="t_1" />
<?php } ?>

вставляю в category_default.php не работает, в этом то и вся проблема, а с первым кодом все ок, он работает там где нужно.
может что то в  category_default.php не так?
Код
<div class="jshop">
<?php
$limit = JRequest::getInt('limitstart',0);
if ($limit == 0){echo $this->category->description; }
elseif ($limit == 10) { echo JHTML::_('content.prepare', '{loadposition str_2}'); }
elseif ($limit == 20) {echo JHTML::_('content.prepare', '{loadposition str_3}');}
?>
<!-- Begin: Sub Category -->
<div class="jshop_list_category">
<?php if (count($this->categories)){ ?>
<table class = "jshop list_category">
    <?php foreach($this->categories as $k=>$category){?>
        <?php if ($k%$this->count_category_to_row==0) print "<tr>"; ?>
        <td class="jshop_categ" width="<?php print (100/$this->count_category_to_row)?>%">
          <table class = "category">
            <tr>
            <td class="image">
                <a href = "<?php print $category->category_link;?>"><img class="jshop_img" src="<?php print $this->image_category_path;?>/<?php if ($category->category_image) print $category->category_image; else print $this->noimage;?>" alt="<?php print htmlspecialchars($category->name)?>" title="<?php print htmlspecialchars($category->name)?>" /></a>
            </td>
            <td>
               <a class = "product_link" href = "<?php print $category->category_link?>"><?php print $category->name?></a>
               <p class = "category_short_description"><?php print $category->short_description?></p>
            </td>
            </tr>
           </table>
        </td>   
        <?php if ($k%$this->count_category_to_row==$this->count_category_to_row-1) print '</tr>'; ?>
    <?php } ?>
        <?php if ($k%$this->count_category_to_row!=$this->count_category_to_row-1) print '</tr>'; ?>
</table>
<?php }?>
</div>
<?php include(dirname(__FILE__)."/products.php");?>
</div>
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #92 : 18.02.2013, 18:13:51 »
в самый-самый конец вставьте первый код
разве не под пагинацией выводится?
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #93 : 18.02.2013, 18:26:21 »
первый код выводиться, все ок, и внизу и вверху. Нужно чтобы в конце выводился второй код. У меня сверху и снизу- тексты будут разные, вот я и хочу понять, как это реализовать, или все таки придется с помощью $_SERVER['REQUEST_URI'] == '/katalog?start=24' и в index.php пихать?
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #94 : 18.02.2013, 18:30:13 »
да не обязательно.
продублируйте первый код в самом низу и все (только названия модулей изменить надо)
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #95 : 18.02.2013, 18:39:59 »
Гениально! работает, но а как быть с первой страницей? какие условие задать чтобы, например при окончании .html (1-страница) выводился тоже модуль, иначе что сверху что с низу один и тот же контент на 1 странице. что поменять в  данном коде?
Код
<?php 
$limit = JRequest::getInt('limitstart',0);
if ($limit == 0){echo $this->category->description; }
elseif ($limit == 10) { echo JHTML::_('content.prepare', '{loadposition t_1}'); }
elseif ($limit == 20) {echo JHTML::_('content.prepare', '{loadposition t_}');}
?>
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #96 : 18.02.2013, 18:55:43 »
$this->category->description;
- описание категории у вас выводится на первой странице, меняйте на что угодно
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #97 : 18.02.2013, 19:10:02 »
Большое спасибо... работает! +
*

Gatispan

  • Новичок
  • 9
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #98 : 19.02.2013, 06:13:58 »
Может и мне помогут?
Использую шаблон Yootheme, JoomShopping является главной страницей
У меня есть 3 модуля, созданных мною в Joomla и опубликованых в одной позиции - sidebar-b. Соответственно модули видны на всех страницах JoomShopping, так как указано выводить их на главной.

Мне нужно, чтобы они публиковались только в карточке товара в позиции sidebar-b. На остальных страницах они мне не нужны.
Пробовал Варианты вызова модуля в шаблонах компонента Jshop но все они встраивают модуль не в их родную позицию а в основной материал.
Примеры для шаблона Joomla - вообще ноль реакции. Пробовал различные варианты - модули никак не реагируют. Правда встраивать код пришлось в /layouts/template.php, так как при встраивании в index.php браузер выдавал ошибку.
Подскажите что я делаю не так? Спасибо!
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #99 : 19.02.2013, 12:00:22 »
По Yootheme не подскажу, не знаю как устроен шаблон
Используйте Advanced Module Manager
*

Gatispan

  • Новичок
  • 9
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #100 : 28.02.2013, 05:29:06 »
По Yootheme не подскажу, не знаю как устроен шаблон
Используйте Advanced Module Manager
Немного прояснил ситуацию.
За вывод модуля (на примере sidebar-a) в шаблонах Yootheme отвечает следующий код в папка шаблона\layouts\template.php
Код
 <?php if ($this['modules']->count('sidebar-a')) : ?>
 <aside id="sidebar-a" class="grid-box"><?php echo $this['modules']->render('sidebar-a', array('layout'=>'stack')); ?></aside>
 <?php endif; ?>
Вместо него прописываем
Код
<?php
$option = JRequest::getVar('option', null);
                $controller = JRequest::getVar('controller', null);
 ?>
<?php if ( $option == 'com_jshopping' && $controller == 'product') : ?>
<aside id="sidebar-a" class="grid-box"><?php echo $this['modules']->render('sidebar-a', array('layout'=>'stack')); ?></aside>
<?php endif; ?>
и позиция модуля будет выводиться только на странице продукта. В настройках вывода модуля в Joomla необходимо указать "на всех страницах".

  !Теперь вопрос к знатокам:

Как совместить вывод модуля по ID...
Код
<?php //выводим модуль по id
$document = &JFactory::getDocument();
$renderer = $document->loadRenderer('module');
$params = array('style'=>'xhtml');
$dbo = JFactory::getDBO();
//получить модуль как объект
$dbo->setQuery("SELECT * FROM #__modules WHERE id='100' ");
$module = $dbo->loadObject();
//убрать предупреждение
$module->user = '';
echo $renderer->render($module, $params);
 ?>

И собственно код вывода в шаблоне Yootheme?
Код
<?php if ($this['modules']->count('sidebar-b')) : ?>
<aside id="sidebar-b" class="grid-box"><?php echo $this['modules']->render('sidebar-b', array('layout'=>'stack')); ?></aside>
<?php endif; ?>
так как если выводить модуль просто по ID, не соблюдаются стили.
Спасибо!
« Последнее редактирование: 28.02.2013, 10:21:09 от Gatispan »
*

ghio

  • Захожу иногда
  • 102
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #101 : 09.03.2013, 15:37:48 »
Elle, подскажите, пожалуйста. Мне надо, чтобы в карточке товара не отображались модули в позиции "right"

прописала код: <?php if ( $option == 'com_jshopping' && $controller != 'product') : ?>
                <jdoc:include type="modules" name="right" style="otModule" />
                <?php endif; ?>



В начале прописала $option = JRequest::getVar('option', null);
$controller = JRequest::getVar('controller', null);

после строки: defined( '_JEXEC' ) or die( 'Restricted access' );

Модули все равно выводятся в карточке товара. Что не так сделала?
К примеру здесь? http://botanmedia.ru/katalog/komponentnaja-akustika/avtoakustika-gladen-audio-x-ion-200-bmw
*

ghio

  • Захожу иногда
  • 102
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #102 : 10.03.2013, 16:32:39 »
Все получилось. Тпереь в карточке вообще не выводится позиция right. Но теперь также она не выводится на главной, на которой выводится статический текст из компонента. Подскажите, как исправить?
Заранее благодарна.
*

Dmitryy

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #103 : 21.03.2013, 14:22:42 »
Подскажите,
один пункт меню выводит одну категорию, другой - вторую.
Когда захожу в подкатегории и отдельный товар пропадает корзина (модуль), каталог товаров (модуль вывода категорий) и хлебные крошки.
Что ковырять не пойму, index.php или вывод категории и товара? Шаблон JS на td, в папке HTML
А ежели сделать вывод всех категорий, вместо определенных то все работает как надо.
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #104 : 21.03.2013, 14:34:47 »
настройки модулей для начала посмотреть, возможно там галочки не стоят где надо (пункты меню не отмечены)
*

AK901

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #105 : 21.04.2013, 19:03:14 »
Господа и, что немаловажно, госпожи, выручайте!

Имеется JShopping, главная категория является пунктом меню с URL *****.ru/shop, на ней выведен здоровенный модуль-слайдер, в позиции "slider".

Соответственно все подкатегории открываются как ******.ru/shop/category  и на них этот модуль тоже выводится.

Пытаюсь сделать так, чтобы он выводился только на *****.ru/shop правкой шаблона Default_category вот таким вот чудом.
Код
<?php 
$option = JRequest::getVar('option', null);
$controller = JRequest::getVar('controller', null);
if ( $option == 'com_jshopping' && $controller != 'cart' && $controller != 'checkout' && $controller != 'category' && $controller != 'products' ) : ?>
<jdoc:include type="modules" name="slider" />
<?php endif; ?>

Одна беда, толку ноль, модуль как выводился, так и выводится везде. В чем косяк, куда копать?
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #106 : 21.04.2013, 19:06:58 »
а что в Default_category работает <jdoc:include type="modules" name="slider" /> ? не знала..
*

AK901

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #107 : 21.04.2013, 19:10:25 »
а что в Default_category работает <jdoc:include type="modules" name="slider" /> ? не знала..
меня терзают смутные сомнения... быть может в index.php?)
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #108 : 21.04.2013, 19:13:36 »
просто вставьте в default_category
Код: php
<?php echo JHTML::_('content.prepare', '{loadposition slider}'); ?>
без всяких условий.
slider - уникальная позиция модуля слайдера (можно назвать по-другому)
*

AK901

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #109 : 21.04.2013, 19:23:25 »
просто вставьте в default_category
Код: php
<?php echo JHTML::_('content.prepare', '{loadposition slider}'); ?>
без всяких условий.
slider - уникальная позиция модуля слайдера (можно назвать по-другому)

Эта строка, как я понимаю, загружает этот слайдер. А мне нужно, чтобы он был ТОЛЬКО в главной категории(т.е. на одной единственной странице). Соответственно во всех категориях и описаниях товаров его быть не должно. Вставка кода в default category лишь переместила его из позиции где он был - куда-то вниз, в материал.
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #110 : 21.04.2013, 19:34:34 »
главный шаблон, который выводит список всех категорий это maincategory.php, выводится от только на одной странице, все остальные используют другие шаблоны
по поводу того, что "куда-то вниз" - вы FireBug включите и смотрите в шаблон куда вставляете
*

AK901

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #111 : 21.04.2013, 19:50:19 »
главный шаблон, который выводит список всех категорий это maincategory.php, выводится от только на одной странице, все остальные используют другие шаблоны
по поводу того, что "куда-то вниз" - вы FireBug включите и смотрите в шаблон куда вставляете
То что главный - main category  - это понятно. Файрбаг выдает положение модуля "<div class="component-content">". При этом на всех страницах категорий он по-прежнему выводится. Тут скорее нужно запретить загрузку позиции slider на всех страницах, кроме maincategory... И видимо через какое-то хитрое условие.
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #112 : 21.04.2013, 20:07:33 »
Код: php
if($_SERVER['REQUEST_URI'] == '/shop'){
//выводим слайдер
}

если на остальные категории, подкатегории есть пункты меню, то через Itemid делайте
*

AK901

  • Осваиваюсь на форуме
  • 21
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #113 : 21.04.2013, 21:13:53 »
Код: php
if($_SERVER['REQUEST_URI'] == '/shop'){
//выводим слайдер
}

если на остальные категории, подкатегории есть пункты меню, то через Itemid делайте

Если бы пункты меню были, я бы мог просто снять с них галочки в админке и меню выводилось бы только на странице главной категории :)


Каким запросом можно вывести конкретный модуль именно в позицию slider?
*

ELLE

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

Argawa

  • Захожу иногда
  • 139
  • 1 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #115 : 17.05.2013, 01:38:11 »
Заинтересовало условия вывода информации в зависимости от групп пользователей
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #116 : 17.05.2013, 01:40:20 »
ищите переменные в шаблоне, связанные с группами пользователей, далее устанавливаете условия в зависимости от ID нужной группы
*

KatyaYozhik

  • Новичок
  • 2
  • 0 / 0
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #117 : 27.05.2013, 00:36:03 »
Здравствуйте, ELLE! Подскажите, пожалуйста. Как подправить maincategory.php, что бы выводились друг за другом модули "latest product", но из разных категорий. Спасибо.
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #118 : 10.06.2013, 00:49:36 »
Файл /com_jshopping/category/category_default.php выводит описание категории сверху над товарами. Подскажите пожалуйста, как вывести это описание прямо внутри модуля Jshopping Categories?

В файле category_default.php я вот эту строку удалил <?php print $this->category->description?>
А в файлах модуля Jshopping Categories что теперь нужно прописать чтобы это описание внутри него выводилось? И при этом чтобы только на первой странице.

P.S. Условия то более менее получается самому прописывать, с помощью данной темы, но вот что в модуле прописать загадка непостижимая. Пробовал просто тупо вставлять <?php print $this->category->description?>, сразу же Fatal Error))
« Последнее редактирование: 10.06.2013, 05:15:12 от Sven »
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Re: [FAQ] Условия вывода модулей в JoomShopping
« Ответ #119 : 10.06.2013, 22:04:28 »
Не могу в это поверить, но все ж таки я сделал все сам))

Вот публикую кусок кода, может кому-то тоже пригодится:

Код
 foreach($categories_arr as $curr){
$class = "jshop_menu_level_".$curr->level;
$controller = JRequest::getVar('controller', null);
$start = JRequest::getInt('limitstart',0);
$option = JRequest::getVar('option','');
    ?>
  <?php If (!$start && $option == 'com_jshopping' && $categories_id[$curr->level]==$curr->category_id && $controller == 'category'){ ?>
<?php print $curr->description?>
  <?php } ?>
  <?php
  }

Вставлять его нужно в этот файл:   /modules/mod_jshopping_categories/tmpl/default.php
« Последнее редактирование: 17.06.2013, 17:07:36 от Sven »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Мы починили поиск для JoomShopping

Автор Dimidrol-Pruper

Ответов: 101
Просмотров: 32634
Последний ответ 24.06.2024, 14:20:58
от kit2m2
Плагин - Вывод значения поля из таблицы продуктов в корзине JoomShopping

Автор draff

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

Автор kit2m2

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

Автор vgromov

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

Автор falur

Ответов: 53
Просмотров: 14458
Последний ответ 22.08.2022, 09:54:16
от kit2m2