J3以降へのアップデート
J3→J4
・コンポーネントのjoomla更新からオプションで、Joomla Nextを選択し保存。
・自動で対応してないエクステンションが表示される。
・Akeeba backupなど対応していないエクステンションを削除か更新か無効にする。
・mysites.guruから削除
・phpを8.0に設定。
・バックアップを取ってから、アップデート。
・Yoothemeは4の最新版で良い。
Acymailing5が入っている場合
phpを8.2にすると、バックエンドのユーザータブで、
Deprecated: Creation of dynamic property plgAcymailingEventbooking::$version is deprecated in /home/path/plugins/acymailing/eventbooking/eventbooking.php on line 21 Deprecated: Creation of dynamic property plgAcymailingEventbooking::$component_installed is deprecated in /home/path/plugins/acymailing/eventbooking/eventbooking.php on line 24 Deprecated: Creation of dynamic property plgAcymailingOsmembership::$db is deprecated in /home/path/plugins/acymailing/osmembership/osmembership.php on line 16 Deprecated: Creation of dynamic property plgAcymailingOsmembership::$component_installed is deprecated in /home/path/plugins/acymailing/osmembership/osmembership.php on line 17
というエラーが出る。これは、integration pluginの書き方が古いせいで本質的な問題ではないが消すためには、該当接続プラグイン
eventbooking.php と osmembership.php
で、
class plgAcymailingEventbooking extends JPlugin{
var $searchFields = array('a.title', 'a.id', 'a.event_date', 'a.short_description');
var $selectedFields = array('a.*');
var $version = null;
var $component_installed = false;
class plgAcymailingOsmembership extends JPlugin
{
var $db = null;
var $component_installed = false;
function __construct(&$subject, $config){
parent::__construct($subject, $config);
if(!isset($this->params)){
$plugin = JPluginHelper::getPlugin('acymailing', 'osmembership');
$this->params = new acyParameter( $plugin->params );
}
$this->db = JFactory::getDBO();
$this->component_installed = file_exists(JPATH_SITE.DS.'components'.DS.'com_osmembership');
}
のように次の4行を加えれば良い。
// Event Booking
var $version = null;
var $component_installed = false;
// Membership Pro
var $db = null;
var $component_installed = false;
J4→J5
・エクステンションを更新。
・phpを8.2に設定。
・Yoothemeは4の最新版で良い。
・Joomla更新から対応状況を見て対応。
・バックアップを取ってから更新。
J5→J6
・エクステンションを更新
・phpを8.4に設定。
・Yoothemeは4の最新版で良い。
・Joomla更新から対応用状況をみる。
・Admintoolsの.htaccessが悪さをすることがあるので、うまく行かなかったら、.htaccessを一旦Joomla固有のものにする。
・バックアップを取ってから更新。
・Akeeba backupなどを再インストール
・必要があれば、Yoothemeを4から5にする。ただし、かなり構造が違うらしく、スタイルがずれたり、図が消えたりするので、うまく行かなかったら戻す。
・mysite.guruを再登録
Easyblogが入っている場合
System - FoundryとInstaller - EasyBlogというプラグインが古い記述を使っていて、Joomla 5用のBehaviour - Backward CompatibilityをOFFにすると、管理画面も動かなくなる。
一方で、Joomla 5用のBehaviour - Backward Compatibility をOFFにしないと、J6にできないというジレンマがある。
そこで、
この手の問題の切り分けは、
・デバッグをON
・エラー出力を最大
にして、エラー画面のCall Stackを見れば大体分かる。
ただし、管理画面も動かなくなるので、softaculousで戻せるようにしておくか、mysites.guruでcompatibilityプラグインをONに戻せるようにしておく。
System - FoundryをOFF- Joomla 5用の
Behaviour - Backward Compatibility Behaviour - Backward Compatibility 6がONであることを確認- Joomla 6へ更新
- Joomla 6側で
Backward Compatibility 6がONであることを確認 System - Foundry,Installer - EasyBlogを再びON- EasyBlogの記事一覧・個別記事・投稿編集を確認
の手順で、J6にアップデートする。とりあえず、この方法でうまく動いているようだ。
Easydiscussが入っている場合
System - FoundryをOFF- Joomla 5用の
Behaviour - Backward Compatibility Behaviour - Backward Compatibility 6がONであることを確認- Joomla 6へ更新
- Joomla 6側で
Backward Compatibility 6がONであることを確認 System - Foundry,を再びON- EasyBlogの記事一覧・個別記事・投稿編集を確認
の手順で、J6にアップデートする。とりあえず、この方法でうまく動いているようだ。
さらに、Joomla6のcompatibilityプラグインと干渉してしまうようだ。多分、compatibilityプラグインが作る変数と同じ変数を持っているみたい。未解決。エラーを非表示にすれば動きそうだが、相当気持ち悪い(2026年7月29日)。
Acymailing5が入っている場合
AcyMailing : Handle Click tracking part2をOFFAcyMailing - JCE integrationもOFF- Joomla 5用の
Behaviour - Backward Compatibility Behaviour - Backward Compatibility 6がONであることを確認- Joomla 6へ更新
- Joomla 6側で
Backward Compatibility 6がONであることを確認AcyMailing : Handle Click tracking part2AcyMailing - JCE integrationをON
- EasyBlogの記事一覧・個別記事・投稿編集を確認
の手順で、J6にアップデートする。とりあえず、この方法でうまく動いているようだ。
Widgetkitが入っている場合
Warning: Cannot redeclare class joomla\cms\filesystem\file (previously declared in /home/path/libraries/vendor/joomla/filesystem/src/File.php:19) in /home/path/libraries/loader.php on line 576
Warning: Cannot redeclare class joomla\cms\filesystem\folder (previously declared in /home/path/libraries/vendor/joomla/filesystem/src/Folder.php:19) in /home/path/libraries/loader.php on line 576
といったタイプの警告が出る。これは、J6下位互換性プラグインとwidgetkitの下位互換性記述が同じ事をしようとして、同じ量を定義してしまうからである。
この場合、
administrator/components/com_widgetkit/vendor/yootheme/framework/plugins/joomla/classmap.php
の中で、
$aliases[Joomla\Filesystem\File::class] = Joomla\CMS\Filesystem\File::class;
$aliases[Joomla\Filesystem\Folder::class] = Joomla\CMS\Filesystem\Folder::class;
をコメントアウトするか、
if (version_compare(JVERSION, '6.0', '>=')) {
if (!class_exists(Joomla\CMS\Filesystem\File::class)) {
$aliases[Joomla\Filesystem\File::class] = Joomla\CMS\Filesystem\File::class;
}
if (!class_exists(Joomla\CMS\Filesystem\Folder::class)) {
$aliases[Joomla\Filesystem\Folder::class] = Joomla\CMS\Filesystem\Folder::class;
}
}
の様に置き換えれば良い。