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

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

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

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

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

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

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

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

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

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

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

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

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

      почитайте про идеологию http://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
           ↑  -3  ↓     ответ

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

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

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

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

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

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

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

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

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

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

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

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

              Параметр я предложил вам добавлять в ссылку, например так http://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
                   ↑  -1  ↓     ответ

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

                  /components/com_users/users.php

                  /components/com_users/controllers/*

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Элементарный поиск по 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
             ↑  0  ↓     ответ

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

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

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

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

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

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

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

                  • Олег
                    Олег
                    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
.