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.phposmembership.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をOFF
  • AcyMailing - 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 part2
    • AcyMailing - 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;
}
}

の様に置き換えれば良い。