We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 20972
    • 19 Posts
    Давольно долго работаю с MODx и впервые потребовалась регистрация пользователей с возможностью
    редактирования и удаления пользователем своего профиля. Стал искать готовые решения наткнулся на WebLogin и WebLoginPE функциональность последней полностью устраивала но при интеграции сразу возник ряд проблем (использовал уже исправленный WebLoginPE с ru-uft8).

    Во первых задвоение или двойной вызов WebLoginPE один форма авторизации второй на странице регистрации и редактирования профиля.

    Во вторых вызов [!WebLoginPE!] это 8 запросов в БД а так как форма для авторизации присутствует на каждой странице +8 запросов на каждой странице сайта.

    В третьих недостаточная проверка перенной $servise сравните две страницы этого сайта
    http://www.problemas.ru/my-profile.php и http://www.problemas.ru/my-profile.php?service=profile
    и поймете о чем речь.

    На форуме не нашел достойного решения возникших проблем (может плохо искал) решил сделать сам вот что получилось.

    Первую и вторую проблемы решил отказавшись от второго вызова WebLoginPE сейчас форма авторизации выводится при помощи [!WebLogin? &tpl=`FormForLogin` &logouthomeid=`[(site_start)]`!] ссылка "зарегистрироваться" и соответственно "редактировать профиль" ведут на страницу с вызовом [!WebLoginPE? &loHomeId=`[(site_start)]`!] как результат никаких задвоенных вызывов и никаких лишних запросов в БД.

    Третья проблема решается небольшим исправление сниппета WebLoginPE на строке 103(у меня) необходимо вставить две строчки кода:

    if (!$modx->getLoginUserID()) $service = $service =='register' ? $service : 'registernew';
    else $service = in_array($service, array('register','registernew')) ? '' : $service;


    Файлы прилагаются хотя вродебы и так все понятно.
      • 19164
      • 1,215 Posts
      На основе какой версии вы делали свои доработки? В разработке этого сниппета в данный момент участвует достаточно много народу.

      С вашей стороны более разумным было бы не выкладывать свои наработки в русскоязычной ветке форума, где оно в скором времени потеряется и станет ненужным. Вы скорее всего все равно не будете поддерживать ее в соответствии с актуальными обновлениями сниппета. Правильнее всего было бы связаться с разработчиками или написать в багтрекер проекта на Google Code
        DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

        Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

        [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
        • 20972
        • 19 Posts
        Да неплохо былобы связаться с разработчиками и внести изменения вот только мои знания английского не позволяют этого сделать.
          • 15286
          • 79 Posts
          Скачал...
          Испытал смешаные чувства.  smiley

          Сначала захотелось сказать спасибо, потом просто убить переводчика....

          webloginpe.templates.php
          <p class="strela" style="background-color:#F3F3F3;"><!-- --></p>
          <div style="background:#F3F3F3;">

          вот именно за это...

          Да, и после нормальной регистрации, первое слово: Ошибка!

          nash300 - спасибо, хорошее решение!
            • 31688
            • 85 Posts
            Я тоже связался впервые с WebLoginPE.. но так как юный пользователь MODx, хотел попросить у Вас помощи: Как этот снипет вообще установить? Нигде не могу найти базовой информации по этому поводу.. huh
              • 6272
              • 95 Posts
              2vj-studio: в архиве сниппета есть папка docs, в ней файл index.html - там написано как установить, правда на инглише.

              В пхп не шарю, во внутренностях модыкса (я про переменные и апи) тоже только разбираюсь, поэтому не падайте в обморок от таких кодов smiley Наверняка можно сделать много проще, но как - мне пока не ведомо. Посему для линков на профиль WebLoginPE я сделал следующее.

              1. В чанке дитто, кроме прочего прописал Добавил(а) <a href=’[~373~]?service=viewprofile&username=[!authorname? &author=`[+author+]`!]’>[+author+]</a>, [+date+], где 373 - ид страницы "Пользователи". Тобишь той где [!WebLoginPE? &lang=`ru` &dateFormat=`%Y.%m.%d` &type=`users` &usersTpl=`UsersTpl` &viewProfileTpl=`ViewProfileTpl`!]
              2. В сниппете authorname написал это:
              <?php
              if ($author == 'NikAdmina')
               {
              return $author;
               }
              else
               {
              $n="SELECT `id` FROM `mx_web_user_attributes` WHERE `fullname`='$author'";
              $num=mysql_query($n); $p=mysql_fetch_array($num);
              $q="SELECT `username` FROM `mx_web_users` WHERE `id`='$p[id]'";
              $q=mysql_query($q); $r=mysql_fetch_array($q);
              echo $r[username];
               }
              ?>

              что видимо крайне ужасно smiley Есть идеи как сделать проще??
              3. Еще есть чанк, который вставлен на всех страницах, добавляемых веб-юзерами. В нем: <div align=right>Добавил(а) <a href=[~373~]?service=viewprofile&username=[!username? &createdby=`[*createdby*]`!]’>[!fullname? &createdby=`[*createdby*]`!]</a>, [!add.date? &idd=`[*id*]`!].</div>
              4. Код сниппета username
              <?php
              if ($createdby>0)
               {
              $q="SELECT `fullname` FROM `mx_user_attributes` WHERE `id`='$createdby'";
              $q=mysql_query($q); $r=mysql_fetch_array($q);
              echo $r[fullname];
               }
              else
               {
              $createdby=$createdby*-1;
              $q="SELECT `username` FROM `mx_web_users` WHERE `id`='$createdby'";
              $q=mysql_query($q); $r=mysql_fetch_array($q);
              echo $r[username];
               }
              ?>

              Код сниппета fullname
              <?php
              if ($createdby>0)
               {
                $q="SELECT `fullname` FROM `mx_user_attributes` WHERE `id`='$createdby'";
               }
              else
               {
              $createdby=$createdby*-1;
              $q="SELECT `fullname` FROM `mx_web_user_attributes` WHERE `id`='$createdby'";
               }
              $q=mysql_query($q); $r=mysql_fetch_array($q);
              echo $r[fullname];
              ?>


              И собственно с чего начал монолог:
              а) те, кто шарят хуже меня - можете юзать, работает - проверено
              б) те, кто шарят лучше меня - буду благодарен за иные решения и/или оптимизацию этих