2010-08-16 4 views
0

Je suis en train d'intégrer wordpress dans un magento installer, mais continuer à obtenir l'erreur suivante lorsque vous essayez d'inclureIntégration wordpress avec magento

Erreur fatale: Impossible redéclarer __()

Je suppose que cela est parce que les deux magento et wordpress l'utilise.

Comment puis-je contourner ce problème.

J'ai essayé des choses comme:

if(!function_exists('__()')) { 
    function __() {} 
} 

dans les deux magento et les fichiers, mais wordpress ne fait aucune différence - accordée je ne comprends pas bien ce que son fait.

Existe-t-il des suggestions pour contourner ce problème?

Répondre

2

changement qui à:

if(!function_exists('__')) { 
    function __() {} 
} 
+0

ouais ça fait du sens, mais il na pas résoudre la question réelle malheureusement – David

1

Comme l'a déjà dit, le problème se produit parce que les deux cadres définissent la même fonction (__()). Afin de résoudre ces problèmes, vous devez supprimer l'une des déclarations (ou la rendre conditionnelle comme indiqué). Si elles sont identiques dans les deux frameworks, c'est bien, mais si l'une d'entre elles implémente la fonction différemment, vous devrez déplacer l'une des déclarations vers une autre fonction (par exemple __2()) et refactoriser le code existant pour le pointer. C'est une mauvaise idée.

Ceci est en fait un bon exemple de pourquoi Wordpress et Magento ne sont pas facilement liés étroitement. Ma première suggestion pour contourner cela serait de garder les deux bases de code à bout de bras et d'utiliser le mod-rewrite pour prendre soin de les intégrer si possible. A défaut, et en fonction des besoins, utilisez Wordpress installé ailleurs pour gérer les publications et récupérer les informations de la base de données avec un wrapper.

Lorsque les bases de code changent (par exemple vous mise à niveau), avoir intégré les deux bases de code vous causera probablement beaucoup d'angoisse existentielle.

Espérons que ça aide!

Merci, Joe

+0

Salut, merci pour la réponse. Donc, diriez-vous que l'accès direct à la base de données wordpress serait la meilleure idée. J'espérais un peu plus facilement - pas dans le sens où ce serait difficile, juste plus de temps. – David

+0

Il faudra beaucoup de temps si vous devez remplacer des fonctionnalités telles que les balises et les commentaires, mais ce sera plus clair (et probablement plus rapide à long terme, si vous envisagez des mises à niveau vers Wordpress ou Magento). –

+0

Sinon, si c'est possible, utilisez blog.yourdomain.com ou yourdomain.com/blog et skin Wordpress pour ressembler à votre installation de Magento. –

2

Vous pouvez modifier votre code de WordPress. Il vous permet d'intégrer facilement WordPress et Magento. J'ai utilisé SSH pour entrer dans le serveur et je suis allé dans le répertoire du blog. J'ai alors couru les commandes suivantes:

grep -rl '__(' * | xargs sed -i 's/__(/__wp(/g' 

Cela m'a permis de changer toutes les références à la fonction « _ » à « _WP » au lieu sans erreur plus redéfiniront.

Il y a quelques problèmes à connaître lors de l'utilisation de cette méthode:

  1. je garderais les commandes à portée de main dans un fichier pour fonctionner après que vous avez fait tout type d'installation ou de mise à niveau depuis tout type de code modification de votre système pourrait potentiellement l'abattre avec erreurs.
  2. Je ne recommanderais pas d'utiliser cette approche lorsque vous n'avez pas le contrôle complet de l'installation de WordPress.Vous avez vraiment besoin d'avoir le contrôle sur pour vous assurer que vous n'abandonnez pas le site ou que quelqu'un d'autre ne cause pas un problème par inadvertance.

Ma méthode de mise à niveau est:

  1. Rediriger tout le trafic du blog en utilisant (mod_rewrite)
  2. Effectuer la mise à niveau (s)
  3. test
  4. Désactiver réoriente pour autoriser le trafic à travers encore

Cela a bien fonctionné pour moi.

http://www.technickels.com/2012/12/wordpress-integration-with-magento/