Joomlaでいくつかのコアファイルを編集してみました。私はMVCオーバーライドプラグインを使用しています: ここにリンクの説明を入力してください
Components/com_content/modelsのarticle.phpとarticles.phpを上書きしたいのですが。
オーバーライドが完了し、現在機能しています。私の問題は、私のフロントページ/ホームページでこのエラーが発生することです。
Fatal error: Cannot redeclare class ContentModelArticles in /Applications/MAMP/htdocs/site/components/com_content/models/articles.php on line 680
それは私がそのエラーを受け取る唯一の場所です。 articles.phpおよびその他の場所では、同様のエラーの兆候はありません。誰かが解決策を教えてくれますか?
オーバーライドの方法がわかりません。私はarticles.phpをコピーして、私のテンプレートファイルの別のフォルダに入れました。したがって、articles.phpにフィールドをいくつか追加した以外はすべて同じです。それはこのように始まります:
defined('_JEXEC') or die;
use Joomla\Registry\Registry;
/**
* This models supports retrieving lists of articles.
*
* @since 1.6
*/
class ContentModelArticles extends JModelList
{
/**
* Constructor.
*
* @param array $config An optional associative array of configuration settings.
*
* @see JController
* @since 1.6
*/
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
私は何をすべきかわからない。 ContentModelsArticlesを別のものに変更した場合。
オーバーライドは通常、クラスを再宣言しません。ほとんどの場合、上書きは元のファイルの代わりに読み込まれたファイルです。 出力オーバーライドについて
とはいえ、システムプラグインを宣言し、元のクラスの前に新しいクラスをロードする高度な手法があります。その後、Joomlaクラスローダーは元のクラスをロードしません。 プラグインのテンプレート化されていないレイアウトファイルを上書きしますか?
あなたはそれを正しく持っています。で:site/templates /mytemplate/ code/com_content/models/articles.php
次のようにクラスを作成する必要があります。
class ContentModelArticles extends ContentModelArticlesDefault
基本的に、プラグインは「元のクラス」を文字列に読み込み、実際にeval()を介して作成し、デフォルトを追加します。