This and This (Joomla v6)

Installation

Test template

  • Install JoomShaper Savor Template with quickstart
  • Update

Prepare production site

  • Install Joomla v6
  • If you want to access your new site with the same user credentials as other sites (e.g. using the same 2FA - 2 factor authentication) you need to change the user's ID to the same ID of other sites. Do this before adding any content to reduce dependencies to a minimum. You can do that by changing the ID in the following tables in phpMyAdmin, and don't forget to reset the AUTO_INCREMENT value on the updated table:
    query example: UPDATE `thisandthis_guidedtour_steps` SET `modified_by` = 105;
    #__users
    #__user_profiles
    #__user_usergroup_map
    #__action_logs
    #__categories
    #__guidedtours
    #__guidedtour_steps
    #__scheduler_tasks
    #__tags
    #__workflows
  • Copy table #__user_mfa from your other site to your new site in phpMyAdmin
  • Copy and replace line public $ Secret from your other site's configuration.php to your new site's configuration.php
  • Install JoomShaper Savor Template

Common

  • Install Akeeba Backup
  • Install Akeeba Admin Tools
  • Disable module “Menu Button” in menu position
  • mod_bethico_languages
    • Install mod_bethico_languages in menu position
      • Colors: --bs-list-group-active-bg, --bs-list-group-active-border-color
    • Modify line 62 of /templates/savor/headers/3-MinimalLayout/header.php (remove align-items-center):
      <div class="sp-column d-flex justify-content-start">
    • Add the following code to mod_bethico_languages/js/bethico.switcher.js:
      // Select the child element
      const child = document.querySelector('.bethico-switcher');
      
      // Add the class to its direct parent
      child.parentElement.parentElement.classList.add('ms-auto');
    • Add the following code to mod_bethico_languages/css/bethico.languages.css:
      /* Helix Ultimate */
      .sp-module-content > .bethico-switcher {
          margin-top: 24px;
      }
      /* cassiopeia */
      .container-search {
          height: 73px;
          padding-top: 20px;
      }
    • Change span-element to div-element in modules/mod_bethico_languages/tmpl/default.php
    • Add the following code to templates/savor/css/custom.css:
      @import url("/media/mod_bethico_languages/css/bethico.languages.css'');
    • Disable loading the css file in module settings
  • Modify line 85 and 129 of /templates/savor/features/logo.php:
     85: $custom_logo_class = ' d-none d-md-inline-block';
    129: $html .= '<img class="logo-image-phone d-inline-block d-md-none" src="'.
  • Set logo height to 62px in Helix Ultimate.
  • Set Sticky offset to 0
  • Module mod_bethico_contact_form
  • The module developed for Joomla v4 still works out of the box, but you need to make sure that Module –> Enable Captcha and Email Options –> Cleanup are disabled.
  • Fix Calendar field:
    • /modules/mod_bethico_contact_form/layouts/fields/calendar.php
    • /media/bethico/css/bethico.contactform.css
  • Change the language strings to avoid issues when later upgrading v4 to v6 of the module.
    • download Rajdhani woff2 fonts (or any other font to be loaded locally)
    • go to Settings of OD Local Fonts component and enable Helix Ultimate and SP Page Builder integration
    • change all fonts in your SP Page Builder pages

Prepare content in SP Page Builder Pro

  1. In the SP Page Builder page of your test site: Create a section to be designed. When it's finished delete all unused elements, then save the section.
  2. Go to phpMyAdmin and copy the last row in table #__sppagebuilder_sections of the production site. Edit this row and replace the content of field section with the content of field section of the newly saved section in the test site. Make sure you have given the new row a title for easy identification.
  3. In the SP Page Builder page of your production site: Open Saved Items on the left and drag the newly created section to the desired position. You might need to close and open the page first for the Saved Items to update.

Move categories and articles

I decided to start a new Joomla 6 site with a fresh install and transfer the previous site's categories and articles to the new site. I did not use an extension or tool to do that, so I have full control on what's going on. Previous site: Joomla 4.4.14, new site: Joomla 6.1.4. The following steps are what you need to do. (taken from Chrome query how can i copy articles and categories from one joomla installation to another)

  1. Ensure all the languages used on your previous site are installed, active, and published as Content Languages.
  2. Take a backup of both sites.
  3. Export Tables: Open phpMyAdmin on your old site and export the following tables as SQL files:
    #__categories
    #__content
    #__associations
    #__workflow_associations
    #__fields # optional if you use Custom Fields
    #__tags # optional if you use Tags
  4. If you have set the user ID to the same ID used on the previous site as explained in Prepare production site you don't need to do anything. If not, you need to change the created_by and modified_by user ID fields in all tables to a new site's valid user ID.
  5. In #__categories and #__content you need to set the asset_id to 0. You can do this with:
    UPDATE #__content SET asset_id = 0;
    UPDATE #__categories SET asset_id = 0;
  6. Rebuild the Assets & Category Tree. Joomla relies on a “Nested Set” model to track layout hierarchies. Direct database injections disrupt this tree, so you must repair it from the administrator dashboard.
    1. Log into your Joomla 6 Backend.
    2. Go to Content ➔ Categories.
    3. Select your categories and click the Rebuild button in the top toolbar. (This generates fresh nested assets in the database for the categories).
    4. Go to Content ➔ Articles.
    5. Change the list view filter at the bottom right to display All or 200 items so all 195 articles fit on a single page.
    6. Click the master checkbox at the very top of the column to select all 195 articles.
    7. Click the Batch button in the top toolbar.
    8. In the batch popup menu, under Set Access Level, select Public (or whatever your default article access level is). Do this even if all articles are already set to Public.
    9. Click Process
    10. Why this works: By executing a batch action on the selected articles, you trick Joomla into running its core save sequence (Table::store) on all 195 rows simultaneously. Joomla will look at the asset_id = 0, realise the permissions mapping is missing, and automatically calculate and inject the correct, matching asset_id values directly into your Joomla 6 database.
  7. Transfer the Images. Database tables only hold text and file paths. You must manually copy your media files.
    1. Connect via FTP or your hosting File Manager.
    2. Download the images directory from your Joomla 4 root folder.
    3. Upload and merge those files into the images directory of your new Joomla 6 installation.