Вход • Регистрация

Кнопка "Личный Кабинет" в шапке

  • 17 ноября 2015 г.
  • При нажатии "Личный Кабинет" в шапке (если пользователь не зарегистрирован), появляется окошко с предложением регистрации. Я добавил в верхнее меню кнопку "Личный кабинет", Если Незарегистрированный жмет на нее, то выпадает 404. Пробовал создать страницу 405.php в includes, к которой подключил модуль "регистрация". Потом ее пытался связать со страницей "Личная страница" заменив в последней 301-ю ошибку на 405. Сам не помню всех манипуляций, но на короткое время заработало, а потом у меня что-то случилось с базой и сайт упал. Теперь откатился, сайт заработал, но повторить подвиг не хочется.
    Я просто не понимаю логики работы поля "Редирект на текущую страницу со страницы:" в дополнительных настройках страницы. Там по умолчанию стоит 301 и в другом поле можно вписать адрес. Этот адрес - цель перехода для рассматриваемой страницы или источник, с которого при ошибке пользователь попадет на рассматриваемую? Лазил в тех документации - ничего там простым языком не объясняют- все формулы какие-то((((
    • 17 ноября 2015 г. , редакция: 17 ноября 2015 г.
    • Я делаю проще. При нажатии на "Личный кабинет" ("Войти на сайт", а "Личный кабинет" видят уже авторизованные) появляется окошко авторизации. А там, ниже, стандартно расположена ссылка на страницу регистрации. Не подходит?
      • 17 ноября 2015 г.
      • Подходит конечно. А как это сделать?
        • 17 ноября 2015 г.
        • Кладете в модули вот такой файл: registration.view.show_login_top.php (или обзовите вместо _top как Вам нужно)
          Его содержимое:
          Код
          <?php
          /**
          * Шаблон блока авторизации
          *
          * Шаблонный тег <insert name="show_login" module="registration" [template="шаблон"]>:
          * блок авторизации
          *
          * @package DIAFAN.CMS
          * @author diafan.ru
          * @version 5.4
          * @license http://www.diafan.ru/license.html
          * @copyright Copyright (c) 2003-2015 OOO «Диафан» (http://www.diafan.ru/)
          */
          if (!defined('DIAFAN'))
          {
          include dirname(dirname(dirname(__FILE__))).'/includes/404.php';
          }

          if (!$result["user"])
          {

          echo '<div class="error-auth">';
          echo $result["error"];
          echo '</div>';

          echo '<div class="spoiler-auth-head">'.$this->diafan->_('Войдите на сайт').'</div>';

          echo '<div class="spoiler-auth-body">';

          echo '<div class="block">';
          echo '<form method="post" action="'.$result["action"].'" class="login">
          <input type="hidden" name="action" value="auth">

          <input type="text" name="name" placeholder="'.$this->diafan->_('Ваш E-mail').'" autocomplete="off">

          <input type="password" name="pass" placeholder="'.$this->diafan->_('Пароль').'" autocomplete="off">

          <input type="checkbox" id="not_my_computer" name="not_my_computer" value="1">
          <label for="not_my_computer">'.$this->diafan->_('Чужой компьютер').'</label>

          <input type="submit" value="Войти"><br>';
          if (! empty($result["reminding"]))
          {
          echo '<a href="'.$result["reminding"].'" class="arrow-link black">'.$this->diafan->_('Забыли пароль?').'</a> ';
          }
          if(! empty($result["registration"]))
          {
          echo '<a href="'.$result["registration"].'" class="arrow-link black">'.$this->diafan->_('Регистрация').'</a>';
          }
          echo '</form>';

          if(! empty($result["use_loginza"]))
          {
          $this->diafan->_site->js_view[] = 'http://loginza.ru/js/widget.js';
          echo '<br><a href="https://loginza.ru/api/widget?token_url='.urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']).'" class="loginza">
          <img src="http://loginza.ru/img/providers/yandex.png" alt="Yandex" title="Yandex">
          <img src="http://loginza.ru/img/providers/google.png" alt="Google" title="Google Accounts">
          <img src="http://loginza.ru/img/providers/vkontakte.png" alt="Вконтакте" title="Вконтакте">
          <img src="http://loginza.ru/img/providers/mailru.png" alt="Mail.ru" title="Mail.ru">
          <img src="http://loginza.ru/img/providers/twitter.png" alt="Twitter" title="Twitter">
          <img src="http://loginza.ru/img/providers/loginza.png" alt="Loginza" title="Loginza">
          <img src="http://loginza.ru/img/providers/myopenid.png" alt="MyOpenID" title="MyOpenID">
          <img src="http://loginza.ru/img/providers/openid.png" alt="OpenID" title="OpenID">
          <img src="http://loginza.ru/img/providers/webmoney.png" alt="WebMoney" title="WebMoney">
          </a><br><br>';
          }
          echo '</div>';
          echo '</div>';
          }
          else
          {
          echo '<div class="spoiler-auth-head">'.$this->diafan->_('Личный кабинет').'</div>';
          echo '<div class="spoiler-auth-body">';
          echo '<div class="block profile-block">';
          echo '<div class="profile-hello-text">
          '.$this->diafan->_('Приветствуем Вас').', ';

          echo '<strong>' .$result["fio"]. '</strong>';
          echo '!
          </div>';
          if (!empty($result["avatar"]))
          {
          echo '<div class="avatar-user">';
          echo '<img src="'.BASE_PATH.USERFILES.'/avatar/'.$result["name"].'.png" width="'.$result["avatar_width"].'" height="'.$result["avatar_height"].'" alt="'.$result["fio"].' ('.$result["name"].')" class="avatar profile-hello-avatar">';
          echo '</div>';
          }
          echo '<ul class="menu-user">';
          if($result['userpage'])
          {
          echo '<li><a href="'.$result['userpage'].'">'.$this->diafan->_('Профиль').'</a></li>';
          }
          if(! empty($result["usersettings"]))
          {
          echo '<li><a href="'.$result["usersettings"].'">'.$this->diafan->_('Настройки').'</a></li>';
          }
          if (!empty($result['messages']))
          {
          echo '<li><a href="'.$result['messages'].'">'.$result['messages_name'];
          if($result['messages_unread'])
          {
          echo ' (<b>'.$result['messages_unread'].'</b>)';
          }
          echo '</a></li>';
          }
          echo '<li><a href="'.BASE_PATH_HREF.'logout/?'.rand(0, 99999).'">'.$this->diafan->_('Выйти').'</a></li>';
          echo '</ul>';

          echo '</div>';
          echo '</div>';
          }


          Вызываете в общем шаблон:
          Код
          <insert name="show_login" module="registration" template="top">


          Прописываете там, где у вас вся кастомная джава:
          Код
          <!-- Блок авторизации -->
          <script type="text/javascript">
          $(function() {
          $('.spoiler-auth-body').hide();
          $('.spoiler-auth-head').click(function(){
          $(this).next().toggle();
          })
          });
          </script>

          Ну, стили пропишете как Вам надо. Надо только чтобы там было обязательно:
          Код
          .spoiler-auth-body { display: none; }
          , а то при обновлении страницы на полсекунды панель авторизации будет выскакивать, некрасиво.

          Все.
          • 17 ноября 2015 г. , редакция: 17 ноября 2015 г.
          • ВАЛЕРИЙ ВИКТОРОВИЧ (SHERRLOK), все классно, но лучше не
            Цитата
            .spoiler-auth-body { display: none; }

            а через ajax отработать, на мой взгляд, так будет солидней, да и при начальной загрузке страницы не будет передаваться лишний html-код (борьба за скорость, ценим время гостя).
            • 18 ноября 2015 г.
            • Хотя если честно, то чем обработка через аякс лучше для поисковиков??? Как известно, тег ноиндекс гугл вообще не принимает во внимание, и шпионит за 100% всем кодом сайта.
              Не узрит ли в аяксе поисковик злой умысел?????
              • 18 ноября 2015 г.
              • Цитата
                Хотя если честно, то чем обработка через аякс

                Я говорил о принципе. Допустим в html-странице можно разместить много всего и скрыть это с помощью css и открывать по необходимости с помощью js. Такая страница, допустим, будет весить 30 kb. Я же предложил задуматься и не пихать все в страницу, а подгружать по мере необходимости с помощью ajax. При таком варианте страница в момент первой загрузки будет весить в несколько раз меньше. Отсюда и скорость загрузки быстрее. Поисковики это любят: быстрее загрузилась страница - больше прочитал за один раз поисковый робот. Потом, при использовании ajax, можно исключать смысловой мусор, на который также обращают внимание поисковики. В общем много всяких плюсов ...
            • 18 ноября 2015 г.
            • Похоже, Эдуарду уже ничего не надо. Молчит как партизан.
              • 21 ноября 2015 г.
              • Большое спасибо. Был в отпуске ))
                Сегодня пробую сделать.
                А что значит - "Прописываете там, где у вас вся кастомная джава: "
                У меня ее нет.
                Папка со скриптами содержит много файлов mail site superfish ...... В какой добавлять?
            • 18 ноября 2015 г.
            • Ладно, покажите (можно в личку) самый продвинутый ваш сайт в поисковиках сделанный на диафан.
              • 21 ноября 2015 г. , редакция: 21 ноября 2015 г.
              • Разобрался немного.
                То что вы предлагаете сделать у меня уже было изначально (тема Спорт магазин).
                На странице есть кнопка "личный кабинет" в правом верхнем углу. При нажатии открывается окошко с выбором входи или регистрации (правда там нет желаемой кнопки "восстановить пароль, которая почему то есть в подобном окошке, если входишь на site.ru/admin. Наверное я не правильно описал свою проблему. Попробую сказать по другому - после входа, пользователь должен иметь возможность попасть в свой кабинет. Та кнопка в верху "Личный кабинет" которая открывала окно входа на сайт, превратилась в ВЫХОД. Поэтому я в меню добавил кнопку "Личный кабинет" и авторизованный пользователь по ней попадает на свою страницу. Проблема в том, что эту кнопку видит и не авторизованный пользователь. При нажатии выпадает 404. Мне нужно что бы эта кнопка или не была видна или вела бы на страницу регистрации или в окно авторизации. Я умею моей кнопке "Личный кабинет" назначить безусловную ссылку на страницу авторизации, но тогда зарегистрированные пользователи не попадают в личный кабинет. У этой кнопки в меню есть минимум штатных настроек. Там есть "Атрибуты" может нужно туда вписать что-то, что бы ее показывало только авторизованным пользователям? мой сайт www.100ika.ru
                Спасибо за помощь
              • 21 ноября 2015 г.
              • Спасибо.
                САм догадался ))
                В файле registration.view.show_login_links.php
                Добавил в условие else -
                echo '<a href="http://www.100ika.ru/user/" ><i class="fa fa-lock"></i>'
                . $this->diafan->_('Личный кабинет')
                . '</a>';
                Вроде работает
            • 28 января 2018 г.
            • Здравствуйте. Может быть вы знаете, где находится вся кастомная джава?
              • 28 января 2018 г.
              • Обычно в файлах /custom/my/js/site.js и /custom/my/js/main.js
                P.S.: не Java, а JavaScript или JS. Это разные языки.
              • 28 января 2018 г.
              • С первым кодом понятно более менее. А вот куда вставлять второй и третий???
          • 28 января 2018 г.
          • Здравствуйте, ребят. А можно поподробнее, куда и что закинуть? Буду оооочень благодарен)
            • 29 января 2018 г.
            • Вы имеете ввиду мой код?
              1. registration.view.show_login_top.php - в папку /custom/my/modules/registration
              2. <insert name="show_login" module="registration" template="top"> в site.php там где выводите "Личный кабинет".
              3. Код джва скрипта, можно, допустим в низ файла site.php, выше </body>
              Это?
              • 29 января 2018 г.
              • Да, это))) я не очень сильно разбираюсь... Попросили - помогаю) Спасибо

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум