2009-11-11 5 views
2

지금까지 가장 불편한 방식으로 휠을 다시 발명했습니다. 나는 이것이 내게있어서 언젠가는 깨어 나에게 많은 고통을 줄 것이라고 느낄 수있다. 따라서 기사 별칭을 가져와 메뉴 항목 URL 또는 기사 URL을 만드는 더 좋은 방법을 찾고 있습니다. 더 쉽고/더 깨끗하고/미래를 보장 할 수있는 joomla API 호출이 없습니까?이 joomla URL을 구축하는 더 좋은 방법이 있습니까?

/* Find article by alias */ 
$db =& JFactory::getDBO(); 
$sql = 'select id from #__content where alias=' . "'$alias'"; 
$db->setQuery($sql); 
$row = $db->loadAssoc(); 
$artId = $row['id']; 
if ($artId != null) { 
    $artLink = 'index.php?option=com_content&view=article&id='.$artId; 
    /* Find menu item by article id */ 
    $sql = 'select parent,alias from #__menu where link=' . "'$artLink'"; 
    $db->setQuery($sql); 
    $row = $db->loadAssoc(); 
    $menuLink = ''; 
    while ($row != null) { 
    $menuLink = '/' . $row['alias'] . $menuLink; 
    $sql = 'select parent,alias from #__menu where id=' . $row['parent']; 
    $db->setQuery($sql); 
    $row = $db->loadAssoc(); 
    } 
    $menuLink = 'index.php' . $menuLink; 
    } 

$articleUrl = ($menuLink != '') ? 'index.php' . $menuLink : JRoute::_($artLink); 
+1

아마 Joomla API 라우터가 아직 도움이되지 않는다는 것을 원하는대로 확장 할 수 있습니까? –

답변

1

JRoute를 사용 하시겠습니까? 여기 JRoute에 대한

/* Find article by alias */ 
$db =& JFactory::getDBO(); 
$sql = 'select id from #__content where alias=' . $db->quote($alias); 
$db->setQuery($sql); 
$row = $db->loadAssoc(); 
$artId = $row['id']; 
if ($artId != null) { 
    $articleUrl = JRoute::_('index.php?option=com_content&view=article&id=' . $artId); 
} 

문서 도구 : 당신은 여전히 ​​별칭으로 시작하고 가정보다 '줌라'방법은 같은이 할 수있는 일을 할 이것은 또한 SQL 이스케이프 문제의 주위에 얻을 수 http://api.joomla.org/Joomla-Framework/JRoute.html

을 당신 별칭에 따옴표가 있으면 얻을 수 있습니다.

메뉴 링크를 구체적으로 사용하려면 '& itemid ='비트를 JRoute에 전달 된 끝에 사용해야합니다. 물론 별칭에서 itemid를 가져올 수 없습니다. 동일한 기사를 가리키는 여러 메뉴 항목이있을 수 있습니다.