* 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 .= '
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.
- Go to System -> Site Template Styles -> Open Helix Ultimate.
- Click on Advanced tab -> Look for CSS Compression and JS Compression.
- Turn both OFF, click Save, and clear your cache.
- 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.
- Inside the Helix Ultimate template options, go to the Menu configuration.
- Ensure that your Main Menu is explicitly chosen from the dropdown list.
- 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:
- Go to System -> Site Modules -> Click New.
- Select SP Page Builder Module.
- 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//).
- Set the module's //Menu Assignment// to the non-SP Page Builder pages only.
- This forces Joomla to load the framework assets on core component pages, instantly stabilizing the main menu.
- 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//)
- Ensure all the languages used on your previous site are installed, active, and published as **Content Languages**.
- Take a backup of both sites.
- 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
- If you have set the user ID to the same ID used on the previous site as explained in [[#prepare_production_site|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.
- 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;
- 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.
- Log into your Joomla 6 Backend.
- Go to //Content ➔ Categories//.
- Select your categories and click the **Rebuild** button in the top toolbar. (This generates fresh nested assets in the database for the categories).
- Go to //Content ➔ Articles//.
- Change the list view filter at the bottom right to display //All// or //200 items// so all 195 articles fit on a single page.
- Click the master checkbox at the very top of the column to select all 195 articles.
- Click the **Batch** button in the top toolbar.
- 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//.
- Click **Process**
- 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.
- Transfer the Images. Database tables only hold text and file paths. You must manually copy your media files.
- Connect via FTP or your hosting File Manager.
- Download the ''images'' directory from your Joomla 4 root folder.
- Upload and merge those files into the ''images'' directory of your new Joomla 6 installation.