1

コンポーネントと Joomla の SEF リンクに問題があります。JRequest::getVar元の URL ( で指定JRoute::_)から変数を取得するために使用しようとしています。

私のrouter.phpファイルは次のようになります。

function PortfolioBuildRoute(&$query)
{
    $segments = array();

    if (isset($query['category'])) {
        $segments[] = $query['category'];
        unset($query['category']);
    }
    if (isset($query['subcategory'])) {
        $segments[] = $query['subcategory'];
        unset($query['subcategory']);
    }
    return $segments;
}

function PortfolioParseRoute($segments)
{
    $vars = array();
    $count = count($segments);

    if ($count) {
        $count--;
        $segment = array_shift($segments);
        if (is_numeric($segment)) {
            $vars['subcategory'] = $segment;
        } else {
            $vars['category'] = $segment;
        }
    }
    if ($count) {
        $count--;
        $segment = array_shift($segments) ;
        if (is_numeric($segment)) {
            $vars['subcategory'] = $segment;
        }
    }
    return $vars;
}

私がエンコードしている URL はもともと次のように見え index.php?option=com_portfolio&category=x&subcategory=yJRoute::_それを に変換し/portfolio/x/yます。今必要なのは、URL がエンコードされた後に変数xyを取得する方法です。

- - 編集 - -

わかりましたので、router.php ファイルの ParseRoute 部分を次のように変更しました。

function PortfolioParseRoute($segments)
{
    $vars = array();
    $vars['category'] = str_replace(":", "-", $segments[0]);
    $vars['subcategory'] = str_replace(":", "-", $segments[1]);
    return $vars;
}

router.php ファイルの理解が少し深まったように感じます。JRoute が URL のハイフンをコロンに変換することがわかりました。なぜそれが貧弱なハイフンを選ぶのか、よくわかりません.JRouteのいじめっ子です。URL でアンダースコアを使用することもできますが、それは正常に機能しますが、ハイフンはアンダースコアよりも SEO に優れています。

これを整理するために、ParseRoute の各セグメントで str_replace を使用しました。

これが正しい標準的な方法であるかどうかはわかりませんが、私は Joomla と PHP の初心者なので、別の方法でアドバイスされるまで実行する必要があります。

少なくともそれは機能します!

:)

4

0 に答える 0