Skip to content

Migrating to v2.4x

Hitesh Aggarwal edited this page Oct 7, 2020 · 4 revisions

Astroid v2.4.x released with some major changes in the entire project and a large section of users are facing a lot of breaks on their website. Especially those users who ever edited the files of the TEMPLATE_PATH/html/frontend folder.

With v2.4.x, we aim to have no dependencies on template level and also have no breaking changes. However, things don’t always go as planned.

The reason for so many breaks, is major rewrite in the core library of Astroid, which was very important to keep in mind the future of framework. Here are some most important changes are summarized below that you should be aware while moving from v2.3.x to v2.4.x.

  1. Update Your Template

    As all the dependencies have been moved from the template to the framework level, then we do not need some of these things, if we have not written some custom code in it. Also, Joomdev has release all of its templates with Astroid 2.4.x compatibility. You can also update your Astroid based template using folllowing steps.

    • Remove astroid and bootstrap folders from scss
    • Remove @import of astroid and bootstrap and dependencies from style.scss
    • Move frontend folder to html/frontend
    • Remove files from frontend folder those never customized or edited.
    • Change index.php code.
    • Template folder structure.
    • Remove options folder from astroid folder
    • Remove vendor, jui folders and script.js file from js folder
  2. Update Frontend

    • If you are using following classes AstroidFramework, AstroidFrameworkTemplate, AstroidFrameworkHelper, AstroidFrameworkConstants, AstroidMenu in your code then you must update these library code before getting completely depriciate. See Using Astroid\Framework

    • All following jimport are depriciated.

      jimport('astroid.framework.astroid');
      jimport('astroid.framework.menu');
      jimport('astroid.framework.template');
      jimport('astroid.framework.helper');
      jimport('astroid.framework.constants');

      Use below code instead:

      use Astroid\Framework; // using namespace
      
      $template = Framework::getTemplate();
      $document = Framework::getDocument();
    • Getting Template Params

      In frontend folder, Old code:

      $value = $template->params->get('variable', 'default');

      New Code:

      $template = Astroid\Framework::getTemplate();
      $params = $template->getParams();
      $value = $pamams->get('variable', 'default');
    • Loading sublayout

      Old Way:

      jimport('astroid.framework.template');
      $template = new AstroidFrameworkTemplate();
      $template->loadLayout('header.sticky', true);

      New Way:

      use Astroid\Framework;
      
      $document = Framework::getDocument();
      $document->include('header.sticky');
    • Using Menu

      Old code:

      jimport('astroid.framework.menu');
      AstroidMenu::getMenu(ARGUMENTS);

      New code:

      use Astroid\Component\Menu;
      Menu::getMenu(ARGUMENTS);

NOTE: This document is still in progress. Please be in touch to stay updated.