Помощь с Router.php

Тема в разделе "Вопросы по работе с меню", создана пользователем Nevea, 27.06.2012.

  1. Offline

    Nevea Недавно здесь

    Регистрация:
    27.06.2012
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Добрый день, имеется компонет easyblog
    Когда прикручиваю к главной странице сайта компонент easyblog (Шаблон главной страницы блога )то при переходе по ссылке на блог,он пытается открыть ее через главную,т.е. блог открывается с шапкой главной страницы.
    думаю проблема с router.php вот часть кода
    Код (PHP):
    1. <?php
    2. defined('_JEXEC') or die('Restricted access');
    3. require_once( JPATH_ROOT . DS . 'components' . DS . 'com_easyblog' . DS . 'constants.php' );
    4. require_once( EBLOG_HELPERS . DS . 'helper.php' );
    5. require_once( EBLOG_HELPERS . DS . 'router.php' );
    6. JTable::addIncludePath( EBLOG_TABLES );
    7. function EasyBlogBuildRoute(&$query)
    8. {
    9.     JFactory::getLanguage()->load( 'com_esyblog' , JPATH_ROOT );
    10.     $segments    = array();
    11.     $config        = EasyBlogHelper::getConfig();
    12.  
    13.     if(isset($query['view']) && $query['view'] == 'entry' && isset($query['id']) )
    14.     {
    15.         if( $config->get( 'main_sef' ) != 'simple' )
    16.         {
    17.             $segments[] = EasyBlogSEFTranslation::_( $query['view'] );
    18.         }
    19.  
    20.         $segments[]    = EasyBlogRouter::getBlogSefPermalink( $query['id'] );
    21.         unset($query['id']);
    22.         unset($query['view']);
    23.     }
    24.  
    25.     if(isset($query['view']) && $query['view'] == 'categories' && isset($query['id']))
    26.     {
    27.         $segments[] = EasyBlogSEFTranslation::_( $query['view'] );
    28.         if(isset($query['layout']))
    29.         {
    30.             $segments[] = EasyBlogSEFTranslation::_( $query['layout'] );
    31.         }
    32.  
    33.         $segments[]    = EasyBlogRouter::getCategoryPermalink( $query['id'] );
    34.         unset($query['id']);
    35.         unset($query['view']);
    36.         unset($query['layout']);
    37.     }
    38.     if(isset($query['view']) && $query['view'] == 'tags' && isset($query['id']) && isset($query['layout']) )
    39.     {
    40.         $segments[] = EasyBlogSEFTranslation::_( $query['view'] );
    41.         $segments[]    = EasyBlogSEFTranslation::_( $query['layout'] );
    42.         $segments[]    = EasyBlogRouter::getTagPermalink( $query['id'] );
    43.         unset($query['id']);
    44.         unset($query['view']);
    45.         unset($query['layout']);
    46.     }
    47. }
    48. function EasyBlogParseRoute( $segments )
    49.  
    50. {
    51.     JFactory::getLanguage()->load( 'com_esyblog' , JPATH_ROOT );
    52.  
    53.     $vars    = array();
    54.     $menu    = JFactory::getApplication()->getMenu();
    55.     $item    = $menu->getActive();
    56.     $config    = EasyBlogHelper::getConfig();
    57.  
    58.     //feed view
    59.     if(isset($segments[1]))
    60.     {
    61.         if( $segments[1] == 'rss' || $segments[1] == 'atom' )
    62.         {
    63.             $vars['view']    = $segments[0];
    64.             unset( $segments );
    65.             return $vars;
    66.         }
    67.     }
    68.  
    69.     // If user chooses to use the simple sef setup, we need to add the proper view
    70.     if( $config->get( 'main_sef' ) == 'simple' && count( $segments ) == 1 )
    71.     {
    72.         $files = JFolder::folders( JPATH_ROOT . DS . 'components' . DS . 'com_easyblog' . DS . 'views' );
    73.         $views = array();
    74.  
    75.         foreach( $files as $file )
    76.         {
    77.             $views[] = EasyBlogSEFTranslation::_( $file );
    78.         }
    79.  
    80.         if( !in_array( $segments[0] , $views ) )
    81.         {
    82.             array_unshift( $segments , EasyBlogSEFTranslation::_( 'entry' ) );
    83.         }
    84.     }
    85.  
    86.     if( isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_( 'entry' ) )
    87.     {
    88.         $count    = count($segments);
    89.  
    90.         $entryId    = '';
    91.         if( $config->get( 'main_sef_unicode' ) )
    92.         {
    93.             // perform manual split on the string.
    94.             $permalinkSegment   = $segments[ ( $count - 1 ) ];
    95.             $permalinkArr        = explode( ':', $permalinkSegment);
    96.             $entryId            = $permalinkArr[0];
    97.         }
    98.         else
    99.         {
    100.             $table            = EasyBlogHelper::getTable( 'Blog' , 'Table' );
    101.             $table->load( $segments[ ( $count - 1 ) ] , true );
    102.             $entryId        = $table->id;
    103.         }
    104.  
    105.         if( $entryId )
    106.         {
    107.             $vars[ 'id' ]    = $entryId;
    108.         }
    109.         $vars[ 'view' ]    = 'entry';
    110.     }
    111.     if( isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_( 'categories' ) )
    112.     {
    113.         $count    = count($segments);
    114.         if( $count > 1 )
    115.         {
    116.             $categoryId = '';
    117.             if( $config->get( 'main_sef_unicode' ) )
    118.             {
    119.                 // perform manual split on the string.
    120.                 $permalinkSegment   = $segments[ ( $count - 1 ) ];
    121.                 $permalinkArr        = explode( ':', $permalinkSegment);
    122.                 $categoryId         = $permalinkArr[0];
    123.             }
    124.  
    125.             $segments       = EasyBlogRouter::_encodeSegments($segments);
    126.  
    127.             if( empty( $categoryId ) )
    128.             {
    129.                 $table            = EasyBlogHelper::getTable( 'ECategory' , 'Table' );
    130.                 $table->load( $segments[ ( $count - 1 ) ] , true );
    131.                 $categoryId = $table->id;
    132.             }
    133.  
    134.             $vars[ 'id' ]    = $categoryId;
    135.  
    136.             if($count > 2)
    137.             {
    138.                 $vars['layout']    = 'listings';
    139.             }
    140.         }
    141.         $vars[ 'view' ]    = 'categories';
    142.     }
    143.    
    144.  
    145.     if( isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_( 'dashboard' ) )
    146.     {
    147.         $count    = count($segments);
    148.  
    149.         if( $count > 1 )
    150.         {
    151.             switch( EasyBlogSEFTranslation::_( $segments[1] ) )
    152.             {
    153.                 case EasyBlogSEFTranslation::_( 'write' ):
    154.                     $vars['layout']    = 'write';
    155.                 break;
    156.                 case EasyBlogSEFTranslation::_( 'profile' ):
    157.                     $vars['layout']    = 'profile';
    158.                 break;
    159.                 case EasyBlogSEFTranslation::_( 'drafts' ):
    160.                     $vars['layout']    = 'drafts';
    161.                 break;
    162.                 case EasyBlogSEFTranslation::_( 'entries' ):
    163.                     $vars['layout']    = 'entries';
    164.                 break;
    165.                 case EasyBlogSEFTranslation::_( 'comments' ):
    166.                     $vars['layout']    = 'comments';
    167.                 break;
    168.                 case EasyBlogSEFTranslation::_( 'categories' ):
    169.                     $vars['layout']    = 'categories';
    170.                 break;
    171.                 case EasyBlogSEFTranslation::_( 'category' ):
    172.                     $vars['layout']    = 'category';
    173.                 break;
    174.                 case EasyBlogSEFTranslation::_( 'tags' ):
    175.                     $vars['layout']    = 'tags';
    176.                 break;
    177.                 case EasyBlogSEFTranslation::_( 'review' ):
    178.                     $vars['layout']    = 'review';
    179.                 break;
    180.                 case EasyBlogSEFTranslation::_( 'pending' ):
    181.                     $vars['layout']    = 'pending';
    182.                 break;
    183.                 case EasyBlogSEFTranslation::_( 'teamblogs' ):
    184.                     $vars['layout']    = 'teamblogs';
    185.                 break;
    186.             }
    187.  
    188.  
    189.             if( isset($segments[2]) )
    190.             {
    191.                 $vars['filter']    = $segments[2];
    192.             }
    193.         }
    194.         $vars[ 'view' ]    = 'dashboard';
    195.     }
    196.     $count    = count($segments);
    197.     if( $count == 1 )
    198.     {
    199.         switch( EasyBlogSEFTranslation::_( $segments[0] ) )
    200.         {
    201.             case EasyBlogSEFTranslation::_( 'latest' ):
    202.                 $vars['view']    = 'latest';
    203.                 break;
    204.             case EasyBlogSEFTranslation::_( 'featured' ):
    205.                 $vars['view']    = 'featured';
    206.                 break;
    207.             case EasyBlogSEFTranslation::_( 'images' ):
    208.                 $vars['view']    = 'images';
    209.                 break;
    210.             case EasyBlogSEFTranslation::_( 'login' ):
    211.                 $vars['view']    = 'login';
    212.                 break;
    213.             case EasyBlogSEFTranslation::_( 'myblog' ):
    214.                 $vars['view']    = 'myblog';
    215.                 break;
    216.             case EasyBlogSEFTranslation::_( 'ratings' ):
    217.                 $vars['view']    = 'ratings';
    218.                 break;
    219.             case EasyBlogSEFTranslation::_( 'subscription' ):
    220.                 $vars['view']    = 'subscription';
    221.                 break;
    222.             case EasyBlogSEFTranslation::_( 'trackback' ):
    223.                 $vars['view']    = 'trackback';
    224.                 break;
    225.         }
    226.     }
    227.  
    228.     unset( $segments );
    229.     return $vars;
    230. }
    231.  
    232. class EasyBlogSEFTranslation
    233. {
    234.     public static function _( $val )
    235.     {
    236.         $config = EasyBlogHelper::getConfig();
    237.  
    238.         if( !$config->get( 'main_url_translation', 0) )
    239.             return $val;
    240.  
    241.         JFactory::getLanguage()->load( 'com_easyblog' , JPATH_ROOT );
    242.         $new    = JText::_( 'COM_EASYBLOG_SEF_' . strtoupper( $val ) );
    243.  
    244.         // If translation fails, we try to use the original value instead.
    245.         if( stristr( $new , 'COM_EASYBLOG_SEF_' ) === false )
    246.         {
    247.             return $new;
    248.         }
    249.  
    250.  
    251.         return $val;
    252.     }
    253. }

    как сделать так чтобы при переходе по ссылке виды
    http://mysite.ru/index.php/entry/названия_блога [​IMG]
    добавлял
    http://mysite.ru/index.php/название_категории/entry/названия_блога. [​IMG]
    смотрел много примеров с router.php, но никак не могу приделать к этому router Спасибо за любую помощь.
     
  2.  
  3. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 310
    Симпатии:
    375
    Пол:
    Мужской
    А в чем конкретно проблема? Если в модуле, то причем здесь роутер? Если в ссылках, то причем здесь модуль? Если это два вопроса, то... нарушение Правил. :)

    А вообще, EasyBlog 3.5 имеет кучу настроек ссылок.
     
  4. Offline

    Nevea Недавно здесь

    Регистрация:
    27.06.2012
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    черт вот попал и не отмажешься =Р
    в общем попытаюсь объяснить
    есть у меня главная страничка,на ней висят несколько модулей,на которых указано что только на главной, и контент easyblog(последние блоги) .
    При переходе на любой блог через (контент easyblog(последние блоги) . ) открывается страница с модулями от главной страницы, joomla считает что открыта главная страница. вот надеюсь хоть немного прояснил ситуацию
     
  5. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 310
    Симпатии:
    375
    Пол:
    Мужской
    Почитать про Itemid в Joomla - обязательно.
    Далее:
    - Доработать шаблон
    или
    - Поставить Advanced Module Manager и им настроить отображение модуля
     
    Последнее редактирование: 28.06.2012
  6. Offline

    Nevea Недавно здесь

    Регистрация:
    27.06.2012
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    я представляю что такое Itemid, и понимаю почему так получается что отображается модули, но не понимаю как можно изменить Itemid при переходе по блогу)за Modules Anywhere огромное спасибо, ща посмотрю и разберусь:)
     
  7. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 310
    Симпатии:
    375
    Пол:
    Мужской
    так не его надо менять, надо модуль скрывать. Этим и занимается Advanced Module Manager (я там ошибся :( )

    Возможно Itemid можно поменять, назначив категориям блога пункт меню. Т.е. у главной будет один Itemid, у категорий - другие. В EasyBlog 3+ даже параметр ввели, чтобы избежать такого поведения, - принудительный Itemid для всего блога.
     
    Последнее редактирование: 28.06.2012
    Nevea нравится это.
  8. Offline

    Nevea Недавно здесь

    Регистрация:
    27.06.2012
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо, разобрался поменял Itemid в настройках easyblog
     

Поделиться этой страницей

Загрузка...