2009-12-15 12 views
4

Cela peut paraître vraiment fou, mais quand même ...Intégrer l'application Python dans le site PHP

Pour notre site de projet remanié, nous voulons intégrer Trac (comme navigateur de code, wiki développeur et numéro Tracker) dans la conception du site . C'est, bien sûr, difficile, puisque Trac est écrit en Python et notre site en PHP. Est-ce que quelqu'un ici sait comment intégrer un en-tête et un pied de page (PHP) dans le modèle Trac (de préférence sans invoquer un - ou plutôt deux pour l'entête et le pied de page - processus PHP depuis la ligne de commande)?

+0

Y compris les fichiers externes devrait être possible en utilisant une commande dans Genshi, le trac langage de la langue utilise, mais je n'ai jamais compris comment. Je suis allé jusqu'à inclure un fichier local (sans http: //) mais pas plus loin. Dans l'attente de voir de bonnes réponses. –

+0

Merci pour vos réponses, les gars. Je vais voir ce qui se passe et accepter la réponse appropriée alors ...;) – Franz

Répondre

1

La meilleure option est probablement de (ré) écrire l'en-tête et le pied de page en utilisant python.

Si l'en-tête et le pied de page sont relativement statiques, vous pouvez également les générer une fois en utilisant php (ou toutes les x minutes) et les inclure dans le système de fichiers. (Vous avez probablement déjà pensé à cela et rejeté l'idée parce que vos sites sont trop dynamiques pour utiliser cette option?)

Bien que je ne le recommande pas vraiment, vous pouvez également utiliser une certaine forme d'AJAX pour charger des parties de la page, et Rien ne vous empêche de charger ce contenu à partir d'un système basé sur PHP. Cela pourrait garder toutes les parties dynamiques. Vos pages seront probablement moche lors du chargement, et vous générez maintenant plus de hits sur le serveur que nécessaire, mais si c'est un gros site, cela peut être un gros problème.

Avertissement: Si vous avez des connexions d'utilisateur sur les deux systèmes, vous rencontrerez probablement des problèmes avec des personnes uniquement connectées à la moitié de votre site.

+0

Nous avons pris soin de l'intégration de l'utilisateur, oui (nous n'intégrons pas fondamentalement les deux). Quelle est la dynamique de l'en-tête et du pied de page? Hmmm ... Le pied de page est statique, mais généré avec PHP (ce qui pourrait être mis en cache). L'en-tête est dynamique: il indique si l'utilisateur est connecté sur le site (ce qui n'est pas nécessaire, d'accord) et la langue (ne s'applique pas à Trac). – Franz

+0

Si vous voulez seulement montrer si l'utilisateur est connecté, je ferais une copie statique de l'en-tête et du pied de page et remplacerais la partie qui montre si l'utilisateur est ou non connecté par un appel AJAX. –

1

L'abstraction est votre ami.

Isolez le HTML brut de votre PHP dans l'en-tête et le pied de page dans un langage de template simple, si possible, et écrivez des interfaces Python et PHP dans votre langage de template. Ou, réutilisez le travail que d'autres personnes ont fait. This chart montre que Template Attribute Language (TAL) prend en charge Python et PHP5.

+0

+1 C'est une bonne idée. Cependant, le script d'en-tête inclut d'autres choses (PHP) pour obtenir l'objet utilisateur, etc. pour savoir quel lien afficher et ainsi de suite ... Cela le rend un peu plus difficile. Ou est-ce que j'oublie quelque chose? – Franz

0

Votre code Python aura accès aux cookies de vos utilisateurs. Un modèle serait mieux, mais si vous n'en avez pas un disponible (ou l'en-tête/pied de page est trivialement petit, ou autre), vous pouvez simplement porter l'en-tête et le pied de page PHP vers Python, en utilisant les cookies déjà présents. interroger la base de données ou tout ce que vous devez faire. Si vous souhaitez conserver vos liens pour vous connecter, vous inscrire, et tout ce qui pourrait être dans la version PHP, il suffit de lier le côté PHP, puis de revenir à Trac une fois que PHP a fait son travail.

Questions connexes