J'ai essayé de modifier certains des fichiers de base de Joomla. Utilisation du plug-in de substitution MVC: entrez la description du lien ici
Je veux remplacer article.php et articles.php dans components/com_content/models.
Le remplacement est terminé et fonctionne maintenant. Mon problème est que je reçois cette erreur sur ma page d'accueil/page d'accueil.
Fatal error: Cannot redeclare class ContentModelArticles in /Applications/MAMP/htdocs/site/components/com_content/models/articles.php on line 680
C’est le seul endroit où j’obtiens cette erreur. Dans articles.php et d’autres endroits, il n’ya aucune trace d’erreurs similaires. Quelqu'un peut-il me dire quelle est la solution?
Je ne suis pas sûr de savoir comment faire le remplacement. Je viens de copier le articles.php et le mettre dans un autre dossier dans mon fichier de modèles. donc tout est pareil sauf que j'ai ajouté quelques champs à mon articles.php. Ça commence comme ça:
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']))
{
Je ne sais pas quoi faire. Si je change les ContentModelsArticles en quelque chose d'autre.
Les substitutions ne re-déclarent généralement pas les classes. Dans la plupart des cas, un remplacement est un fichier chargé à la place de l'original. Comprendre les substitutions de sortie
Cela dit, il existe une technique avancée pour déclarer un plug-in système et charger une nouvelle classe avant la classe d'origine. Ensuite, le chargeur de classe Joomla ne chargera pas la classe d'origine. Remplacer les fichiers de mise en page non modélisés d'un plugin?
Vous avez raison Dans: site/templates/ mytemplate /code/com_content/models/articles.php
Vous devriez avoir la classe créée comme:
class ContentModelArticles extends ContentModelArticlesDefault
Le plugin charge automatiquement la "classe originale" dans une chaîne qui la crée réellement via eval (), avec la valeur par défaut ajoutée.