0

そのため、現在の記事 (コードが配置されている記事) のエイリアスをデータベースから取得しようとしています。

現在の記事のカテゴリのエイリアスを取得するための PHP スニペットがあります。

<?php // Get category alias
$db = &JFactory::getDBO();            

$option   = JRequest::getCmd('option');
$view   = JRequest::getCmd('view');

$temp   = JRequest::getString('id');
$temp   = explode(':', $temp);
$id   = $temp[0];

/* Checking if we are making up an article page */
if ($option == 'com_content' && $view == 'article' && $id)
{            
   /* Trying to get CATEGORY alias from DB */
   $db->setQuery('SELECT cat.alias FROM #__categories cat RIGHT JOIN #__content cont ON cat.id = cont.catid WHERE cont.id='.$id);   
   $category_alias = $db->loadResult();           
}
?>

次に、変数$category_aliasを iframe の PHP 引数として使用します。これらはすべて、プラグイン DirectPHP を使用して記事に埋め込まれています。

私の問題は、このコードを書き直して、現在の CATEGORY の代わりに現在の ARTICLE のエイリアスを取得することです。

Joomla のドキュメントを読みましたが、記事のエイリアスを取得するために使用する必要があるテーブル/列について完全に困惑しています。

どんな助けでも大歓迎です!

4

1 に答える 1

2

多くのレガシー コードを使用しています。

  • リクエスト パラメータへのアクセスに JRequest を使用しないでください。
  • オブジェクトは参照ごとに割り当てられるため、オブジェクトには参照演算子 (&) を使用しないでください。
  • クエリ インターフェイスを使用します。
  • コードを SQL インジェクションから保護します。

探しているエイリアス値は、記事と共にコンテンツ テーブルに格納されます。

コードは、提案された修正とともに、次のようになります。

<?php
$input  = JFactory::getApplication()->input;
$option = $input->getCmd('option');
$view   = $input->getCmd('view');
$id     = array_shift(explode(':', $input->getString('id', 0)));

if ($option == 'com_content' && $view == 'article' && !empty($id))
{
    $db    = JFactory::getDBO();
    $query = $db->getQuery(true)
        ->select('alias')
        ->from('#__content')
        ->where('id=' . (int)$id);
    $db->setQuery($query);   
    $article_alias = $db->loadResult();           
}

これで、記事のエイリアスにアクセスできるようになります(ただし、ブロック$article_alias内のみです!)。if

于 2013-05-01T10:49:47.070 に答える