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

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
Здравствуйте, форумчане!
Создаю расширение для J3. Есть компонент с достаточно развитой админкой. И ещё к должен быть модуль, который должен отображаться на некоторых страницах. Вопрос по модулю.
Внешний вид модуля зависит от страницы, на которой он выводится, потому в модуль надо как-то передать параметр.
XML-файл не подходит, так как страницы могут изменяться, и делается это как раз в админке компонента.
Как в модуль передать такой параметр?
Например, для одной страницы 'param' => 'page1', а для другой страницы  'param' => 'page2'.
*

robert

  • Профи
  • 4075
  • 376
Код: php-brief
<?php
$class = '';

if (JUri::current() == 'страница1') {
$class = ' class="page1"';
} elseif (JUri::current() == 'страница2') {
$class = ' class="page2"';
}
?>
<div <?php echo $class; ?>>
...
</div>
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
Код: php-brief
<?php
$class = '';

if (JUri::current() == 'страница1') {
$class = ' class="page1"';
} elseif (JUri::current() == 'страница2') {
$class = ' class="page2"';
}
?>
<div <?php echo $class; ?>>
...
</div>
Немного не то.
В Админке компонента админ задает некий параметр для страницы, который нужно передать модулю.
А Вашем варианте после каждой новой добавленной страницы, нужно будет переписывать модуль.
*

robert

  • Профи
  • 4075
  • 376
Код: php-brief
jimport('joomla.application.component.helper');
$page1 = JComponentHelper::getParams('com_mycomponent')->get('page1');
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
Код: php-brief
jimport('joomla.application.component.helper');
$page1 = JComponentHelper::getParams('com_mycomponent')->get('page1');
Тоже не то. Как получить данные модулем я понимаю, он всегда может получить это из базы данных, но как заставить модуль понять на какой странице он находится?
Допустим, модуль отображает скидку на товар.
В админке задается группа товаров на которые дается скидка.
Когда загружается страница с товаром модуль должен определить входит ли он в группу товаров со скидкой.
Если скидка есть, то модуль отображает скидку, если скидки сейчас нет, то он вообще не отображается.
*

robert

  • Профи
  • 4075
  • 376
Немного не то.
Тоже не то.
Мы играем в "угадайку"?
Сначала
Внешний вид модуля зависит от страницы, на которой он выводится, потому в модуль надо как-то передать параметр.
Теперь
Когда загружается страница с товаром модуль должен определить входит ли он в группу товаров со скидкой.
Если скидка есть, то модуль отображает скидку, если скидки сейчас нет, то он вообще не отображается.
Так это входит в функционалы модуля, напишите его. Все у вас есть: данные из компонента, из модуля, из БД, в конце концов. Это вы или я
Создаю расширение для J3.
?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
Мы играем в "угадайку"?
Я с самого начала сказал, что внешний вид модуля зависит от страницы. Ниже уточнил, что если модуль входит в одну группу, то отображается, если не входит, то не отображается. Чтобы модулю понять как ему выглядеть, он должен получить параметр.
Все у вас есть: данные из компонента, из модуля, из БД, в конце концов.
Модуль может получить из базы все параметры. Но как ему определить к какой странице он относится, чтобы получить нужные параметры именно для этой страницы? Использовать URL страницы не вариант, так как сам URL страницы может измениться, да и модуль не сможет адаптироваться под новые страницы, которые появятся позже.
Для этого вижу только один способ - передать параметр модулю при подключении. Вопрос как это сделать?
*

robert

  • Профи
  • 4075
  • 376
Опять в "угадайку"?
если модуль входит в одну группу, то отображается, если не входит, то не отображается.
Но как ему определить к какой странице он относится, чтобы получить нужные параметры именно для этой страницы?
Что за группы, в которые модуль должен входить?
Вы сами-то можете определить, какие страницы вам нужны?
Конкретные детали и критерии нужны, а не какие-то общие слова.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

dmitry_stas

  • Профи
  • 9999
  • 948
ничего модулю передавать не нужно. модуль на то и модуль, чтобы сам решать что ему делать.

Цитировать
как ему определить к какой странице он относится, чтобы получить нужные параметры именно для этой страницы?
что такое в вашем понимании "к какой странице"?
Код
$app = JFactory::getApplication();
echo $app->input->getString('option');
echo $app->input->getString('view');
echo $app->input->getString('task');
и так далее.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
Что за группы, в которые модуль должен входить?
Вы сами-то можете определить, какие страницы вам нужны?
Конкретные детали и критерии нужны, а не какие-то общие слова.
Админ создает страницу (материал html) и хочет подключить модуль к странице
{mod_mymodule}
Если он хочет чтобы модуль выглядел в одну колонку, пишет например,
{mod_mymodule:param=view_1}
Если хочет чтобы он выглядел в две колонки, пишет
{mod_mymodule:param=view_2}
Если модуль должен подгрузить особые данные
{mod_mymodule:param=view_2,data=data_1}
Если другие данные
{mod_mymodule:param=view_1,data=data_2}
Если при этом возможна ситуация, что данные data_2 имеют статус показывать только определенному региону и регион посетителя сайта не совпадает, то модуль вообще не показывается.
Как передать модулю параметры?
*

dmitry_stas

  • Профи
  • 9999
  • 948
никак. модуль на то и модуль, чтобы сам решать. принцип модульности как раз и заключается в независимости от внешних факторов. а вы хотите его нарушить.
Цитировать
Если он хочет чтобы модуль выглядел в одну колонку
то значит создает модуль, в котором указывает настройки вывода в одну колонку, и этот модуль выводит в материале.
Цитировать
Если хочет чтобы он выглядел в две колонки
то значит создает модуль, в котором указывает настройки вывода в две колонки, и этот модуль выводит в материале.
Цитировать
Если модуль должен подгрузить особые данные
то значит что то пошло не так. модуль не может знать обо всех вероятных "особых данных", которые захотят ему подсунуть в качестве параметра. соответственно, работа модуля при таком раскладе не гарантируется. и именно поэтому - модуль сам решает, что он выводит.

чисто теоретически сделать то, что вы хотите, возможно. пишем свой плагин группы content, который будет обрабатывать вставки вида
Код
{mod_mymodule:param=view_2}
и т.п. и даем в описании, как именно вставлять модуль в материал. но это не будет правильным решением.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
ничего модулю передавать не нужно. модуль на то и модуль, чтобы сам решать что ему делать.
А если требуется изменять внешний вид модуля в зависимости от того к какой группе относится тот или иной товар?
Допускаю, что значит неправильно выбрал, и нужно было создавать не модуль, а компонент, туда параметры передается элементарно (option,view,task). Но я не представляю, как компонент разместить внутри материала HTML.
Можно компонент установить как модуль для всех товаров определенной категории?
*

dmitry_stas

  • Профи
  • 9999
  • 948
как и сказал уже robert, мы играем в угадайку. это очень увлекательная игра, не спорю. но может быть все таки вы расскажете что вы хотите получить на выходе? обычным русским языком, просто расскажите идею. а то от фразы
Можно компонент установить как модуль для всех товаров определенной категории?
начинает глаз дергаться :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
как и сказал уже мы играем в угадайку. это очень увлекательная игра, не спорю. но может быть все таки вы расскажете что вы хотите получить на выходе? обычным русским языком, просто расскажите идею. а то от фразыначинает глаз дергаться :)
На странице товаров нужен блок, который динамически может менять свой вид в зависимости от того, на какой странице он расположен.
Например, на странице утюгов, в этом боке будет предложен другой утюг со скидкой, если такой есть. Этот блок будет отображаться в одну колонку.
А на странице стиральных машин, покажется стиральная машина по более выгодной цене, если такая есть. Этот блок в две колонки.
А на странице телефонов в этом блоке предлагаются уже сопутствующие товары.
Возможно это не модуль по логике, а компонент, но как его вставить сразу на группу товаров как часть окончательной страницы сайта?
*

dmitry_stas

  • Профи
  • 9999
  • 948
это обычный модуль. все так, как я и говорил, ничего нового. создаете модуль, в его настройках выбираете Категория на которой он будет выводится, может быть тоже Производитель, принцип вывода (сопутки, похожие, близкие по цене товары этого же производителя, и т.д. что там еще у вас), и так далее. все настройки - внутри модуля. таким образом создаете все нужные модули с разными параметрами вывода, все их публикуете в одной позиции. далее модули загружаются и сами смотрят на свои параметры, понимают соответствуют ли они условиям вывода, и что-то выводят (по выбранным в своих настройках параметрам - шаблон для 2/3/123 колонок, и т.п.) либо ничего не выводят.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
это обычный модуль. все так, как я и говорил, ничего нового. создаете модуль, в его настройках выбираете Категория на которой он будет выводится, может быть тоже Производитель, принцип вывода (сопутки, похожие, близкие по цене товары этого же производителя, и т.д. что там еще у вас), и так далее. все настройки - внутри модуля. таким образом создаете все нужные модули с разными параметрами вывода, все их публикуете в одной позиции. далее модули загружаются и сами смотрят на свои параметры, понимают соответствуют ли они условиям вывода, и что-то выводят (по выбранным в своих настройках параметрам - шаблон для 2/3/123 колонок, и т.п.) либо ничего не выводят.
То есть я правильно понял, что для утюгов нужен "Модуль-Утюги", для стиральных машин создаем уже модуль "Стиральные машины". Для телефонов Самсунг создаю модуль "Сопутствующие товары для Самсунга" и так далее для всех 174 (пока что) категорий?
Неужели нет более простого способа?
*

dmitry_stas

  • Профи
  • 9999
  • 948
каков по вашему мнению более простой способ? если мы говорим только о сопутствующих для текущего товара - то это 1 модуль, а не 174. модуль понимает, что он находится на странице товара, и выводит для этого товара сопутки. и не важно какой товар - это всегда сопутки. но вы же ведете речь о разных условиях вывода. и какой более просто способ вы видите? искусственный интеллект? :) модуль сам догадается, что в Утюги вы хотите вывести другие утюги (т.е. скажем условие - товары этой же категории), а в Стиральные машины при этом предложить стиральный порошок (т.е. совсем другое условие)? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Aleks.Denezh

  • Практически профи
  • 2806
  • 377
То есть я правильно понял, что для утюгов нужен "Модуль-Утюги", для стиральных машин создаем уже модуль "Стиральные машины". Для телефонов Самсунг создаю модуль "Сопутствующие товары для Самсунга" и так далее для всех 174 (пока что) категорий?
Ну, а если у вас на все 174 категории нужно разное отображение модуля?!


Неужели нет более простого способа?
Есть... изобрасти скайнет он будет сам догадываться какую разметку в какой категории вывести, скрипты увы это не умеют (
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016
*

robert

  • Профи
  • 4075
  • 376
Фу, после допроса с пристрастиями наконец-то выдернули из вас самые тайные мысли :).
Если одновременно выводится только 1 копия модуля, то не нужно создавать много модулей. Вместо этого создайте много параметров, которые будут указывать модулю, что показывать в конкретных случаях:
- Категория "Утюги": 1 колонка из 5 утюгов
- Категория "Стриральная машина": играть гимн Гвинеи-Биссау, 2 колонки вымытых обезьянок
и т.д.
P.S. Параметры, точнее, наборы параметров, можно создавать по мере необходимости, а в один набор можно включить несколько категорий.
« Последнее редактирование: 15.06.2017, 16:10:24 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Aleks.Denezh

  • Практически профи
  • 2806
  • 377
Если одновременно выводится только 1 копия модуля, то не нужно создавать много модулей.
Мне кажется лучше уж настройки для подобного задавать сразу в категории, а модулю считывать уже из категории эти настройки!
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
Ну, а если у вас на все 174 категории нужно разное отображение модуля?!
Ну как минимум заголовок у каждого будет свой.
Есть... изобрасти скайнет он будет сам догадываться какую разметку в какой категории вывести, скрипты увы это не умеют (
Зачем догадываться. В базе данных есть, что для таких товаров одно представление, для других другое. Для этих товаров есть скидка, а для этих нет. А такой-то товар уже кончился и на складе его нет, а такой-то товар - это новинка в данной категории.
И эти данные я могу получить из базы, но модулю надо знать на какой странице он находится в данный момент, чтобы определить категорию.
*

dmitry_stas

  • Профи
  • 9999
  • 948
тупик :) ну так получите категорию в модуле :)
Код
echo JFactory::getApplication()->input->getInt('category_id');
или что у вас там за id категории отвечает. как компонент называется? это интернет-магазин какой-то?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

robert

  • Профи
  • 4075
  • 376
Мне кажется лучше уж настройки для подобного задавать сразу в категории, а модулю считывать уже из категории эти настройки!
Наверное, только непонятно, что за компонент и позволяет ли он это делать. В любом случае надо будет брать настройки из REQUEST или сессии, в общем, не быстрая история.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
тупик :) ну так получите категорию в модуле :)
Да тоже не вариант, тут завязано не столько на категорию, сколько на группу. Товар может входить в категорию "утюги", но может также входить в группу "новинки" и тогда эта группа более приоритетная, а может входить в группу "скидки". При этом как-то нужно еще задать в админке, что для утюгов показывать группу "скидки", а для стиральных машин группу "новинки".
В том то и дело, что внутри даже одной категории может быть разное отображение модуля, зависит от конкретного товара и его группы.
« Последнее редактирование: 15.06.2017, 16:33:57 от Тренд »
*

robert

  • Профи
  • 4075
  • 376
Создаю расширение для J3
Немного не то
Тоже не то
Да тоже не вариант
Мне кажется, что вы хотите нашими силами создать с нуля свой модуль. Я не прав?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
Мне кажется, что вы хотите нашими силами создать с нуля свой модуль. Я не прав?
Нет, он уже создан. Но он у меня работает пока только на одной странице. Чтобы он работал на других страницах мне нужно передать ему параметры. Собственно именно в этом и заключался вопрос, как передаются параметры в модуль. Мне уже объяснили, что это не возможно, мне больше ничего больше и не нужно. Буду решать задачу по-другому.
*

b2z

  • Support Team
  • 7464
  • 742
  • Разраблю понемногу
Цитировать
При этом как-то нужно еще задать в админке, что для утюгов показывать группу "скидки", а для стиральных машин группу "новинки".]При этом как-то нужно еще задать в админке, что для утюгов показывать группу "скидки", а для стиральных машин группу "новинки".
Если это самопис, то почему не передать параметры через URL? Или передать параметры в REQUEST из плагина?
*

dmitry_stas

  • Профи
  • 9999
  • 948
Цитировать
Да тоже не вариант, тут завязано не столько на категорию, сколько на группу. Товар может входить в категорию "утюги", но может также входить в группу "новинки"
да все вариант. не понятно, в чем проблема получить одновременно и группу (знать бы что это), и категорию. и проверяйте себе на здоровье что там кому задано и что более приоритетное. вообще не вижу сложностей. по-моему вы сами себя путаете.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

b2z

  • Support Team
  • 7464
  • 742
  • Разраблю понемногу
Чисто фантазирую - сделать контент плагин, распарсить теги типа {mod_mymodule:param=view_1} и передать всё в REQUEST?
*

Тренд

  • Осваиваюсь на форуме
  • 59
  • 6
Чисто фантазирую - сделать контент плагин, распарсить теги типа {mod_mymodule:param=view_1} и передать всё в REQUEST?
На этом варианте и остановился. Так сделать проще, чем создавать 174 модуля с уникальными заголовками :)
Всем спасибо за ответы!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

вывести данные из модуля с формой Subform form field type

Автор Glog

Ответов: 19
Просмотров: 375
Последний ответ 22.06.2017, 13:32:07
от Glog
Ошибка при попытке получить параметры активного пункта меню в контроллере компонента

Автор Inoken

Ответов: 10
Просмотров: 184
Последний ответ 19.06.2017, 14:29:22
от dmitry_stas
Организация доступа пользователей к контенту кастомного компонента

Автор Inoken

Ответов: 4
Просмотров: 109
Последний ответ 15.06.2017, 10:05:40
от Inoken
Разработка компонента

Автор dimasan57

Ответов: 16
Просмотров: 278
Последний ответ 23.05.2017, 14:27:42
от dimasan57
Как при помощи функций Joomla узнать номер страницы в пагинации?

Автор tora312

Ответов: 51
Просмотров: 1100
Последний ответ 06.12.2016, 08:25:43
от tora312