We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28814 ☆ A M B ☆
    • 1,086 Posts
    Quote from: pixelranger at Sep 07, 2008, 01:57 PM

    А где именно в классе DocumentParser обрабатываются перенаправленные из файла htaccess данные?
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    Думаю, функция rewriteUrls(), примерно 873 строка.
    Обдумывал, как это работает в целом и что можно поменять, но видимо сегодня не мой день smiley.
      Разработка сайтов и программных модулей на MODX.
      Опыт работы на MODx с 2005 года. Высокое качество.
      Компания Baltic Design Colors: http://www.bdcolors.ru.
      • 785
      • 2,113 Posts
      Quote from: pixelranger at Sep 07, 2008, 01:57 PM

      А где именно в классе DocumentParser обрабатываются перенаправленные из файла htaccess данные?
      Важно найти как разбор символьных адресов, так и их генерацию.
      Надо посмотреть функции makeUrl, rewriteUrls, cleanDocumentIdentifier, а еще executeParser в части за строкой
      // Check use_alias_path and check if $this->virtualDir is set to anything, then parse the path
      Может и еще где-то.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 27776
        • 33 Posts
        У меня есть похожая проблема с ЧПУ. Если топикстартер не против, изложу здесь.
        В структуре документов имеется документ, имеющий значение только при наличии дополнительного параметра
        Пример:www.sait.com/users/userpage/, где userpage это документ, имеющий значение только вместе с id пользователя. И вместо userpage (или идентификатора этого документа) логично было бы видеть, например, www.sait.com/users/5/ (где 5 id пользователя, но не id документа).
        А, например, страница фотографий пользователя c id=5 при таком подходе выглядела бы так: www.sait.com/users/5/photos/
        Насколько я понимаю, штатного решения нет.
        Есть идея вместо одного документа userpage сделать автоматическую генерацию документов в папке users для каждого пользователя с алиасом равным id пользователя. Не очень пока понимаю как это делать и к тому же это влечет за собой генерацию всех вложенных страниц пользователя (фотографии и т.п.). Документы сильно размножаются sad
        Надеюсь, возможны более простые решения...
          • 785
          • 2,113 Posts
          Quote from: smoke at Sep 14, 2008, 04:29 AM

          Надеюсь, возможны более простые решения...
          А какие решения могут быть, все равно ведь для каждого пользователя как-то надо создавать страницу. Если есть пользователи 2 и 5, то для них создаются соответствующие страницы 2 и 5, и на них вводится соответствующая информация.
          Если же уникальная информация для каждого пользователя не вводится, а все генерируется в каком-то сниппете, то не вижу особого смысла генерации уникальных ЧПУ. Хотя в принципе можно в .htaccess добавить что-то вроде:
          RewriteRule ^users/(.*)$ index.php?q=users&user=$1 [L,QSA]
          и в сниппете обрабатывать $_REQUEST[’user’] для генерации адресов и содержимого страниц.

          А вообще, мне кажется, что не надо переоценивать ЧПУ. Подавляющее большинство посетителей не обращает внимания на адреса страниц. Конечно, длинные и непонятные адреса, какие, например, генерирует Jot, не слишком приятны, но доводить до абсурда требования генерации ЧПУ тоже не нужно.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 27776
            • 33 Posts
            Quote from: AKots at Sep 14, 2008, 04:58 AM

            Если же уникальная информация для каждого пользователя не вводится, а все генерируется в каком-то сниппете, то не вижу особого смысла генерации уникальных ЧПУ.
            Да сейчас страница пользователя это один документ который генерируется одним сниппетом. Но у каждого пользователя на его странице содержится уникальная информация.
            Quote from: AKots at Sep 14, 2008, 04:58 AM

            но доводить до абсурда требования генерации ЧПУ тоже не нужно.
            Но как быть например в Breadcrumbs (он у меня уже превратился в myBreadcrumbs smiley ), если мы например со страницы фотографий хотим попасть обратно на страницу пользователя? Ведь переход просто на этот документ по ccылке сгенерированной только с учетом id документа ничего не даст. Нужно обязательно добавить id пользователя.
              • 27776
              • 33 Posts
              Вообщем получается что в настоящий момент единственное более-менее штатное решение это автоматическая генерация целой структуры вложенных документов для каждого пользователя.
              Кто нибудь делал автоматическую генерацию документов?
                • 785
                • 2,113 Posts
                Quote from: smoke at Sep 14, 2008, 05:28 AM

                автоматическая генерация целой структуры вложенных документов для каждого пользователя.
                Странный вывод – я написал про варианты решений, не предусматривающих никакой генерации документов. Вообще-то все зависит от того, откуда появляется информация, выдающаяся пользователю.
                Первый вариант – создавать вручную структуру документов. Достоинством этого варианта, кроме возможности использования стандартных средств, является удобство ввода информации.
                Второй вариант – использование одной страницы с вызовом сниппета, в котором реализована вся логика. Через .htaccess можно для этой страницы создать иллюзию множества страниц с ЧПУ, а внутри сниппета разбирать параметры и выводить содержимое. При этом на данной странице не нужно использовать стандартные сниппеты, как, например, Breadcrumbs, так как вывод хлебных крошек сводится к выводу фиксированных ссылок на страницы верхнего уровня и генерации одной ссылки на страницу пользователя (что элементарно реализуется).

                Автоматическая генерация документов представляет собой написание плагина, похожего на используемый во втором варианте сниппет, но который не выдает страницы посетителю, а сохраняет их в базе данных. Дальше работа идет по первому варианту. В принципе тоже не слишком сложный вариант, но мне кажется, использование сниппета удобнее. Хотя все зависит от особенностей задачи.

                Кстати, для хлебных крошек ЧПУ не нужны – просто вместо Breadcrumbs не некоторых страницах следует использовать простейший сниппет, генерирующий ссылки с именем пользователя в качестве параметра..
                  Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                  Статьи о MODx, регулярно новые публикации
                  • 27776
                  • 33 Posts
                  Quote from: AKots at Sep 14, 2008, 06:01 AM

                  Странный вывод – я написал про варианты решений, не предусматривающих никакой генерации документов.
                  Просто я не уловил никаких других "вариантов решений", так как Вы написали "А какие решения могут быть, все равно ведь для каждого пользователя как-то надо создавать страницу" И воспринял это как предложение генерации документа под каждого пользователя.
                  Quote from: AKots at Sep 14, 2008, 06:01 AM

                  Вообще-то все зависит от того, откуда появляется информация, выдающаяся пользователю.
                  Первый вариант – создавать вручную структуру документов. Достоинством этого варианта, кроме возможности использования стандартных средств, является удобство ввода информации.
                  Не. Не подходит. Информация на странице берется из введенной пользователем при регистрации и далее автоматичеси наполняется в зависимости от деятельности пользователя на сайте
                  Quote from: AKots at Sep 14, 2008, 06:01 AM

                  Второй вариант – использование одной страницы с вызовом сниппета, в котором реализована вся логика. Через .htaccess можно для этой страницы создать иллюзию множества страниц с ЧПУ, а внутри сниппета разбирать параметры и выводить содержимое.
                  .htaccess не создает иллюзию а наоборот преобразует ЧПУ в параметры.
                  А вот как правильно создавать ЧПУ в требуемом виде это и есть мой вопрос. И предложенного решения не вижу. Как потом это .htaccess-ом преобразовать мне понятно.
                  Quote from: AKots at Sep 14, 2008, 06:01 AM

                  При этом на данной странице не нужно использовать стандартные сниппеты, как, например, Breadcrumbs, так как вывод хлебных крошек сводится к выводу фиксированных ссылок на страницы верхнего уровня и генерации одной ссылки на страницу пользователя (что элементарно реализуется).
                  Согласен. Поэтому я использую свою версию Breadcrumbs
                  Quote from: AKots at Sep 14, 2008, 06:01 AM

                  Автоматическая генерация документов представляет собой написание плагина, похожего на используемый во втором варианте сниппет, но который не выдает страницы посетителю, а сохраняет их в базе данных.
                  Что предствляет генерация тоже понятно. Хотел просто услышать тех что это делал уже. Но уже нашел поиском http://modxcms.com/forums/index.php/topic,5823.45.html там есть полная информация
                  Quote from: AKots at Sep 14, 2008, 06:01 AM

                  Кстати, для хлебных крошек ЧПУ не нужны – просто вместо Breadcrumbs не некоторых страницах следует использовать простейший сниппет, генерирующий ссылки с именем пользователя в качестве параметра..
                  Если все сниппеты и чанки самому писать, то проблем конечно нет с формирование ссылок. Но некоторые сниппеты (например Weblogin) не очень хотелось бы самому переписывать. Поэтому ищу решение для ЧПУ, которое будет работать и со стандартными сниппетами..
                    • 785
                    • 2,113 Posts
                    В итоге вопрос, оказывается, совершенно не связан с начальной темой – именно поэтому рекомендуется создавать новые темы.
                    Лично я так и не понял, чем генерация документов и сохранение их в базе лучше генерации непосредственно при обращении. Переделывать сниппеты не требуется, просто Breadcrumbs в данном случае не нужен, а Weblogin должен нормально работать при условии корректного использования.

                    Quote from: smoke at Sep 14, 2008, 06:53 AM

                    .htaccess не создает иллюзию а наоборот преобразует ЧПУ в параметры.
                    А вот как правильно создавать ЧПУ в требуемом виде это и есть мой вопрос. И предложенного решения не вижу.

                    Я писал, что «создать иллюзию множества страниц с ЧПУ», то есть в действительности обращение идет к одной странице, а кажется, что их много.

                    И если фраза «внутри сниппета разбирать параметры и выводить содержимое» непонятна, то кратко поясню: если вызвана страница users/5/photo, то нужно выводить фотографии для пятого пользователя, при этом ссылка на общую информацию для него будет такая: users/5, а ссылка на тексты – users/5/text. Генерировать ссылки можно на основании переменных, например, $_REQUEST[’user’] и $_REQUEST[’page’], а для их заполнения верными значениями использовать .htaccess. Если же генерация ссылки users/5 считается слишком сложным делом, и проще записать страницу в базу для подключения механизма создания ссылок MODx, то тогда действительно, надо генерировать заранее всю структуру документов.

                    Следует отметить, что, в конечном счете, нужно поступать так, как удобнее разработчику, при этом решение совершенно не обязательно должно удовлетворять других людей.
                      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                      Статьи о MODx, регулярно новые публикации
                      • 27776
                      • 33 Posts
                      Quote from: AKots at Sep 14, 2008, 09:07 AM

                      И если фраза «внутри сниппета разбирать параметры и выводить содержимое» непонятна
                      Фраза абсолютно понятна. Просто вопрос не про как самому сгенерировать правильную ссылку, а про то как сделать, чтобы ссылки сами правильно создавались в стандартных сниппетах. Да наверно надо было другую тему начинать, прошу прощения. embarrassed
                      Quote from: AKots at Sep 14, 2008, 09:07 AM

                      Лично я так и не понял, чем генерация документов и сохранение их в базе лучше генерации непосредственно при обращении.

                      Лучше (хотя это не то слово, вернее будет - универсальнее) тем, что при этом действительно будут существовать документы с алиасом равным id пользователя. И любой стандартный сниппет правильно сформирует на них ссылку.
                      На самом деле мне вариант с генерацией самому не очень нравится. Думал может есть возможность решить это с помошью какого-нибудь плагина. Но ничего не получается - событий типа OnMakeURL не хватает..