We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 22524
    • 8 Posts
    Доброго времени суток товарищи, перерыл форумы, но так и не докопался до сути.

    Ситуация такая есть портальчик на 3х языках, сделан методом 3 папок и трех шаблонов, менюха выбора языка узазывает на id родительской папки, ссылки в меню на нужный док. Все шоколадно, но есть одно но, встала необходимость ограничить доступ к некоторым документам, поправил права доку что мол виден только группе регеных юзеров, дальше вот такая вот фигня.... нажимаем в меню ссылку на порезаный по правам док, выдаеться ифа мол только для регеных, впишите логин пароль или зарегьтесь. Собственно вопрос как реализовать чтобы при выборе языка форма регистрации отображалась на нужном мне языке. уже сломал весь мозг... ModX юзаю не долго так что больно не бейте.

    Возможные данные которые вам помогут
    ставил модХ 0.9.6.1 с демоданными, потом наделал папок и доков, и три шаблона.

    есть TV вот с таким кодом
    @EVAL if ($modx->getLoginUserID()) return 'Logout'; else return 'Login';

    форма weblogin
    <?php
    # WebLogin 1.0
    # Created By Raymond Irving 2004
    #::::::::::::::::::::::::::::::::::::::::
    # Usage: 	
    #	Allows a web user to login to the website
    #
    # Params:	
    #	&loginhomeid 	- (Optional)
    #		redirects the user to first authorized page in the list.
    #		If no id was specified then the login home page id or 
    #		the current document id will be used
    #
    #	&logouthomeid 	- (Optional)
    #		document id to load when user logs out	
    #
    #	&pwdreqid 	- (Optional)
    #		document id to load after the user has submited
    #		a request for a new password
    #
    #	&pwdactid 	- (Optional)
    #		document id to load when the after the user has activated
    #		their new password
    #
    #	&logintext		- (Optional) 
    #		Text to be displayed inside login button (for built-in form)
    #
    #	&logouttext 	- (Optional)
    #		Text to be displayed inside logout link (for built-in form)
    #	
    #	&tpl			- (Optional)
    #		Chunk name or document id to as a template
    #				  
    #	Note: Templats design:
    #			section 1: login template
    #			section 2: logout template 
    #			section 3: password reminder template 
    #
    #			See weblogin.tpl for more information
    #
    # Examples:
    #
    #	[[WebLogin? &loginhomeid=`8` &logouthomeid=`1`]] 
    #
    #	[[WebLogin? &loginhomeid=`8,18,7,5` &tpl=`Login`]] 
    
    # Set Snippet Paths 
    $snipPath = $modx->config['base_path'] . "assets/snippets/";
    
    # check if inside manager
    if ($m = $modx->insideManager()) {
    	return ''; # don't go any further when inside manager
    }
    
    # deprecated params - only for backward compatibility
    if(isset($loginid)) $loginhomeid=$loginid;
    if(isset($logoutid)) $logouthomeid = $logoutid;
    if(isset($template)) $tpl = $template;
    
    # Snippet customize settings
    $liHomeId	= isset($loginhomeid)? explode(",",$loginhomeid):array($modx->config['login_home'],$modx->documentIdentifier);
    $loHomeId	= isset($logouthomeid)? $logouthomeid:$modx->documentIdentifier;
    $pwdReqId	= isset($pwdreqid)? $pwdreqid:0;
    $pwdActId	= isset($pwdactid)? $pwdactid:0;
    $loginText	= isset($logintext)? $logintext:'Login';
    $logoutText	= isset($logouttext)? $logouttext:'Logout';
    $tpl		= isset($tpl)? $tpl:"";
    
    # System settings
    $webLoginMode = isset($_REQUEST['webloginmode'])? $_REQUEST['webloginmode']: '';
    $isLogOut		= $webLoginMode=='lo' ? 1:0;
    $isPWDActivate	= $webLoginMode=='actp' ? 1:0;
    $isPostBack		= count($_POST) && (isset($_POST['cmdweblogin']) || isset($_POST['cmdweblogin_x']));
    $txtPwdRem 		= isset($_REQUEST['txtpwdrem'])? $_REQUEST['txtpwdrem']: 0;
    $isPWDReminder	= $isPostBack && $txtPwdRem=='1' ? 1:0;
    
    $site_id = isset($site_id)? $site_id: '';
    $cookieKey = substr(md5($site_id."Web-User"),0,15);
    
    # Start processing
    include_once $snipPath."weblogin/weblogin.common.inc.php";
    include_once ($modx->config['base_path'] . "manager/includes/crypt.class.inc.php");
    
    if ($isPWDActivate || $isPWDReminder || $isLogOut || $isPostBack) {
    	# include the logger class
    	include_once $modx->config['base_path'] . "manager/includes/log.class.inc.php";
    	include_once $snipPath."weblogin/weblogin.processor.inc.php";
    }
    
    include_once $snipPath."weblogin/weblogin.inc.php";
    
    # Return
    return $output;
    ?>

    и чанк FormLogin
    <!-- #declare:separator <hr> --> 
    <!-- login form section-->
    <form method="post" name="loginfrm" action="[+action+]"> 
        <input type="hidden" value="[+rememberme+]" name="rememberme" /> 
        <fieldset>
            <h3>Your Login Details</h3>
            <label for="username">User: <input type="text" name="username" id="username" tabindex="1" onkeypress="return webLoginEnter(document.loginfrm.password);" value="[+username+]" /></label>
        	<label for="password">Password: <input type="password" name="password" id="password" tabindex="2" onkeypress="return webLoginEnter(document.loginfrm.cmdweblogin);" value="" /></label>
        	<input type="checkbox" id="checkbox_1" name="checkbox_1" tabindex="3" size="1" value="" [+checkbox+] onclick="webLoginCheckRemember()" /><label for="checkbox_1" class="checkbox">Remember me</label>
        	<input type="submit" value="[+logintext+]" name="cmdweblogin" class="button" />
    	<a href="#" onclick="webLoginShowForm(2);return false;" id="forgotpsswd">Forget Your Password?</a>
    	</fieldset>
    </form>
    <hr>
    <!-- log out hyperlink section -->
    <h4>You're already logged in</h4>
    Do you wish to <a href="[+action+]" class="button">[+logouttext+]</a>?
    <hr>
    <!-- Password reminder form section -->
    <form name="loginreminder" method="post" action="[+action+]">
        <fieldset>
            <h3>It happens to everyone...</h3>
            <input type="hidden" name="txtpwdrem" value="0" />
            <label for="txtwebemail">Enter the email address of your account to reset your password: <input type="text" name="txtwebemail" id="txtwebemail" size="24" /></label>
            <label>To return to the login form, press the cancel button.</label>
        	<input type="submit" value="Submit" name="cmdweblogin" class="button" /> <input type="reset" value="Cancel" name="cmdcancel" onclick="webLoginShowForm(1);" class="button" style="clear:none;display:inline" />
        </fieldset>
    </form>
    


    Чем вызываеться данная форма? ведь в шабле и доках я не прописывал ни каких параметров выхзова и как мне добиться чтобы форма выводилась на том языке который мне нужен??? Не люблю задавать глупые вопросы, но уже мозг плавиться начинает.....
    Заранее огромное человеческое спасибо! =)
      • 897
      • 1,620 Posts
      самое тупое решение в лоб. сделать три чанка с формами на нужных языках ив соответствующих шаблонах вызывать сниппет с нужными чанками.
        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

        Не используйте Revo для "просто сайтов". Используйте Evo

        Who can defeat the Russian bear?
        • 22524
        • 8 Posts
        В принципе у меня тоже была мысль так сделать, у кого ниб есть еще мысли по этому поводу?
          • 22524
          • 8 Posts
          Единственное это я не понял чем эта форма вообще вызываться, и где указывать параметр ее вызова. Дело в том что самой формы у меня ни где в дизайне не предусмотрено, она должна выскакивать при попытке открыть закрытые для всех страницы. Буду очень признателен если кто ниб пнет меня в нужном направлении. Я сделал три чанка для разных языков, каждый привязал к нужному шаблону,но вот вызывается почему то всегда один, причем при его вызове меняется и шаблон =(((
          Заранее спасибо.
            • 897
            • 1,620 Posts
            эх, ивпатий каловрат!

            значит так. в конфигурации системы -> сайт смотрим, какая страница у вас указана в пункте Страница "Доступ запрещен"
            далее идем в эту страницу и смотрим вызов.

            [!WebLogin? &tpl=`FormLogin` &loginhomeid=`2`!]

            понимаем что нам надо в зависимости от языка подменять &tpl параметр. следующий вопрос, как в зависимости от шаблона подменять форму, тут масса решений, самое правильное это через PHx определять UltimateParent (самая первая папка = язык) и в зависимости от него ставить нужную форму.
              "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

              Не используйте Revo для "просто сайтов". Используйте Evo

              Who can defeat the Russian bear?
              • 22524
              • 8 Posts
              UltimateParent - был по дефолту, PHx прикрутил. Чисто теоритически все понятно, не подскажите как сделать все это дело на правтике, есть три шаблона, например themeR, themeD, themeE для трех разных языков рашн, бундес и инглиш соответственно, есть 3 чанка FormLoginR, FormLoginD, FormLoginE - разные формы для разных языков.

              Куда и что надо вписать чтобы у меня выдавало нужную форму в зависимости от шаблона. еще во всех этих ковыряниях столкнулся с такой вот проблемой... Страница авторизации имеет ид 4, она привязана к шаблону, при нажатии на ссылку из шаблона к которому она не привязана, шабл меняется, соответственно язык меню и лого тоже. Есть ли возможность сделать так чтобы у дока с ид4 (страница авторизации) была привязка ко всем 3м шаблонам т.е. из которого ты нажимаешь на ссылку тот и остается, а меняется только форма регистрации (аля подставляется нужный чанк в зависимости от шаблона)
              я вижу это так...
              [!WebLogin? &tpl=`FormLogin[$lang]` &loginhomeid=`2`!]
              [$lang] - это переменная которая в зависимости от шаблона подставляет нужное значение,
              themeR - подставляет R
              themeD - подставляет D
              themeE - подставляет E
              В итоге получаем то что нужно.
              Но это все теоретически, а вот как реализовать это на практике не знаю, если подскажите буду очень признателен.

              Пытались с товарищем EVD реализовать это через плагин, т.е. страница авторизации (она же страница доступ запрещен, та что в конфиге по дефолту имеет ид4) меняется от того какой шабл выставлен но чегото у нас ни чего не получилось =(
              вот код плагина, вдруг у кого есть чем дополнить или указать на ошибки, выставлен на вот это OnPageUnauthorized событие
              <?php
              $e = &$modx->event;
              if($e->name=='OnPageUnauthorized') {
                $id = $_REQUEST['refurl'];
                $doc = $modx->getDocument($id);
               swicth ($doc['template']) 
               {
                 case 'themes_ru': $modx->config['unauthorized_page'] = 4; break;
                 case 'themes_en': $modx->config['unauthorized_page'] = 5; break;
                 case 'themes_de': $modx->config['unauthorized_page'] = 6; break;
               }
              }
              ?>

              он в зависимости от темы должен был выдавать нужную страницу авторизации, например для русской темы страница имеет ид4, для инглиш5, для бундеса 6. Это будет самый оптимальный вариант, только вот как заставить данную конструкцию работать
                • 1788
                • 1,103 Posts
                Quote from: P0lun0snik at Dec 04, 2007, 08:12 AM

                UltimateParent - был по дефолту, PHx прикрутил. Чисто теоритически все понятно, не подскажите как сделать все это дело на правтике, есть три шаблона, например themeR, themeD, themeE для трех разных языков рашн, бундес и инглиш соответственно, есть 3 чанка FormLoginR, FormLoginD, FormLoginE - разные формы ...
                Подходящее решение проблемы описано => http://modxcms.com/forums/index.php/topic,19877.0.html
                  • 19164
                  • 1,215 Posts
                  Примерно так [!WebLogin? &tpl=`[+phx:template=`id`:select=`1={{chunk_en}}&2={{chunk_fr}}&3={{chunk_ru}}`+]` &loginhomeid=`2`!]

                  Нужно только прописать вместо 1,2,3 соответсвующие ID шаблонов.
                    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]
                    • 22524
                    • 8 Posts
                    В общем попробовал, работает но есть одно НО....
                    У меня форма регистрации дизайном не предусмотрена, она выскакивает только когда нажимаешь на ссылку на документ который доступен только для регеных юзеров. соответственно попадаем на страницу доступ запрещен. она соответственно прикручена к одному из шаблонов. так вот, когда мы из любого шабла нажимаем на ссылку с залоченным доком мы попадаем на это страницу, шаблон меняется на тот к которому она прикручена, в итоге всегда срабатывает одно и тоже правило. Можно как нить модифицировать, например чтобы было 3 страницы (доступ запрещен) в зависимости от шаблона, пытались сделать плагином пример кода выше, но чего то не получилось. Думаю это самый безболезненный и самый оптимальный вариант реализации. Если у кого есть мысли по данному поводу буду только рад.
                      • 19164
                      • 1,215 Posts
                      Когда пользователь выбирает язык - вешать ему куки с идентификатором языка. А уже в зависимости от значения этих куков выдавать нужные шаблоны. Чтобы упростить вариант - написать модификатор для PHx, который будет выдавать значение из куков, и тогда пример для вызова WebLogin будет почти такой же как я написал выше. Ну а устанавливать куки там где идет выбор языка.
                        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]

                      This discussion is closed to further replies. Keep calm and carry on.