2

私の質問のタイトルは単純に思えますが、これが私がやりたいことの例です:

http://www.mayoclinic.com/health/infant-jaundice/DS00107

そのページで何が起こるかというと、リンクをクリックして「乳児黄疸」に関する記事のセクション (「症状」など) に移動するたびに、次のような URL パラメーターが提供されます。

http://www.mayoclinic.com/health/infant-jaundice/DS00107/DSECTION=symptoms

パラメータが変化するDESCTIONと、同じページに異なるコンテンツが表示されますDS00107。のように内容も変わります<meta keywords>

誰かがこれがどのように達成されているか教えてもらえますか? URL パラメータに応じてさまざまなプロパティを表示するために、ページ自体にプログラムされた if/else 状況だと思っていました。Web サーバーとして ColdFusion 10 を使用しています。

私は、AJAX などのどのテクノロジーを使用するかを尋ねているわけではありません。完全にリロードするページがあってもかまいません。しかし、ページ上のさまざまな HTML タグと DIV の正しい記事情報はどこから取得するのでしょうか? if/else ステートメントに含める必要がありますか、それともデータベースに格納する必要がありますか?

データベースに保存するのは面倒かもしれないと思っていました...すべての段落と順序付けられたリスト情報をテーブルに保存する必要があります。しかし、それは正しい方法ですか?

4

4 に答える 4

1

ページの詳細を保存してみてください。

URL (含めるファイルを指す) ページ名など.

db テーブルで、cfquery を使用して url パラメータに対応するページを表示するだけです。

于 2013-06-25T14:46:56.680 に答える
1

あなたが見ているのは、URL の書き換えです。これは Web サーバー内で実行できますが、ColdFusion/PHP ext では必要ありません。Web サーバーが行うことは、URL mayoclinic.com/health/infant-jaundice/DS00107/DSECTION=symptomsを次のようなリンクに書き換えることですmayoclinic.com/health/infant-jaundice/DS00107/index.cfm?DSECTION=symptoms

ページ内にコンテンツを表示するには、switch ステートメントとして使用するか、2 ~ 3 個以上のディスプレイがある場合は一連の if/else を使用します。case ブロックは必要な数だけ使用できます。

<cfswitch expression=”#url.DSECTION#>
    <cfcase value="symptoms">  
        <!---   symptoms code / html here --->
    </cfcase>
    <cfcase value="causes">  
        <!---   causes code / html here --->
    </cfcase>
    <cfdefaultcase>
        <!---   default code / html here --->
    </cfdefaultcase>
</cfswitch>

これは、URL 書き換えの考え方を説明するための非常に単純な例です。

添加:

おそらく、if/else ステートメントではなく、データベース クエリを使用しているのではないかと考えていました。

はい、できます。クエリ駆動の結果については、次のようなことができます。

<cfquery name="pageContent" datasource="yourDatasource">
    SELECT htmlText 
    FROM pages
    WHERE page = 'dir/index.cfm'
    AND content <cfqueryparam cfsqltype="cf_sql_varchar" value="#url.DSECTION#">
</cfquery>
<cfoutput>#pageContent.htmlText[1]#</cfoutput>

コンテンツが静的でめったに更新されない場合は、別のオプションとして、インクルードを調べて、コンテンツに基づいてコードを実行する機能を活用しようとします。

<cfinclude template="./includes/symtoms.cfm"> or <cfinclude template="./includes/#url.DSECTION#.cfm">
于 2013-06-25T19:12:25.570 に答える
0

これは、サーブレット、Spring MVC、PHP などのサーバー側プログラミング手法で Ajax を使用して行うことができます。ページ上でドラッグ、ズーム、またはその他のマウスイベントを実行すると、アクションが発生してサーバーに送信され、サーバーからデータを受信し、ページ全体をリロードする代わりにページの一部のみを変更します。

于 2013-06-25T14:44:44.833 に答える
0

最も適切な動作を実現するには、JSP/PHP などのサーバー サイド スクリプト言語を使用することをお勧めします。

于 2013-06-25T14:39:36.700 に答える