1

この控えめな CMS を PHP (および Zend Framework) で作成しました。

公開された Web サイトのページのコンテンツは、MySQL TEXT フィールドに保存されます。ページのコンテンツを編集すると、Web サイト内の他の内部ページへのリンクを作成できます。

ページのスラッグ (SEO uri の) も CMS で編集できます。

リンク先のページのスラッグが CMS のエンドユーザーによって変更された場合、コンテンツ内の内部リンクを同期する良い方法は何ですか?

シンプルで堅牢なソリューション (データベースのリファクタリングをあまり行わない) から、データベースのリファクタリングなどを必要とするより複雑で柔軟なソリューションまで、歓迎します。これを処理するための良いアイデアは何ですか?

前もって感謝します。

PS .: PHP/MySQL で指定する必要はありません。PHP/MySQL がもちろん処理できない不明瞭なものでない限り、グローバルな概念だけでおそらくうまくいくでしょう。

4

2 に答える 2

1

一部のコンテンツ管理システムのアプローチ方法は次のとおりです。一般に、実行時のパフォーマンス、編集時のパフォーマンス、および管理のしやすさに関しては、これが最適なバランスのようです。

ページとリンクの表を保持する:

|PageID    |LinksToID    |
|----------|-------------|
|1         |2            |
|1         |3            |
  1. ページ (foo) を保存するときは、そのページ内のすべてのリンクを検索し (あまり集中的ではありません)、それぞれのリンク先を見つけます (簡単です。もちろん、ページは URL によってインデックス化されているからですよね?)。
  2. この表にその情報を入力します (ページ 1 にはページ 2 と 3 へのリンクがあります)。
  3. ページ 3 の名前が変更されたら、このテーブルに戻って、それにリンクしているすべてのページをプルします。3 ページへの URL のコンテンツを検索し、置換して更新します。

ランタイムへの影響はなく、編集時の影響が最適化されます。また、サイト内のすべての相互リンクの便利でクエリしやすいマップを取得できます。ボーナス!

于 2010-10-11T22:39:48.667 に答える
0

オプション1:

コンテンツの挿入/更新時にスラッグ URL のコンテンツを検索し、スラッグ URL を ID およびコンテンツ ID に関連付けるテーブルに格納します。('slug_content_map')

コンテンツの 'slug_content_map' にエントリがある場合、URL が更新されたときにコンテンツ内の古いスラッグ URL を新しいスラッグ URL に置き換えるメソッドを追加できます。

オプション 2:

コンテンツを挿入/更新するときは、スラッグ URL を {slugId:3} などの文字列に置き換え、コンテンツを表示するときに動的に置き換えます。この方法では、コンテンツを表示するときにスラッグを検索して置換する必要があるため、オーバーヘッドが大きくなります。

于 2010-10-11T18:55:54.047 に答える