2012-11-19 3 views
-1

Joomla 1.5의 표준 SEF를 사용하면 다음과 같은 링크가 있습니다 : mysite.com/news/36-good-news-tooday. URL에서 기사 ID를 제거하고 다음과 같이하십시오 : mysite.com/news/good-news-today.Joomla 1.5에서 URL에서 기사 ID를 제거 하시겠습니까?

참고 : 즉, HP 라우터 등의 플러그인을 사용하고 싶지 않습니다. Joomla 자신의 SEF를 편집하고 싶습니다.

UPD : 마지막으로 나는 desicion을 발견했습니다. 여기에 router.php의 전체 목록은, 당신은 components/com_content

<?php 
/** 
* @version  $Id: router.php 14401 2010-01-26 14:10:00Z louis $ 
* @package  Joomla 
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. 
* @license  GNU/GPL, see LICENSE.php 
* Joomla! is free software. This version may have been modified pursuant 
* to the GNU General Public License, and as distributed it includes or 
* is derivative of works licensed under the GNU General Public License or 
* other free or open source software licenses. 
* See COPYRIGHT.php for copyright notices and details. 
*/ 

function ContentBuildRoute(&$query) 
{ 
    $segments = array(); 
$menu = &JSite::getMenu(); 
if (empty($query['Itemid'])) { 
    $menuItem = &$menu->getActive(); 
} else { 
    $menuItem = &$menu->getItem($query['Itemid']); 
} 
$mView = (empty($menuItem->query['view']))? null : $menuItem->query['view']; 
$mCatid = (empty($menuItem->query['catid']))? null : $menuItem->query['catid']; 
$mId = (empty($menuItem->query['id']))? null : $menuItem->query['id']; 

if(isset($query['task'])) { 
    return $segments; 
} 

if(isset($query['view'])) 
{ 
    $view = $query['view']; 
    if(empty($query['Itemid'])) { 
     $segments[] = $query['view']; 
    } 
    unset($query['view']); 
}; 

if (($mView == 'article') and (isset($query['id'])) and ($mId == intval($query['id']))) { 
    unset($query['view']); 
    unset($query['catid']); 
    unset($query['id']); 
} 

if (isset($view) and ($view == 'section' && !empty($query['Itemid']))) { 
    if (($mView != 'section') or ($mView == 'section' and $mId != intval($query['id']))) { 
     $segments[] = 'section'; 
     unset($query['Itemid']); 
    } 
} 

if (isset($view) and $view == 'category') { 
    if ($mId != intval($query['id']) || $mView != $view) { 
     $temp = explode(':',$query['id']); 
     if(count($temp) > 1) 
     { 
      $query['id'] = $temp[1]; 
     } 

     $segments[] = $query['id']; 
    } 
    unset($query['id']); 
} 

if (isset($query['catid'])) { 

    if ((($view == 'article') and ($mView != 'category') and ($mView != 'article') and ($mCatid != intval($query['catid'])))) { 
     $temp = explode(':',$query['catid']); 
     if(count($temp) > 1) 
     { 
      $query['catid'] = $temp[1]; 
     } 

     $segments[] = $query['catid']; 
    } 
    unset($query['catid']); 
}; 

if(isset($query['id'])) { 
    if (empty($query['Itemid'])) { 
     $temp = explode(':',$query['id']); 
     if(count($temp) > 1) 
     { 
      $query['id'] = $temp[1]; 
     } 

     $segments[] = $query['id']; 
    } else { 
     if (isset($menuItem->query['id'])) { 
      if($query['id'] != $mId) { 
       $temp = explode(':',$query['id']); 
       if(count($temp) > 1) 
       { 
        $query['id'] = $temp[1]; 
       } 

       $segments[] = $query['id']; 
      } 
     } else { 
      $temp = explode(':',$query['id']); 
      if(count($temp) > 1) 
      { 
       $query['id'] = $temp[1]; 
      } 

      $segments[] = $query['id']; 
     } 
    } 
    unset($query['id']); 
}; 

if(isset($query['year'])) { 

    if(!empty($query['Itemid'])) { 
     $segments[] = $query['year']; 
     unset($query['year']); 
    } 
}; 

if(isset($query['month'])) { 

    if(!empty($query['Itemid'])) { 
     $segments[] = $query['month']; 
     unset($query['month']); 
    } 
}; 

if(isset($query['layout'])) 
{ 
    if(!empty($query['Itemid']) && isset($menuItem->query['layout'])) { 
     if ($query['layout'] == $menuItem->query['layout']) { 

      unset($query['layout']); 
     } 
    } else { 
     if($query['layout'] == 'default') { 
      unset($query['layout']); 
     } 
    } 
}; 

return $segments; 
} 

function ContentParseRoute($segments) 

{ 
    $vars = array(); 

$menu =& JSite::getMenu(); 
$item =& $menu->getActive(); 
$db =& JFactory::getDBO(); 
$count = count($segments); 


if(!isset($item)) 
{ 
    $vars['view'] = $segments[0]; 
    $vars['id'] = $segments[$count - 1]; 
    if($vars['view'] == 'article') 
    { 
     $query = 'SELECT id FROM #__content WHERE alias = '.$db->Quote($vars['id']); 
    } elseif($vars['view'] == 'category') { 
     $query = 'SELECT id FROM #__categories WHERE section > 0 && alias = '.$db->Quote($vars['id']); 
    } 
    $db->setQuery($query); 
    $vars['id'] = $db->loadResult(); 
    return $vars; 
} 

switch($item->query['view']) 
{ 
    case 'section' : 
    { 
     if($count == 1) { 
      $vars['view'] = 'category'; 

      if(isset($item->query['layout']) && $item->query['layout'] == 'blog') { 
       $vars['layout'] = 'blog'; 
      } 
     } 

     if($count == 2) { 
      $vars['view'] = 'article'; 
      $vars['catid'] = $segments[$count-2]; 
     } 

     $vars['id'] = $segments[$count-1]; 

    } break; 

    case 'category' : 
    { 
     $vars['id'] = $segments[$count-1]; 
     $vars['view'] = 'article'; 

    } break; 

    case 'frontpage' : 
    { 
     $vars['id'] = $segments[$count-1]; 
     $vars['view'] = 'article'; 

    } break; 

    case 'article' : 
    { 
     $vars['id'] = $segments[$count-1]; 
     $vars['view'] = 'article'; 
    } break; 

    case 'archive' : 
    { 
     if($count != 1) 
     { 
      $vars['year'] = $count >= 2 ? $segments[$count-2] : null; 
      $vars['month'] = $segments[$count-1]; 
      $vars['view'] = 'archive'; 
     } else { 
      $vars['id'] = $segments[$count-1]; 
      $vars['view'] = 'article'; 
     } 
    } 
} 

$alias = explode(':', $vars['id']); 
if((int) $alias[0] > 0) 
{ 
    $vars['id'] = $alias[0]; 
} else { 
    if(count($alias) > 1) 
    { 
     $vars['id'] = $alias[0].'-'.$alias[1]; 
    } 

    if($vars['view'] == 'article') 
    { 
     $query = 'SELECT id FROM #__content WHERE alias = '.$db->Quote($vars['id']); 
    } elseif($vars['view'] == 'category') { 
     $query = 'SELECT id FROM #__categories WHERE section > 0 && alias = '.$db->Quote($vars['id']); 
    } 
    $db->setQuery($query); 
    $vars['id'] = $db->loadResult(); 
} 

return $vars; 
} 

내가 저자 아니에요에서 찾을 수 이십 기가 바이트! 라우터 코드가 Marvin Ryan에 의해 수정되었습니다.

이 코드는 대부분의 경우 완벽하게 작동합니다. 하지만 JoomFish 언어 토글에 몇 가지 문제가 있습니다. 링크가 www.mysite.com/news/22 과 같이 있습니다. 따라서 기사 별칭이 아닌 기사 ID 만 얻습니다. 이 문제는 여전히 실제입니다!

답변

-1

모든 기사의 메뉴 항목을 만듭니다.

+0

죄송합니다. 그러나이 방법은 저에게 효과적이지 않습니다. 1000 개 이상의 기사가 있으므로 모든 기사를위한 메뉴를 만드는 가장 좋은 방법은 아니라고 생각합니다. – pgasovav

+0

실용적이라고 말하지는 않았지만 사실 그것이 당신이하는 방법입니다. 메뉴 항목이 있으면 URL에 ID가 표시되지 않습니다. 또는 각 최상위 카테고리에 대한 메뉴 항목을 만드십시오. 이것은 사용자가 표시하는 메뉴에있을 필요는 없습니다. 그러면 메뉴 항목 정보가 각 범주 내의 모든 기사와 범주에 적용됩니다. 단점은 당신이 원하지 않을 수도있는 카테고리 구조를 포함하는 URL을 얻을 것이라는 점입니다. 찾고있는 URL에 따라 각 카테고리에 대한 메뉴 항목을 만들 수 있습니다. – Elin

+0

사실 내 의견은 2.5/3에 더 많이 적용되지만 원칙은 1.5에서 동일합니다. 1.5에서는 각 섹션에 대한 메뉴 항목을 만듭니다. – Elin

관련 문제