2010-10-11 26 views
1

J'ai créé ce modeste CMS en PHP (et Zend Framework).CMS: synchroniser les liens vers les pages internes dans le contenu de la page

Le contenu d'une page du site Web publié est stocké dans un champ MySQL TEXT. Lors de la modification du contenu d'une page, il est possible de créer des liens vers d'autres pages internes du site Web.

Les limaces de pages (SEO uri) sont également modifiables dans le CMS. Quel est un bon moyen de synchroniser les liens internes dans le contenu, quand le slug d'une page qui est lié à est modifié par l'utilisateur final du CMS?

J'accueille des solutions, depuis des solutions simples et robustes (sans trop refactoriser la base de données), jusqu'à des solutions plus complexes et flexibles, qui nécessitent un refactoring de la base de données et autres. Quelles sont les bonnes idées pour gérer cela?

Merci d'avance.

PS .: Il n'est pas nécessaire de spécifier PHP/MySQL. Juste le concept global ira probablement bien, à moins que ce soit quelque chose d'obscur que PHP/MySQL est incapable de gérer bien sûr.

Répondre

0

Option 1:

Rechercher dans le contenu des URL de limaces lors de l'insertion/mise à jour du contenu, et de les stocker dans une table qui se rapporte urls limaces à leurs id, et l'identifiant de contenu. ('slug_content_map')

Vous pouvez ensuite ajouter une méthode qui remplace l'ancienne URL slug par la nouvelle URL slug dans le contenu lorsque l'URL est mise à jour, si le contenu a une entrée dans 'slug_content_map'.

Option 2:

Lors de l'insertion/mise à jour de contenu, remplacer les URL de lingot avec une chaîne telle que {slugId: 3}, puis remplacer dynamiquement que lors de l'affichage du contenu. Cette méthode a plus de surcharge lors de l'affichage du contenu que vous auriez à chercher le slug pour le remplacer.

1

Voilà comment certains systèmes de gestion de contenu approche, et il semble en général être le meilleur équilibre dans la mesure où les performances d'exécution, les performances de temps de montage et de gestion:

Gardez une table de pages et liens:

|PageID |LinksToID | 
|----------|-------------| 
|1   |2   | 
|1   |3   | 
  1. Lorsque vous stockez la page (foo), trouver tous les liens dans cette page (pas très intensive), trouver où chacun des liens vers (trivial, depuis bien sûr, vous avez vos pages indexées par URL, droit ?).
  2. Remplissez cette table avec cette information (page 1 contient des liens vers les pages 2 et 3).
  3. Lorsque la page 3 est renommée, revenez à cette table et tirez toutes les pages qui y sont liées; rechercher leur contenu pour les URL à la page 3, remplacer et mettre à jour.

Aucun impact sur l'exécution et l'impact sur l'heure d'édition est optimisé. Et vous obtenez une carte pratique et facile à interroger de tous les liens croisés dans votre site. Prime!