MVCコンポーネントJoomla 3でのSEO URLサポート

カタログコンポーネントの場合、美しいリンクを整理する必要があります。 このために何をする必要があるかを、生きた例で説明します。 記事は外出先で書かれています。 私はコードを書いてテストしていますが、すべてがうまくいったら、記事を追加しています。



最初に、コンポーネントフォルダー(/components/com_catalog/router.php)にrouter.phpを作成する必要があります。



URLを生成する関数を追加します:



function catalogBuildRoute(&$query) { $segments = array(); if (isset($query['view'])) { $segments[] = $query['view']; unset($query['view']); } if (isset($query['id'])) { $segments[] = $query['id']; unset($query['id']); }; return $segments; }
      
      





2番目の関数は、URLをそのコンポーネント部分に解析します。



 function catalogParseRoute($segments) { $vars = array(); switch($segments[0]) { case 'catalog': $vars['view'] = 'catalog'; break; case 'item': $vars['view'] = 'item'; $id = explode(':', $segments[1]); $vars['id'] = (int) $id[0]; break; } return $vars; }
      
      





コンポーネントでURLを生成する:



JRoute :: _( 'index.php?View = item&id ='。$ Row-> id);



これで、コンポーネントはフォーム/カタログ/アイテム/ 1のリンクを理解します



これはドキュメントの例です。 より興味深いタスクのために変更します。



ユーザーが指定したURLに置き換える必要があります。

このURLはディレクトリテーブルに保存されます。



要素をプルする別の関数を追加します。



 function getCatalogItemByRow($row, $value){ $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('id, url'); $query->from($db->quoteName('#__catalog')); $query->where($db->quoteName($row)." = ".$db->quote($value)); $db->setQuery($query); return $db->loadRow(); }
      
      





したがって、解析関数は次のようになります。



 function catalogParseRoute($segments) { $vars = array(); $vars['view'] = 'catalog'; if($segments[0]!="catalog"){ $item = getCatalogItemByRow("url",$segments[0]); if(isset($item['1']) && $item['1']) { $vars['view'] = 'item'; $vars['id'] = (int) $item['0']; } } return $vars; }
      
      







リンク/カタログ/ test_aliasをクリックすると、目的のページが開きます。



URLを生成する関数は次のようになりました。



 function catalogBuildRoute(&$query) { $segments = array(); unset($query['view']); if (isset($query['id'])) { $id = (int) $query['id']; if($id){ $item = getCatalogItemByRow("id",$id); $segments[] = $item['1']; unset($query['id']); } } return $segments; }
      
      







JRoute :: _( 'index.php?View = item&id = 1'); 必要なurl / catalog / test_aliasを提供します。



よろしくお願いします!



All Articles