1

I am creating a component but need to redirect all incoming requests to the new component. The URL looks like this currently: index.php?option=com_component&view=xxx and when this comes in I want to replace com_component into com_newcomponent, all internal views are the same.

Is this possible by a simple plugin?

2 Answers 2

1
/**
 * Fucntionality which needs to be triggered on After the system has been loaded.
 *
 * @since 1.0.0
 */
public function onAfterInitialise()
{
    $app = JFactory::getApplication();

    // Frontend only, otherwise return.
    if(!$app->isClient('site'))
    {
        return false;
    }

    $router = $app->getRouter();
    $callback = array($this, 'buildRoute');

    $router->attachBuildRule($callback);
}

public function buildRoute($router, $uri)
{
    $routerClone = clone $router;
    $vars= $routerClone->parse($uri);

    if($vars['option'] == 'com_component1' && $vars['view'] == 'update')
    {
        $uri->setVar('option', 'com_component_new');

    }
}
1
  • But this url is for the Joomla updater so it is not always a SEF URL. Does this still work then?
    – Robert Dam
    Commented Jun 19, 2017 at 12:59
0

You can use a simple system plugin, with the event onAfterInitilization() do some very basic checks, e.g. isAdmin, is the component com_component used and if so do the redirect there

2
  • I was writing this but the old url is being kept and viewed an I want to redirect it to the new space
    – Robert Dam
    Commented Jun 19, 2017 at 12:49
  • Found an answer in the yireo plugins book. Always useful a book from Jisse
    – Robert Dam
    Commented Jul 7, 2017 at 11:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.