リンクの概念は、HTMLマークアップと切り離せませんか?
質問
記事内のリンクを管理するための戦略を探しています。記事の本文はデータベースに保存され、ページのアセンブリ中に取得されます。リンクを簡単に定義および管理するには、データベースに何を保存する必要がありますか?
一部の純粋主義者は、マークアップをデータベースに保存してはならないと考えています。適度に良いと考える人もいます。しかし、私にとっては、リンクの概念はそのHTMLマークアップとほとんど切り離せません。
「アンカーテキスト」を単に埋め込むよりも、記事内(データベース内)でリンクを表現するための、より簡潔な方法がありますか?
私が始めたアイデアの1つは、関心領域を意味的に記述するのに十分なマークアップを埋め込み、別のテーブルにそれらの概念を実際のURLにマップすることです。特定の概念のすべての出会いはリンクでラップされます。
<p>Here is an example of a
<span class="external-reference semantic-web">semantic</span>
approach to link management.</p>
テーブルは、記事のURLと 'semantic-web'のキークラスを 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>
このアプローチで気に入っているのは、すべてのURLがデータベース内の1つの場所にあることです。記事の本文に触れることなく、技術的にリンクを変更または削除できます。 CSSには非常に良いクラス名があります。
別のテーブルを維持したり、レンダリング時間に別のステップ/フェーズを追加したりするのは嫌です。応答時間が遅くなる可能性があります。
優れたリンク管理を提供する他の戦略はありますか?
解決
テンプレートを確認したい場合があります(PHPの場合は Smarty など)。
マークアップがデータベースに通常保持されるべきではないことに同意します。
ただし、「ポインター」を実装することも検討できます。各リンクで、ページのストレージを中断し、テーブル内のリンクにリンクへのポインターを追加し、次にリンクテーブル内のページのコンテンツの次のセグメントへのポインターを追加する概念。 (それがどれほど複雑になるかわかりません。ただのアイデアです。)
または、さまざまなCMSツールがどのようにアイデアを処理するかを見てください。すべてを1つの大きなテキストブロックとしてデータベースに入れるものもあれば、テンプレートに依存するものもあれば、まったく別のことを行うものもあります( Plone )。
他のヒント
これを行うためのいくつかの試みがあります。
これを行う1つの方法は、URLリダイレクトを使用することです。コンテンツへのパスではなく、URLが要求しているものを解釈するロジックコンポーネントをサーバーに実装できます。
別の試みは、リンクが元々[データベースで検索可能な]参照値に設定され、実行時/生成時に要求されることです。
とにかく、リンクしたい資料を何らかの識別子で参照する必要があります。