RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

Комментарии (28) Добавить комментарий
  • Максим
    Максим
    19 Августа 2011, 14:19
     ↑  -9  ↓     ответ

    Спасибо большое за статью! Очень полезно и познавательно, особенно понравилось объяснение про разницу функций ParseRoute в разных вариантах. Добавил в избранное ;)

  • Татьяна
    Татьяна
    18 Сентября 2011, 20:24
     ↑  -6  ↓     ответ

    Огромное спасибо автору - действительно очень доступно, по делу и самое главное, то что я искала!

  • Олег
    Олег
    11 Декабря 2011, 02:31
     ↑  +14  ↓     ответ

    Зачитав статью раз на 5 не пойму как работает router.php.

    Вы многое не объясняете и перескакиваете. Ничего не понятно!!!!

  • Олег
    Олег
    11 Декабря 2011, 14:18
     ↑  +8  ↓     ответ

    Может я не понимаю, но в заголовке статьи написано: Маршрутизация в компоненте. Где об этом рассказывают??

    Вот у меня есть компонент. В нём есть разные файлы. И как мне на них смаршрутизировать ссылку?? А не на главный файл компонента??

    • smet.denis
      smet.denis (админ)
      12 Декабря 2011, 01:05
       ↑  -5  ↓     ответ

      почитайте про идеологию ru.wikipedia.org/wiki/Model-View-Controller

      точка входа всегда одна - это контроллер

      делаются две функции, одна собирает ссылку в sef, другая разбирает её из sef - в этом основной смысл роутера (маршрутизации)

      вход всегда происходит на один и тот же файл /components/com_mycomp/mycomp.php в котором должен создаться контроллер (наследник JController) и выполниться.

      • Олег
        Олег
        12 Декабря 2011, 01:12
         ↑  +3  ↓     ответ

        Так как мне открыть через ЧПУ, СЕФ или контроллеры простой файлик с расширением php. Что бы в нём НЕ было меню и шаблонов джумлы. КАК????? Я уже всё перерыл...

        Мне кажется в учебниках по джумле это должно быть на первой странице! Иначе не понятно, как вообще можно, что-то допиливать в джумле.

        • smet.denis
          smet.denis (админ)
          12 Декабря 2011, 01:19
           ↑  -4  ↓     ответ

          Сделайте пустой шаблон или добавьте параметр "?tmpl=raw" (или "?tmpl=component") или вызовите jexit() в методе контроллера

          PS sef тут совсем не причем ;)

          • Олег
            Олег
            12 Декабря 2011, 01:36
             ↑  +8  ↓     ответ

            Чувствую себя недочеловеком. Что за параметр? Я не понимаю вас. Вы объясняете со средины.

            Давайте по порядку. У меня уже сейчас есть свой шаблон.

            называется tranz. В нём есть файл tranz.php и роутер - router.php

            Роутер билдит ссылки и парсит их и передаёт tranz.php.

            Далее у меня есть второй файл - prodaja.php - этот файл мне надо открыть посередине экрана в маленьком окошке, что бы не было меню и.т.д., а только мой код. Куда мне этот файл положить и какие параметры прописать к компоненту, что бы напрямую обратиться к prodaja.php??

            Создание второго компонента не предлагать. Надо в одном.

            • smet.denis
              smet.denis (админ)
              12 Декабря 2011, 01:56
               ↑  +1  ↓     ответ

              Судя по описанию, вы превратили свой сайд в одну большую кашу кода.

              Роутер никак не может быть в шаблоне или это большая ошибка!

              Параметр я предложил вам добавлять в ссылку, например так joomla-book.ru/development/classes/jroute-creating-sef-links-routing-component?tmpl=raw - загрузиться текущая страница, только компонент. Это стандартная возможность Joomla.

              Зачем отдельный компонент, сделайте в одном два контроллера, каждый будет отвечать за свое (prodaja, tranz). Контроллер пусть выбирается внешним параметром.

              PS очень сложно из вас получать всю информацию, чтобы верно ответить на вопрос ;)

              PSS Всеж почитайте о MVC и посмотрите как такое сделано например в com_users.

              • Олег
                Олег
                12 Декабря 2011, 02:07
                 ↑  +4  ↓     ответ

                Нет, нет. Никакой каши. У меня всё по полочкам.

                Вы не верно меня поняли наверное...Не правильно написал - у меня свой не шаблон, а компонент tranz. И вообще сайт-то у меня большой...целый портал.

                Версия джумлы 1.7.3

                Как можно создать два контроллера для одного компонента??

                И что-то ?tmpl=raw у меня не работает. Добавляю в конец любой ссылки - открывается чистая - белая страница.

                • smet.denis
                  smet.denis (админ)
                  12 Декабря 2011, 02:19
                   ↑  -2  ↓     ответ

                  Посмотрите как сделано в com_users

                  /components/com_users/users.php

                  /components/com_users/controllers/*

                  • Олег
                    Олег
                    19 Декабря 2011, 14:36
                     ↑  +2  ↓     ответ

                    С контроллерами разобрался установив чистый шаблон. И потом посмотрев на users. Но:

                    ?tmpl=component работает, но не до конца!

                    При открытии остаётся стиль. А в стиле проблема - ширина окна 1000 пикселей фиксированная. И получается что ширина окна 1000 пикселей.

                    Вопрос!: как отключить цепляние css??? и различных стилей.

                    Не забывайте joomla 1.7. Может raw где надо использовать? Куда копать???

                    • Виктор
                      Виктор
                      21 Января 2012, 05:52
                       ↑  -1  ↓     ответ

                      Вы можете создать в своем шаблоне любой подшаблон, подобно Вашему index.php, только определив в нем иную, нужную вам разметку. Таким образом вы можете вывести компонетт или(и) модуль в нужной разметке или вовсе без нее. Чтобы не грузился стиль - не подключайте стандартную шапку в <head></head>, а вручную пропишите то что Вам нужно. Создайте ваш_подшаблон.php и поместите в папку шаблона. Обращайтесь к нему с помощью параметра в ссылке ?tmpl=ваш_подшаблон

  • Xchesh
    Xchesh
    24 Октября 2012, 20:29
     ↑  +1  ↓     ответ

    "После этого шага строка используется вместо иденитификатора."

    Очень вразумительно объяснено. Точно, именно после этого шага все заработает как пологен. И пусть даже этот шаг будет сделан непонятно где и как.

  • Xchesh
    Xchesh
    26 Октября 2012, 17:45
     ↑  +2  ↓     ответ

    немного разобрался. Оказывается, нужно сформировать ссылку вида "&параметр=значение:алиас" после чего, роутер(который здесь оформлен) будет разбирать этот параметр и выделять алиас, который будет записан в массив $segments из которого формируется строка.

    Блять, обоснуйте мне этот геморой пожалуйста. Почему нельзя в роутере получать алиас?

  • Дмитрий
    Дмитрий
    18 Декабря 2012, 03:26
     ↑  0  ↓     ответ

    Спасибо за статью очень полезно. Есть такой компонент easydiscuss v.2.0.3945 так вот проблемка с чпу. Я создаю в нем категорию (категория) и алиас ( kategoriya). Мне выдает такую ссылку mysite.ru/2012-12-06-15-34-53 то есть вместо алиаса дата создания/редактиования категории' когда мне нужно mysite.ru/kategoriya. Где может крыться помеха, подскажите как решить? Когда и название и алиас прописаны латиицей проблем нет, но тогда и название каттегории на англицйском'а надо на русском.

  • ilianna.ru
    ilianna.ru
    15 Июля 2013, 16:52
     ↑  0  ↓     ответ

    Огромное спасибо, хоть и с трудом но разобралась.

  • Дмитрий
    Дмитрий
    21 Сентября 2014, 17:55
     ↑  0  ↓     ответ

    Извините друзья может кто сможет помочь разобраться в ошибке! К примеру есть страница site.com.ua/divany.html рабочий урл в котором всё в порядке..

    Проблема в том что если в строку ввести урл типа: site.com.ua/ несушщесвующая категория/divany.html то всё равно открывается эта же страница.

    Это очень мешает при смене структуры, старые урлы остаются в индексе так как нет 404. постоянно запрещать в роботе тоже не выход. С этой проблемой можно попасть под фильтр.

    Я так понимаю это ошибка Роутера?

    Подскажите пожалуйста что делать, как это исправить?

    Использую Joomla 2.5.24. и компонент Joomshopping.

  • master255
    master255
    21 Января 2012, 13:59
     ↑  +3  ↓     ответ

    то о чем вы говорите это глупость!!! Нахера такие костыли если есть параметр no_html=1. Нужно его задать и переименовать вьюшку в raw и будет вам счастье. только об этом мало где пишут почему то

    • smet.denis
      smet.denis (админ)
      21 Января 2012, 14:13
       ↑  0  ↓     ответ

      Откровенно говоря, вы тоже сказали глупость :) есть параметр выбора главного layout.

      чтобы выбрать версию для печати, то в ссылку добавляется параметр tmpl=component

      чтобы вернуть только компонент tmpl=raw

      чтобы свой любимый шаблон tmpl=mytemplate

      по умолчанию выбирается index

      Таким образом выбирается файл который будет рендериться из папки /templates/ВАШ ШАБЛОН/. Например для tmpl=mytemplate будет выбран /templates/ВАШ ШАБЛОН/mytemplate.php

      В этом файле будут работать все так же как и в /templates/ВАШ ШАБЛОН/index.php

      • Олег
        Олег
        21 Января 2012, 16:10
         ↑  +3  ↓     ответ

        А зачем тогда no_html=1??

        • smet.denis
          smet.denis (админ)
          21 Января 2012, 16:14
           ↑  -3  ↓     ответ

          Элементарный поиск по Joomla 1.7.3 дал следующее: /libraries/joomla/factory.php, строка 691

          "Keep backwards compatibility with Joomla! 1.0" => Для совместимости расширений с Joomla 1.0

          • master255
            master255
            21 Января 2012, 16:44
             ↑  -1  ↓     ответ

            Отлично! спасибо за просвещение. жаль в мануале этого не было

            • Олег
              Олег
              23 Января 2012, 19:14
               ↑  +2  ↓     ответ

              НЕ РАБОТАЕТ! Как написали вы! Убираю no_html. Пишу в контроллере: JRequest::setVar('tmpl','raw'); Красная страница с текстом, что нет такого шаблона

              • Олег
                Олег
                23 Января 2012, 19:19
                 ↑  +3  ↓     ответ

                ВСЁ перепробовал! Только родимый no_html=1 спасает

                • smet.denis
                  smet.denis (админ)
                  23 Января 2012, 20:16
                   ↑  0  ↓     ответ

                  Читайте внимательнее то, что я писал выше. Все работает.

                  • Олег
                    Олег
                    23 Января 2012, 20:25
                     ↑  +2  ↓     ответ

                    Видимо вы скрываете что-то. Не работает у меня:

                    index.php?option=com_tranz&view=pokupka&layout=pokupka&tmpl=raw&id=45

                    и

                    index.php?option=com_tranz&view=pokupka&layout=raw&tmpl=raw&id=45

                    и

                    index.php?option=com_tranz&view=pokupka&tmpl=raw&id=45

                    Никак не работает!

                    Работает: index.php?option=com_tranz&view=pokupka&layout=pokupka&no_html=1&id=45

              • smet.denis
                smet.denis (админ)
                23 Января 2012, 20:57
                 ↑  +1  ↓     ответ

                raw.php файла есть в шаблоне? в нем должна быть объявлена единственная позиция <jdoc:include type="component" />

                в краце об это я написал выше. Читайте внимательнее про mytemplate

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.