We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31358
    • 7 Posts
    Сразу прошу прощения, если пост не в тот раздел. Я modx недавно начал использовать, так что даже не знаю, куда лучше вопрос отправить. А суть такая:

    Есть страница, например, с id=10, доступная только для определенной группы пользователей. В настройках сайта <Страница "Доступ запрещен"> = 20. Когда я не авторизован и захожу на страницу с id=10, то modx подтягивает страницу c id=20, хотя url в браузере остается неизменным. Таким образом, хотя я захожу на страницу с id=10, конструкция [*id*] выведет 20. А как мне получить id именно открываемой страницы без учета внутренних подстановок modx, т.е. в данном случае должно быть 10? Используется user friendly URL, так что id в адресной строке браузера отсутствует.
      • 19164
      • 1,215 Posts
      Посмотрите, что у вас прописано для страницы 404, может быть адрес вводится неверно поэтому движок и перенаправляет на 404. А вообще по идее ID запрошенной страницы всегда должен содержаться в $_REQUEST[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]
        • 31358
        • 7 Posts
        А в _REQUEST есть только параметр [’q’], который содержит user friendly URL этой страницы, а вот параметра с ID нет.
          • 33694
          • 742 Posts
          А что показывает $modx->documentIdentifier?
            • 31358
            • 7 Posts
            $modx->documentIdentifier показывает id страницы <Страница "Доступ запрещен">, а не той, чей адрес показан в строке URL браузера.
              • 785
              • 2,113 Posts
              Если известен user friendly URL, из него можно выделить псевдоним, то есть alias. Потом можно обратиться к базе данных, к таблице site_content, и по alias определить id. Может кто-нибудь скажет и о более простом способе.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 31358
                • 7 Posts
                Спасибо, AKots, такая мысль была. Только я хотел что-то попроще, желательно из стандартных средств modx.
                  • 33694
                  • 742 Posts
                  Если известен user friendly URL, из него можно выделить псевдоним, то есть alias. Потом можно обратиться к базе данных, к таблице site_content, и по alias определить id.
                  Такую задачу я когда-то решал. Правда, тогда вот задумался, как будет рузруливаться ситуация, если c заданным алиасом будет больше одного документа? Такое возможно, при использовании вложеных урлов. Какой из id вернётся? Первый по счёту? — А правильно ли это?

                  Вот кусочек того кода:
                  <?php
                  function is_validAlias($alias, $parents) {
                  global $modx;
                    $aliases = array();
                    $folders = explode(",", $parents);
                  
                    foreach($folders as $folder) 
                    {
                  	$Ids = $modx->getChildIds($folder, 1);
                  
                  	foreach ($Ids as $id) 
                  	{
                  		$Alias = $modx->getPageInfo($id, 1, 'alias');
                  		$aliases[] = $Alias['alias'];
                  	}
                    }
                  
                    return in_array($alias, $aliases);
                  }
                  
                  
                    $app_rname = (isset($_GET['app']) && (!empty($_GET['app'])) && is_validAlias($_GET['app'], '2,4,8')) ? $_GET['app'] : '';
                  
                    if (isset($app_rname))
                    {
                  	$app_page = $modx->getDocumentObject('alias', $app_rname); // !!
                  	$app_page_id = $app_info['id'];
                    }
                  ?>
                  Внимание! Отмеченная двумая восклицательными знаками строка (предпоследняя), моментально выведет страницу 404 если алиас $app_rname не существует в дереве документов, поэтому, выше добавлена функция is_validAlias() проверяющая существование чилдрена с алиасом $alias у кого нибудь из перечисления $parents.

                  Надесь, это всё хоть кому нибудь пригодится. И так же, жду ответа на вопрос, ради которого всё это и вывалил smiley
                    • 31358
                    • 7 Posts
                    to [e]Bu$ter

                    Похоже, что это правильный путь. Только мне кажется, что именно такая операция уже делается самим modx-ом. Ведь когда он парсит страницу, то он должен получить для нее права доступа. Значит он (modx) получает id запрашиваемой страницы, и увидев, что прав на доступ нет, подтягивает контент страницы <Страница "Доступ запрещен">. Т.е. в кишках modx нужный id должен быть. Только вот как его получить? Придется в коде системы копаться. А где можно найти полную информацию по modx API?
                      • 33694
                      • 742 Posts
                      А где можно найти полную информацию по modx API?
                      В файле manager/includes/document.parser.class.inc.php wink