Форум русской поддержки Joomla!® CMS
06.12.2016, 12:18:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

условие в mod_login шаблона

 (Прочитано 285 раз)
0 Пользователей и 1 Гость смотрят эту тему.
BARD
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 60



« : 11.11.2015, 19:05:19 »

Здравствуйте.
Подскажите как сделать условие: Если в профиле "Дисконтная карта" указана, вывести текст "Количество бонусов:" если нет, то вывести "Дисконтная карта не зарегистрирована"

Пытаюсь сделать так:
Код:
<?php
if($user->get('profile-require_discontcard')!= "") : {
     echo JText::sprintf('MOD_LOGIN_BONUS');
   } else : {
     echo JText::sprintf('MOD_LOGIN_NOCARD');
   } endif; ?>
Пишет в любом случае "Дисконтная карта не зарегистрирована"

в /plugins/user/profile/profile.xml прописал:
Код:
<field name="profile-require_discontcard" type="list"
description="PLG_USER_PROFILE_FIELD_DISCONTCARD_DESC"
label="PLG_USER_PROFILE_FIELD_DISCONTCARD_LABEL">
<option value="2">JOPTION_REQUIRED</option>
<option value="1">JOPTION_OPTIONAL</option>
<option value="0">JDISABLED</option>
</field>
в /plugins/user/profile/profiles/profile.xml прописал:
Код:
<field
name="discontcard"
type="text"
id="discontcard"
description="PLG_USER_PROFILE_FIELD_DISCONTCARD_DESC"
filter="string"
label="PLG_USER_PROFILE_FIELD_DISCONTCARD_LABEL"
message=""
size="30"
/>
В языковом файле прописал
MOD_LOGIN_BONUS="Бонусов на балансе:"
MOD_LOGIN_NOCARD="Бонусная карта не зарегистрирована:"
« Последнее редактирование: 12.11.2015, 00:20:43 от BARD » Записан
NewUsers
Давно я тут
****

Репутация: +32/-0
Online Online

Пол: Мужской
Сообщений: 394


« Ответ #1 : 11.11.2015, 19:23:07 »

Код:
<?php
if($user->get('profile-require_discontcard')!= "") : {
     echo JText::sprintf('MOD_LOGIN_BONUS');
   } else : {
     echo JText::sprintf('MOD_LOGIN_NOCARD');
   } endif; ?>

Может я и не такой спец, но почему
Код:
$user->get

Это получается что данные выводишь из столбца под название profile-require_discontcard
Тебе же надо вывести параметры пользователя?

Да и вообще придумай какое нибудь имя покороче и не используй тире "-"
Записан
BARD
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 60



« Ответ #2 : 12.11.2015, 11:25:19 »

Может я и не такой спец, но почему
Код:
$user->get

Это получается что данные выводишь из столбца под название profile-require_discontcard
Тебе же надо вывести параметры пользователя?

Да и вообще придумай какое нибудь имя покороче и не используй тире "-"
$user->get я взял из стандартного вывода имени $user->get('name').
у меня добавлены дополнительные поля в XML мне нужно эти поля прочитать...
Записан
BARD
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 60



« Ответ #3 : 12.11.2015, 13:04:42 »

Сделал так:
В /templates/shaper_myestate/html/mod_login/default.php
Код:


<?php
$db = JFactory::getDBO();
$sql = "SELECT profile_value FROM #__user_profiles WHERE profile_key='profile.discontcard'";
$db->setQuery($sql);
$list = $db->loadObjectList();
foreach($list as $user)
$discontcard = json_decode($user->profile_value);
?>

<?php if ($discontcard != "") : {
  echo JText::sprintf('MOD_LOGIN_DISCONTCARD');
{
   echo $discontcard;
} ?>
 <BR>
   
<?php
echo JText::sprintf('MOD_LOGIN_BONUS');


  } endif; ?>
   </div>
<?php endif; ?>
В языковом файле добавил
Код:
MOD_LOGIN_DISCONTCARD=" Бонусная карта:"

Проблема в том, что показывается не та дисконтная карта, и выводит текст "Бонусов на балансе" если хоть у одного кого то прописана в профиле карта, как сделать отбор по пользователю который залогинился, и выдавал дисконтную карту только этого ползователя?
« Последнее редактирование: 12.11.2015, 14:44:44 от BARD » Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3582


« Ответ #4 : 12.11.2015, 13:41:06 »

Да и вообще придумай какое нибудь имя покороче и не используй тире "-"
Все нормально, ТС сделал по аналогии со стандартными полями.
Код
$user=JFactory::getUser();
if(!$user->guest){
JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_users/models','UsersModel');
$profile_model=JModelLegacy::getInstance('Profile','UsersModel');
$user_data=$profile_model->getData();
}
$discontcard=$user_data->profile['discontcard'];
 
И что у вас за инструкция
Код
if () : {
} endif;
 
?
P.S. Исправил ошибку.
« Последнее редактирование: 12.11.2015, 14:06:56 от robert » Записан
BARD
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 60



« Ответ #5 : 12.11.2015, 14:46:24 »


И что у вас за инструкция
Код
if () : {
} endif;
 
Брал условие тоже с типового из Joomla
Записан
BARD
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 60



« Ответ #6 : 12.11.2015, 14:52:47 »

Все нормально, ТС сделал по аналогии со стандартными полями.
Код
$user=JFactory::getUser();
if(!$user->guest){
JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_users/models','UsersModel');
$profile_model=JModelLegacy::getInstance('Profile','UsersModel');
$user_data=$profile_model->getData();
}
$discontcard=$user_data->profile['discontcard'];
 
И что у вас за инструкция
Код
if () : {
} endif;
 
?
P.S. Исправил ошибку.

Спасибо. Помогло=)
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet