Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 4016 Просмотров
*

Павел Зотов

  • Moderator
  • 166
  • 28 / 5
com_autobb и opensef
« : 27.05.2007, 20:43:09 »
Меня очень бесило то, что opensef не поддерживает такую фишку: если создается несколько пунктов меню для одного и того же компонента, то для них нельзя сделать разные урлы.
Сразу оговорюсь, я использовал openSEF RC5 SP2. Про другие версии не знаю, поэтому, возможно, в них-то все работает нормально.

Приведу пример, само собою, про autobb.
Можно создать несколько пунктов меню, например, "Легковые автомобили", "Грузовики", "Автобусы" и "Мотоциклы". В настройках openSEF для них указываем урлы avto/, grusoviki/, avtobusy/ и moto/ соответственно. Но у всех пунктов меню теперь ссылка avto/. Т.е. openSEF смотрит только на option, не учитывая значение Itemid. Косяк.
Мириться с этим мне как-то не хотелось и я решил переписать openSEF "под себя". Минут пять поковырявшись, обнаружил, что разработчики эту функцию предусмотрели, но по какой-то причине, menu_id (внутренняя переменная, отвечающая за привязку к Itemid) перетирается. Очень похоже, что разработчики забыли вписать else.
Итак, файл administrator/components/com_sef/core/sef.rewriter.php
функция rewriteNoCache (строка ~134)
было так:
Код
      if (ereg( '&Itemid=([0-9]+)', $url, $matches )) {
        $menu_id = $matches[1];
      }
      $query = "SELECT id FROM #__menu WHERE link = 'index.php?option=com_".$component."'";
      $database->setQuery($query);
      $temp_id = $database->loadResult();
      if ( ( $temp_id != 1 ) && ( $temp_id != 99999999 ) && ( $temp_id != '' ) && ( $component != 'frontpage' ))
         $menu_id = $temp_id;
Я дописал else и получилось так:
Код
      if (ereg( '&Itemid=([0-9]+)', $url, $matches )) {
        $menu_id = $matches[1];
      } else {
        $query = "SELECT id FROM #__menu WHERE link = 'index.php?option=com_".$component."'";
        $database->setQuery($query);
        $temp_id = $database->loadResult();
        if ( ( $temp_id != 1 ) && ( $temp_id != 99999999 ) && ( $temp_id != '' ) && ( $component != 'frontpage' ))
          $menu_id = $temp_id;
      }
Теперь в меню нормально показываются avto/, gruzoviki/ и т.д.

Если это действительно баг в openSEF, то возможно, userxp передаст разработчикам. Если нет, то может кто-нибудь подскажет другое решение?
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: com_autobb и opensef
« Ответ #1 : 29.05.2007, 09:51:50 »
"позовите Гоги, он передаст" ;)
передать-то я могу, но это на текущий момент ничего не даст.

насчёт бага ничего не скажу, ибо не пробовал
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[FAQ] Проблемы с фото в com_autobb

Автор stin

Ответов: 145
Просмотров: 51984
Последний ответ 13.01.2013, 23:52:58
от Alex Revo
com_autobb и ЧПУ

Автор proger1988

Ответов: 3
Просмотров: 1704
Последний ответ 12.03.2011, 12:00:54
от Alex Revo
в панели управления иду Компоненты затем Com_AutoBB выбираю инструменты и выходит список установок:

Автор altyn

Ответов: 2
Просмотров: 2321
Последний ответ 27.05.2009, 14:32:26
от altyn
Ошибка при настройке компонента com_autobb

Автор pabi

Ответов: 40
Просмотров: 8763
Последний ответ 03.09.2008, 22:02:02
от dmsoh
Как установить com_autoBB

Автор alexis053

Ответов: 1
Просмотров: 2514
Последний ответ 04.05.2008, 06:53:27
от MOHCTPUK