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

ilunga

  • Осваиваюсь на форуме
  • 41
  • 0 / 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

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

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

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Но после применения этого метода возникла
там несколько решений около 5. Пробуйте остальные. К примеру
Код: php-brief
//устанавливаем
$doc = JFactory::getDocument();
$doc->test = 'AAAA';
// и нужном месте выводить
$doc = JFactory::getDocument();
echo $doc->test; // AAAA'
*

ilunga

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

ilunga

  • Осваиваюсь на форуме
  • 41
  • 0 / 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

  • Завсегдатай
  • 1013
  • 75 / 3
Смотрите не через echo, а через var_dump()
Видимо usertype и gid не строка, а массив или обьект.
Код: php
var_dump(JFactory::getUser($profile->id)->usertype);
*

ilunga

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

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Код: php
var_dump(JFactory::getUser($profile->id));
*

ilunga

  • Осваиваюсь на форуме
  • 41
  • 0 / 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

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

Пример создания модуля с прикреплением файлов

Автор Zelyonkin

Ответов: 7
Просмотров: 626
Последний ответ 02.08.2021, 17:04:15
от Zelyonkin
Отображение модуля меню на странице материала

Автор kunsaid

Ответов: 9
Просмотров: 704
Последний ответ 21.07.2021, 10:50:29
от kunsaid
[Решено] CSS-класс заголовка модуля

Автор schel4ok

Ответов: 36
Просмотров: 16984
Последний ответ 06.04.2021, 23:35:20
от Wak
Добавление модуля в шапку

Автор Bazaroff

Ответов: 8
Просмотров: 541
Последний ответ 18.01.2021, 19:59:58
от AlexB
Проблемы с ajax при выводе модуля

Автор Lemonez

Ответов: 6
Просмотров: 546
Последний ответ 21.12.2020, 05:16:55
от draff