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

  • 6 Ответов
  • 411 Просмотров

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

*

Оффлайн BARD

условие в mod_login шаблона
« : 11.11.2015, 20: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, 01:20:43 от BARD »
<a href=http://3e-market.ru>Интернет магазин PRESTIGIO</a>

*

Оффлайн NewUsers

Re: условие в mod_login шаблона
« Ответ #1 : 11.11.2015, 20: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

Re: условие в mod_login шаблона
« Ответ #2 : 12.11.2015, 12:25:19 »
Может я и не такой спец, но почему
$user->get
Это получается что данные выводишь из столбца под название profile-require_discontcard
Тебе же надо вывести параметры пользователя?

Да и вообще придумай какое нибудь имя покороче и не используй тире "-"
$user->get я взял из стандартного вывода имени $user->get('name').
у меня добавлены дополнительные поля в XML мне нужно эти поля прочитать...
<a href=http://3e-market.ru>Интернет магазин PRESTIGIO</a>

*

Оффлайн BARD

Re: условие в mod_login шаблона
« Ответ #3 : 12.11.2015, 14: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, 15:44:44 от BARD »
<a href=http://3e-market.ru>Интернет магазин PRESTIGIO</a>

*

Оффлайн robert

Re: условие в mod_login шаблона
« Ответ #4 : 12.11.2015, 14:41:06 »
Да и вообще придумай какое нибудь имя покороче и не используй тире "-"
Все нормально, ТС сделал по аналогии со стандартными полями.
Код: (php-brief) [Выделить]
$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'];
И что у вас за инструкция
Код: (php-brief) [Выделить]
if () : {
} endif;
?
P.S. Исправил ошибку.
« Последнее редактирование: 12.11.2015, 15:06:56 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн BARD

Re: условие в mod_login шаблона
« Ответ #5 : 12.11.2015, 15:46:24 »

И что у вас за инструкция
Код: (php-brief) [Выделить]
if () : {
} endif;
Брал условие тоже с типового из Joomla
<a href=http://3e-market.ru>Интернет магазин PRESTIGIO</a>

*

Оффлайн BARD

Re: условие в mod_login шаблона
« Ответ #6 : 12.11.2015, 15:52:47 »
Все нормально, ТС сделал по аналогии со стандартными полями.
Код: (php-brief) [Выделить]
$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'];
И что у вас за инструкция
Код: (php-brief) [Выделить]
if () : {
} endif;
?
P.S. Исправил ошибку.

Спасибо. Помогло=)
<a href=http://3e-market.ru>Интернет магазин PRESTIGIO</a>