ショートバージョン:
はは、これらのタグのうちの少なくとも一つを使用し、最初の10個のノードを取得し、、これらの各のリンクを出力し、タグノードのの配列を取得し10件の結果
詳細バージョン:全ての
まず、変数「$node
」は、特定のノード(例えば、ページ又はストーリーノード)についてのデータを含むオブジェクトです。 たとえば、「$node->title
」はそのノードのタイトルになります。それはタグを持っていない場合、それが同じタグ(複数可)を使用して、他のノードを取得できないため
「$node->taxonomy
」試験は(ノードがタグ付けされることである。 そのノードに関連付けられた1個のまたは複数のタグが存在する場合/ページ/物語、$node->taxonomy
がarray
あるSQLクエリについて今
:。 「node
は」すべてのノードのベース・フィールド(非CCK)を格納するデータベース表です 「term_node
」があります。データベーステーブルt hatには、タグ(「taxonomy term
」と呼ばれる)とノードの組み合わせが含まれます。両方のテーブルに
、 "nid
" は(内部オートインクリメント数) "unique Node ID
" です。この列は両方のテーブルにあるため、これはテーブルの結合方法です。
「term_node
」には、「tid
」が「unique Term ID
」(これは内部自動インクリメント番号でもあります)です。
"node
" テーブル "はn
を" エイリアスさを、従って "n.nid
" 手段 "the Node ID stored in table node
"。 ""テーブルのエイリアスは "t
"なので、 "t.tid
"は "the Term ID stored in table term_node
"を意味します。
「foreach
」ループは、SQLクエリにそれを追加し、文字列に変換を内破するためにノードによって使用される各タグの管理用語識別子(TermID)を抽出するために、タグの配列を通して進みます。
ループ変数$tids
に各タグのSQLクエリの一部を格納し、引数はSQLクエリは別に渡される場合Drupalのデータベースコールが安全であるため、可変$args
の実際の値を格納する「%d
」が「integer number
」を意味。 「db_query_range
」
は、データベース内の複数の行を選択関数である。ここでは、「0 10
は」「retrieve the first 10 results
」を意味します。
「while
」ループにおける「db_fetch_object
」が目的である、それぞれの結果を取得し、変数に格納する「$o
」。
したがって、「$o->title
」には、SQLクエリによって取得された列「title
」の値が含まれています。
機能「l
」はHTMLリンクのコードを作成するDrupalのfunctinである:最初の引数は、リンクの名前であり、二番目の引数は、Drupalのパスである:Drupalの中に、任意のノードとすることができます「www.yoursite.com/node/NodeID
」、 を使用してデフォルトでアクセスされるため、パス「node/123
」(123
は「Node ID
」)になります。
この機能は、カスタムパスを透過的に処理するので便利です。ノードに「www.yoursite.com/my-great-page
」を使用してアクセスするカスタムパスがある場合は、自動的に「www.yoursite.com/node/123
」ではなくそのページへのリンクが作成されます。
あなたは私のヒーローです。とても感謝しています。しかし、私はうまくいくことができない部分があります。 "n" term_node "、" tid "は"一意のTerm ID "(内部自動拡張番号でもあります)です。 テーブル "term_node"を見ましたが、同じtidを持つ同じ行があります。 – runeveryday
なぜ私はこれら2つの行を "$ args = array($ node-> nid); $ tids = array();" foreachループ内の – runeveryday
は、どこから$ termであるか、どのようにオブジェクトであるかを知っています。 – runeveryday