2009-11-27 1 views
4

Je suis à la recherche d'une stratégie pour gérer les liens dans les articles. Le corps de l'article est enregistré dans une base de données et extrait pendant l'assemblage de la page. Qu'est-ce qui devrait être sauvegardé dans la base de données pour définir et gérer facilement les liens?Le concept d'un lien est-il inséparable de son balisage html?

Certains puristes croient que le balisage ne devrait JAMAIS être stocké dans la base de données. Certains croient que c'est correct avec modération. Mais pour moi, la notion de lien est presque inséparable de son balisage html.

Existe-t-il une façon plus simple et plus succincte de représenter un lien dans un article (dans une base de données) plutôt que d'incorporer simplement un "texte d'ancrage"? Une idée que j'ai lancée consiste à intégrer juste assez de balises pour décrire sémantiquement les zones d'intérêt, et dans un tableau différent, mapper ces notions aux URL réelles. Toutes les rencontres d'une notion particulière sont enveloppées avec le lien.

<p>Here is an example of a 
<span class="external-reference semantic-web">semantic</span> 
approach to link management.</p> 

Une table peut alors associer l'URL de l'article et la classe clé de « Web sémantique » à une URL comme http://en.wikipedia.org/wiki/Semantic_Web

<p>Here is an example of a <span class="external-reference semantic-web"> 
<a href="http://en.wikipedia.org/wiki/Semantic_Web">semantic</a></span> 
approach to link management.</p> 

Ce que j'aime cette approche est que toutes mes URL sont dans un emplacement dans la base de données. Je pourrais techniquement changer ou supprimer des liens sans toucher le corps de l'article. J'ai de très bons noms de classe pour CSS.

Je n'aime pas avoir une autre table à maintenir, et une autre étape/phase dans le temps de rendu. Cela pourrait ralentir le temps de réponse. Y at-il d'autres stratégies qui offrent une gestion de lien supérieure?

+0

Je ne pense pas qu'il y aura une réponse satisfaisante, mais j'aime la question. +1 – MitMaro

Répondre

1

Vous voudrez peut-être regarder templating (tel que Smarty pour PHP).

Je suis d'accord que le balisage ne devrait pas normalement être maintenu dans la base de données. Cependant, vous pouvez également envisager d'implémenter un concept de "pointeur", où à chaque lien, vous cassez votre stockage de la page, ajoutez un pointeur dans la table au lien, puis un pointeur dans la table des liens à la suivante segment de contenu pour la page. (Je ne sais pas à quel point cela serait compliqué - juste une idée.)

Ou regardez comment les différents outils CMS gèrent l'idée. Certains mettent simplement tout dans la base de données comme un gros bloc de texte, tandis que d'autres s'appuient sur des modèles, et d'autres peuvent faire quelque chose d'autre entièrement (comme des environnements orientés objet tels que Plone).

1

Il y a quelques tentatives pour faire cela que j'ai vu.

Une façon de procéder consiste à effectuer des redirections d'URL. Vous pouvez implémenter un composant logique sur le serveur qui interprétera ce que l'URL demande plutôt qu'un chemin d'accès au contenu.

Une autre tentative est que les liens sont initialisés à une valeur de référence [qui peut être recherchée dans une base de données], et sont demandés à l'exécution/génération. Quoi qu'il en soit, vous devrez référencer le matériel que vous souhaitez lier avec une sorte d'identifiant.

Questions connexes