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

Тренд

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Код: php-brief
<?php
$class = '';

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

Тренд

  • Захожу иногда
  • 59
  • 6 / 0
Код: php-brief
<?php
$class = '';

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Код: php-brief
jimport('joomla.application.component.helper');
$page1 = JComponentHelper::getParams('com_mycomponent')->get('page1');
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Тренд

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

robert

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

Тренд

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Опять в "угадайку"?
если модуль входит в одну группу, то отображается, если не входит, то не отображается.
Но как ему определить к какой странице он относится, чтобы получить нужные параметры именно для этой страницы?
Что за группы, в которые модуль должен входить?
Вы сами-то можете определить, какие страницы вам нужны?
Конкретные детали и критерии нужны, а не какие-то общие слова.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ничего модулю передавать не нужно. модуль на то и модуль, чтобы сам решать что ему делать.

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

Тренд

  • Захожу иногда
  • 59
  • 6 / 0
Что за группы, в которые модуль должен входить?
Вы сами-то можете определить, какие страницы вам нужны?
Конкретные детали и критерии нужны, а не какие-то общие слова.
Админ создает страницу (материал 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

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

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

Тренд

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

dmitry_stas

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

Тренд

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

dmitry_stas

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

Тренд

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

dmitry_stas

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

Aleks.Denezh

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


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

robert

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

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Если одновременно выводится только 1 копия модуля, то не нужно создавать много модулей.
Мне кажется лучше уж настройки для подобного задавать сразу в категории, а модулю считывать уже из категории эти настройки!
*

Тренд

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

dmitry_stas

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Мне кажется лучше уж настройки для подобного задавать сразу в категории, а модулю считывать уже из категории эти настройки!
Наверное, только непонятно, что за компонент и позволяет ли он это делать. В любом случае надо будет брать настройки из REQUEST или сессии, в общем, не быстрая история.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Тренд

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Создаю расширение для J3
Немного не то
Тоже не то
Да тоже не вариант
Мне кажется, что вы хотите нашими силами создать с нуля свой модуль. Я не прав?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Тренд

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

b2z

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

dmitry_stas

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

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Чисто фантазирую - сделать контент плагин, распарсить теги типа {mod_mymodule:param=view_1} и передать всё в REQUEST?
*

Тренд

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

Создание релиза компонента средствами GitHub

Автор SkyAn

Ответов: 4
Просмотров: 723
Последний ответ 01.11.2019, 17:42:04
от Septdir
Вывести дату завершения публикации модуля publish_down

Автор theflame

Ответов: 7
Просмотров: 4405
Последний ответ 06.10.2017, 12:46:30
от NewUsers
вывести данные из модуля с формой Subform form field type

Автор Glog

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

Автор Inoken

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

Автор Inoken

Ответов: 4
Просмотров: 997
Последний ответ 15.06.2017, 10:05:40
от Inoken