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

Тема в разделе "Интерактивные возможности", создана пользователем BARDER, 11.11.2015.

  1. Offline

    BARDER Недавно здесь

    Регистрация:
    04.03.2010
    Сообщения:
    10
    Симпатии:
    0
    Пол:
    Мужской
    Здравствуйте.
    Подскажите как сделать условие: Если в профиле "Дисконтная карта" указана, вывести текст "Количество бонусов:" если нет, то вывести "Дисконтная карта не зарегистрирована"

    Пытаюсь сделать так:
    Код (CODE):
    1. <?php
    2. if($user->get('profile-require_discontcard') != "") : {
    3.      echo JText::sprintf('MOD_LOGIN_BONUS');
    4.    } else : {
    5.      echo JText::sprintf('MOD_LOGIN_NOCARD');
    6.    } endif; ?>

    Пишет в любом случае "Дисконтная карта не зарегистрирована"

    в /plugins/user/profile/profile.xml прописал:
    Код (CODE):
    1. <field name="profile-require_discontcard" type="list"
    2. description="PLG_USER_PROFILE_FIELD_DISCONTCARD_DESC"
    3. label="PLG_USER_PROFILE_FIELD_DISCONTCARD_LABEL">
    4. <option value="2">JOPTION_REQUIRED</option>
    5. <option value="1">JOPTION_OPTIONAL</option>
    6. <option value="0">JDISABLED</option>
    7. </field>

    в /plugins/user/profile/profiles/profile.xml прописал:
    Код (CODE):
    1. <field
    2. name="discontcard"
    3. type="text"
    4. id="discontcard"
    5. description="PLG_USER_PROFILE_FIELD_DISCONTCARD_DESC"
    6. filter="string"
    7. label="PLG_USER_PROFILE_FIELD_DISCONTCARD_LABEL"
    8. message=""
    9. size="30"
    10. />

    В языковом файле прописал
    MOD_LOGIN_BONUS="Бонусов на балансе:"
    MOD_LOGIN_NOCARD="Бонусная карта не зарегистрирована:"
     
    Последнее редактирование: 11.11.2015
  2.  
  3. draff
    Offline

    draff Russian Joomla! Team Команда форума

    Регистрация:
    17.01.2011
    Сообщения:
    6 055
    Симпатии:
    520
    Пол:
    Мужской
    Пробуй
    Код (PHP):
    1. if($user->get('profile-require_discontcard') == 1
    или
    Код (PHP):
    1. if($user->get('profile-require_discontcard') == 2
     
  4. Offline

    BARDER Недавно здесь

    Регистрация:
    04.03.2010
    Сообщения:
    10
    Симпатии:
    0
    Пол:
    Мужской
    не работает
    --- добавлено: 12.11.2015, первое сообщение размещено: 11.11.2015 ---
    Сделал так:
    В /templates/shaper_myestate/html/mod_login/default.php
    Код (CODE):
    1. <?php
    2. $db = JFactory::getDBO();
    3. $sql = "SELECT profile_value FROM #__user_profiles WHERE profile_key='profile.discontcard'";
    4. $db->setQuery($sql);
    5. $list = $db->loadObjectList();
    6. foreach($list as $user)
    7. $discontcard = json_decode($user->profile_value);
    8. ?>
    9.  
    10. <?php if ($discontcard != "") : {
    11.   echo JText::sprintf('MOD_LOGIN_DISCONTCARD');
    12. {
    13.    echo $discontcard;
    14. } ?>
    15. <BR>
    16.  
    17. <?php
    18. echo JText::sprintf('MOD_LOGIN_BONUS');
    19.  
    20.  
    21.   } endif; ?>
    22.    </div>
    23. <?php endif; ?>

    В языковом файле добавил
    Код (CODE):
    1. MOD_LOGIN_DISCONTCARD=" Бонусная карта:"


    Проблема в том, что показывается не та дисконтная карта, и выводит текст "Бонусов на балансе" если хоть у одного кого то прописана в профиле карта, как сделать отбор по пользователю который залогинился, и выдавал дисконтную карту только этого ползователя?
    --- добавлено: 12.11.2015 ---
    Спасибо решил вопрос:
    Добавив:
    Код (CODE):
    1. $user=JFactory::getUser();
    2. if(!$user->guest){
    3.    JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_users/models','UsersModel');
    4.    $profile_model=JModelLegacy::getInstance('Profile','UsersModel');
    5.    $user_data=$profile_model->getData();
    6. }
    7. $discontcard=$user_data->profile['discontcard'];
     

Поделиться этой страницей

Загрузка...