Bu joomla url oluşturmak için daha iyi bir yolu var mı?

1 Cevap php

Şimdiye kadar en çok rahatsız bir şekilde burada tekerleği yeniden icat ediyorum. Ben bu bir gün kırmak ve bana acı bir sürü neden olacağını boğazımda hissediyorum. Bu nedenle bir makale takma ad almak ve menü öğesi url veya makale url ya inşa etmek için daha iyi bir yol arıyorum. Bu kolay / temizleyici / daha geleceğe dönük yapmak hiçbir joomla API çağrıları var mı?

/* 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 Cevap

JRoute kullan? Hala bir takma ad ile başlıyoruz varsayarsak, bir daha 'Joomla' yolu böyle bir şey olabilir mi:

/* 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);
}

Docs for JRoute here: http://api.joomla.org/Joomla-Framework/JRoute.html

Bu da tırnak sizin takma adı vardı eğer alabilir sorunları kaçan SQL etrafında alır; o

Ben de size özel menü bağlantı istiyorsanız bahsetmeliyiz - Eğer olması gereken '& itemid =' JRoute geçti yolun ucunda biraz! Tabii ki, takma o itemid alınamıyor - aynı makale ;) işaret birden fazla menü öğeleri olabilir.