0

私の joomla プロジェクトには、いくつかの非表示のページがあります (そのページに直接アクセスできるメニューがないことを意味します)。一部のページがこのページにリダイレクトされています。

このコードを使用してこのページにアクセスしています

$app = JFactory::getApplication();
$app->redirect('index.php?option=com_package&view=testpage');

完璧に機能しています。

アプリケーションの SEF URL、URL サフィックス、URL 書き換えを有効にしました。しかし、これらのページ (適切なメニューがありません) には SEF URL が表示されません。ただし、そのページへのメニュー項目があるページには SEF URL が表示されます。

そこで、隠しメニューを追加し、そのメニューにこれらすべてのページを追加しました。しかし、SEF URL は表示されません。

それらのページへの SEF URL を有効にするためのアイデアはありますか?

助けてください よろしくお願いします

私の Router.php は次のようになります

defined('_JEXEC') or die;


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

    if (isset($query['task'])) {
        $segments[] = implode('/',explode('.',$query['task']));
        unset($query['task']);
    }
    if (isset($query['id'])) {
        $segments[] = $query['id'];
        unset($query['id']);
    }

    return $segments;
}

/**
 * @param   array   A named array
 * @param   array
 *
 * Formats:
 *
 * index.php?/gadmin/task/id/Itemid
 *
 * index.php?/gadmin/id/Itemid
 */
function GadminParseRoute($segments)
{
    $vars = array();

    // view is always the first element of the array
    $count = count($segments);

    if ($count)
    {
        $count--;
        $segment = array_pop($segments) ;
        if (is_numeric($segment)) {
            $vars['id'] = $segment;
        }
        else{
            $count--;
            $vars['task'] = array_pop($segments) . '.' . $segment;
        }
    }

    if ($count)
    {   
        $vars['task'] = implode('.',$segments);
    }
    return $vars;
}
4

2 に答える 2

0

ルーター経由で URL を渡していません。試す...

 $app->redirect(JRoute::_('index.php?option=com_package&view=testpage'));
于 2014-06-29T22:50:49.343 に答える
0

非表示のメニューは、位置がない/存在しない位置で公開されている (一時停止されていない) メニュー モジュールである必要があります。このようにJoomlaはそれを考慮します。メニュー項目も有効にする必要があります。

また、ビューは、必要に応じて同じパラメーターを使用して、view/tmpl フォルダー内の default.xml で設定する必要があります。

それでもうまくいかない場合は、router.php にエラーがある可能性があります。

于 2013-08-10T07:36:00.387 に答える