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
  • Setup all content with Rajdhani font and correct font sizes and weights
  • Install plg_system_bethicofa
  • For the menu, add the Saved Item Menu Tabs, then Duplicate a tab within the Tabs Element's settings
  • Copy default.php from mod_bethico_legal to /templates/savor/html/ and chmod 444 default.php
  • Go to Content –> Articles –> Options –> Editing Layout and change URL A Target Window to Open in new window
  • Thai language extension version 6.0.0 contains a bug in that it is still using JText. Find file localise.php in both the site and the administrator language folder and add the following to the top of the file:
    use Joomla\CMS\Language\Text as JText;

Todo

  1. Modify calendar in mod_bethico_contact_form
  2. German and Thai language for mod_bethico_contact_form
  3. Preset time 1 hour from now, no dates in the past for mod_bethico_contact_form
  4. minify css of all bethico extensions
  5. German language for mod_bethico_accordion
  6. Get correct IP address behind reverse proxy
  7. Info should include dog friendly
  8. Thai label missing in mod_bethico_languages flags
  9. Translations for mod_bethico_social
  10. #wiki-content formatting
  11. Legal documents in German & Thai
  12. Imprint images
  13. FAQ Food
  14. FAQ Drinks and Wine
  15. Links to FAQ
  16. Template Thai
  17. Template German
  18. Foto gallery
  19. Go through all news and check links to images
  20. Check all spaces of columns which render in one column on phone / tablet

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.

Non-SP Page Builder Pro pages with Helix Ultimate

  • Issue: if i point the menu entry to sp page builder pro page everything is fine. if i point it to another component, it breaks the main menu.
    This is a known issue where Helix Ultimate fails to load its Mega Menu script or CSS on non-SP Page Builder pages, or encounters a Template Style assignment bug. When you load an SP Page Builder page, the necessary framework styles are forced to load; on core Joomla components (like Articles, Contacts, or third-party extensions), they fail to load, breaking the menu layout. Apply the following steps to resolve this issue:
  • Fix the Database Template ID Bug (Most Common). If Helix is assigned to “Use Default” but doesn't accurately pass its ID to core pages, it looks for layout files in the wrong directories, breaking menu components.
    1. Open your hosting panel and access phpMyAdmin.
    2. Open your Joomla database and look for the #__menu table (e.g., jos_menu or xyz_menu).
    3. Locate the specific menu item that is breaking.
    4. Check the template_style_id column for that row. If it is set to 0 or blank, change it explicitly to match your exact Helix Ultimate Template Style ID (you can find this ID number next to your default template under System → Site Templates in your Joomla backend).
  • Disable Aggressive Javascript/CSS Optimization. Helix Ultimate's compression system frequently conflicts with component scripts on standard pages, breaking menu behaviors.
    1. Go to System → Site Template Styles → Open Helix Ultimate.
    2. Click on Advanced tab → Look for CSS Compression and JS Compression.
    3. Turn both OFF, click Save, and clear your cache.
    4. Note: If you use third-party tools like JCH Optimize, they will completely break Helix menus if Helix's built-in compression is also running.
  • Check Menu Assignment in the Template Settings. Sometimes the template layout isn't bound globally across all components.
    1. Inside the Helix Ultimate template options, go to the Menu configuration.
    2. Ensure that your Main Menu is explicitly chosen from the dropdown list.
    3. Switch over to the Assignment tab within that same Joomla template style and verify that “All” pages are checked, ensuring the Helix layout controls core component pages as well.
  • Create a Hidden “Dummy” SP Page Builder Module. If your menu layout collapses on component pages because Helix fails to enqueue its script library without an SP Page Builder asset on screen. This is what fixed it for me:
    1. Go to System → Site Modules → Click New.
    2. Select SP Page Builder Module.
    3. You do not need to add content; just save it and assign it to a layout position used globally (for the savor template, use position content-top).
    4. Set the module's Menu Assignment to the non-SP Page Builder pages only.
    5. This forces Joomla to load the framework assets on core component pages, instantly stabilizing the main menu.
    6. Note that the sequence of CSS files loaded is different from a SP Page Builder page. You might need to change some CSS rules and add !important.

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.