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

ilunga

  • Осваиваюсь на форуме
  • 42
  • 0
Доброго дня.

Вставляю модуль в шаблон компонента через модульную позицию.
Конкретнее: вставляю плеер в форумный профиль юзера, использую стандартную схему.

Код: php
<?php
jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModules('our-module');
$attribs['style'] = 'xhtml';
echo JModuleHelper::renderModule($module[0], $attribs);
?>

Всё выводится корректно, без проблем.

Но необходимо изменить одну переменную (путь к именной папке юзера), которая задаётся внутри вставляемого модуля.
Поэтому в принимающем шаблоне я объявляю переменную ДО кода позиции:

Код: php
$userProfile = JFactory::getUser($profile->id)->username;

А в коде встраиваемого модуля устанавливаю условие, которое должно менять значение модульной переменной ($nmapdir), если модуль работает на странице профиля:

Код: php
if (isset($userProfile) ) {
   $nmapdir = 'mp3/' . $userProfile;
} else {
   ...
}

Я ожидаю, что при загрузке модуля в компонент уже объявленная выше переменная ($userProfile) будет прочитана, и сработает условие. Само по себе условие работает (проверял прямой вставкой переменной в код модуля).

Но загружаемый модуль не видит эту переменную в упор, если она находится в принимающем файле. Я пробовал её объявлять и как глобальную, вставлять в разные места - до, внутрь и после кода позиции, но безрезультатно.

Подскажите пожалуйста, как заставить встроенный в позицию шаблона модуль увидеть переменную из этого шаблона?
*

ilunga

  • Осваиваюсь на форуме
  • 42
  • 0
Как передать переменную из компонента в модуль
да, спасибо.

Но после применения этого метода возникла частная проблема в работе условия: оно не работает, если одновременно открыты две страницы с модулем (одна из которых в компоненте) - видимо, потому, что переменная присутствует на обоих?
*

Fedor Vlasenko

  • Профи
  • 3806
  • 698
  • Все начинается с Value
Но после применения этого метода возникла
там несколько решений около 5. Пробуйте остальные. К примеру
Код: php-brief
//устанавливаем
$doc = JFactory::getDocument();
$doc->test = 'AAAA';
// и нужном месте выводить
$doc = JFactory::getDocument();
echo $doc->test; // AAAA'
*

ilunga

  • Осваиваюсь на форуме
  • 42
  • 0
там несколько решений около 5. Пробуйте остальные.
спасибо.
В силу моего очень поверхностного знания php, я мало понял вашу запись,
но решил эту проблему методом назначения пустого значения переменной в сессии после её использования.   
*

ilunga

  • Осваиваюсь на форуме
  • 42
  • 0
у меня остался по этой теме один соседний вопрос:

методом
Код: php
JFactory::getUser($profile->id)->username 
удаётся получить только id, name, username, email.
Но не удаётся получить usertype и gid.

А мне нужно выводить модуль для всех групп, кроме одной (чей id=11).
Всё уже работает, только это условие хромает :(

Как получить usertype и gid в Joomla 3.x?

Посмотрел тут, но мало чего понял:
How to get a users usergroup?$user->get('usertype')depricate
« Последнее редактирование: 07.11.2015, 18:13:17 от ilunga »
*

passer

  • Живу я здесь
  • 875
  • 70
Смотрите не через echo, а через var_dump()
Видимо usertype и gid не строка, а массив или обьект.
Код: php
var_dump(JFactory::getUser($profile->id)->usertype);
*

ilunga

  • Осваиваюсь на форуме
  • 42
  • 0
Смотрите не через echo, а через var_dump()
Видимо usertype и gid не строка, а массив или обьект.
это, конечно, так. Но такой код выдаёт NULL.
« Последнее редактирование: 07.11.2015, 18:39:30 от ilunga »
*

passer

  • Живу я здесь
  • 875
  • 70
Код: php
var_dump(JFactory::getUser($profile->id));
*

ilunga

  • Осваиваюсь на форуме
  • 42
  • 0
Код: php
var_dump(JFactory::getUser($profile->id));
да, очень-очень спасибо.

Рабочий код получается типа такого:
Код: php
<?php $UserProfile = JFactory::getUser($profile->id);
if(in_array(11, $UserProfile->groups)): ?>

Осталась сущая малость - обратить условие: не группа id=11, а все  группы, кроме 11.
Но не знаю, как это сделать.
Или просто перечислить все группы?
« Последнее редактирование: 07.11.2015, 19:37:58 от ilunga »
*

passer

  • Живу я здесь
  • 875
  • 70
Код: php
if(!in_array(11, $UserProfile->groups)):
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Изминение внешнего вида модуля Jea_Search

Автор jeauser

Ответов: 4
Просмотров: 439
Последний ответ 29.07.2017, 22:40:39
от pocheto
Как убрать класс wrapper для определённого модуля на фреймворке warp?

Автор partisan42

Ответов: 1
Просмотров: 93
Последний ответ 26.07.2017, 08:52:00
от effrit
Вывод другого альтернативного макета модуля/компонента через шаблон

Автор tomclancys

Ответов: 13
Просмотров: 314
Последний ответ 28.06.2017, 11:02:31
от robert
[Решено] CSS-класс заголовка модуля

Автор schel4ok

Ответов: 35
Просмотров: 8674
Последний ответ 07.05.2017, 14:53:07
от SpiDeR-Sx2
Как отключить показ модуля на всех страницах, кроме единственной?

Автор Konstantin124

Ответов: 2
Просмотров: 177
Последний ответ 11.03.2017, 15:33:07
от Konstantin124