MODxリ゜ヌス、チャンク、いく぀かのテレビ

私の友人がテンプレヌトで䜿甚されおいるテレビの皮類に぀いお尋ねた埌、私は倕方たですべおを延期しおこの蚘事を曞くこずにしたした。
MODxの構成芁玠、「調理」、「サヌブ」、「消費」の改善方法に぀いおです。

䞻に初心者向けに蚭蚈されおいたす modxドラむバヌが知っおおく必芁のある基本的な最小倀が含たれおいたす。もちろん、興味がある人のためのものです。

この蚘事は䞻にRevolutionに焊点を圓おおおり、その構文の前任者ずの䞻な違いを反映しおいたすが、䞋䜍互換性のためにEvolutionずの類掚を挿入するこずがありたす。

資源


倚くの堎合、リ゜ヌスはサむト䞊のペヌゞです。 さらに、リンク、ファむル自䜓など、他のタむプのリ゜ヌスがありたす。 既定では、新しいリ゜ヌスの皮類はドキュメントであり、サむトの1ペヌゞのプレれンテヌションです。

4皮類のリ゜ヌスがありたす。

各リ゜ヌスには、䞀意の識別子、぀たり「リ゜ヌス識別子」もありたす。 2぀のリ゜ヌスをリンクする堎合は、IDを䜿甚する必芁がありたす。 このようにしお、MODxはリンクを生成したす。ペヌゞのアドレスやアドレスの皮類を倉曎するこずを心配する必芁はありたせん。
たた、テンプレヌトを各リ゜ヌスに割り圓おるこずができ、テンプレヌトはこのリ゜ヌスの远加フィヌルドを定矩できたす。
リ゜ヌスはコンテナずしお機胜し、他のリ゜ヌスを含むこずができたす。 これがサむト構造の圢成方法です。

テンプレヌト


テンプレヌトは、MODxでのペヌゞの衚瀺を定矩する基本的な゚ンティティです。 テンプレヌトには通垞、サむトの堎所ず倖芳を決定するHTMLマヌクアップタグが含たれおいたす。 サむトペヌゞが芁求されるず、MODxはドキュメントたたはリ゜ヌスずそのテンプレヌトをロヌドし、MODxはテンプレヌト内のすべおの远加フィヌルドを怜玢し、ナヌザヌのブラりザにペヌゞを送信する前にドキュメントの察応する倀に眮き換えたす。
テンプレヌトは任意のリ゜ヌスに割り圓おるこずができ、基本的にこのリ゜ヌスのコンテンツが衚瀺されるWebペヌゞを定矩したす。
テンプレヌトを䞀郚ずしお別のテンプレヌトに含めるこずはできたせん。
テンプレヌトの䟋
  1. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  2. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  3. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  4. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  5. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  6. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  7. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  8. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  9. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  10. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  11. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  12. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  13. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >
  14. < html > < head > < title > [[*pagetitle]] < / title > < meta name = "description" content = "[[*description]]" / > < / head > < body > < h1 > [[*longtitle]] < / h1 > ID : [[*id]] < br / > : [[*introtext]] < br / > : [[*menutitle]] < hr / > [[*content]] < / body > < / html >

パラメヌタ


リ゜ヌスフィヌルドの倀を衚瀺するために䜿甚されたす。
呌び出しは次のように実行されたす。
進化革呜
[*フィヌルド*][[*フィヌルド]]

フィヌルドの完党なリストは、 こちらのドキュメントに蚘茉されおいたす 。

テレビのパラメヌタヌ


TV远加フィヌルドたたはテンプレヌト倉数TVは、カスタムフィヌルド、たたはMODxリ゜ヌスのカスタムフィヌルドです。 TVパラメヌタは、暙準のリ゜ヌスフィヌルドを拡匵するために䜿甚されたす。 MODxの各リ゜ヌスには、デフォルトで特定の数のフィヌルドがありたす。䞊蚘のリ゜ヌスのセクションを参照しおください。
タスクがペヌゞにいく぀かの远加フィヌルドを远加する堎合、たずえば、月の名前のドロップダりンリスト、远加の画像、たたは他のタむプのナヌザヌデヌタの堎合、察応するタむプのTVパラメヌタヌを远加するこずでこれを実行できたす。 MODxを䜿甚するず、ほが無制限の数のTVパラメヌタヌを䜿甚できたす。
TVタグは、リ゜ヌスの凊理時にナヌザヌが入力した察応する倀に眮き換えられたす。 たた、そのような各パラメヌタヌは特定のテンプレヌトに関連付けられおおり、それず組み合わせおのみ䜿甚できたす。
呌び出しは次のように実行されたす。
進化革呜
[* tv *][[* tv]]

TVパラメヌタヌは、パラメヌタヌを远加するチャンクずしお䜿甚できたす。 たずえば、倀を持぀TVパラメヌタ「intromsg」がある堎合
  1. こんにちは[[+ name]]、[[+ messageCount]]が未読です。

次に、呌び出すずきにデヌタを入力できたす。
  1. [[* intromsgname = `Grisha`messageCount =` 123`]]

結果
  1. こんにちは、グリシャ、123件の未読メッセヌゞがありたす。

たずえば、出力にフィルタヌを適甚しお、出力文字列の長さを100文字に制限するこずもできたす。
  1. [[* bioMessagelimit = `100`]]

フィルタヌの完党なリストはここにありたす 。 さらに、フィルタヌをチャンクずスニペットに適甚できたす。

コメント


  1. [[テンプレヌトにコメントを残すこずが蚱可されおいたす。このコヌドは、レンダリング埌にペヌゞから削陀されたす。 ]]


チャンク


チャンク-テンプレヌト、別のチャンク、たたはスニペットで呌び出すこずができる静的テキスト。 チャンクにはテンプレヌトず同じプロパティがありたすが、TVパラメヌタヌが含たれおおらず、リ゜ヌスに盎接割り圓おるこずはできたせん。
チャンクには実行可胜コヌドを含めるこずはできたせんが、スニペットを呌び出しお動的コンテンツを衚瀺できたす。
チャンクは次のように呌び出されたす。
進化革呜
{{チャンク}}[[$チャンク]]

パラメヌタヌをチャンクに転送できたす。 たずえば、次のコンテンツを含むチャンクを䜜成したす。
  1. こんにちは、[[+ name]]。 [[+ messageCount]]件の未読メッセヌゞがありたす。

そのようなチャンクは、埌で内郚で枡されるパラメヌタヌで呌び出すこずができたす。
  1. [[$むントロ name = `Basil`messageCount =` 12`]]

このコヌドは次を出力したす
  1. こんにちは、ノァシリヌ。 12件の未読メッセヌゞがありたす。

静的デヌタに加えお、远加の䞀般的なリ゜ヌスパラメヌタをチャンクコヌルに配眮できたす。次に䟋を瀺したす。
  1. [[$ intro name = `[[* usersName]]`messageCount = `[[* messageCount]]`]]


スニペット


スニペット-MODxテンプレヌトの凊理䞭に実行されるPHPコヌド。 圌の䜜業の結果は、その出力の堎所、たたはプレヌスホルダヌ、これらたたは結果をどこに配眮するかを決定する特別なタグのいずれかに配眮できたす。

スニペットは次のように呌び出されたす。
進化革呜
[[スニペット]][[スニペット]]

プレヌスホルダヌの配眮
進化革呜
[+プレヌスホルダヌ+][[+プレヌスホルダヌ]]

チャンクず同様に、次のようにパラメヌタヌをスニペットに枡すこずができたす。
  1. [[Wayfinder startId = `0`level =` 1`]]

転送されたパラメヌタヌは、いわゆるデフォルトパラメヌタヌプロパティセットにグルヌプ化できたす。これは、グルヌプの名前を指定するこずでスニペットに転送できるパラメヌタヌの動的グルヌプです。
デフォルトのパラメヌタヌは、スニペットの[蚭定]タブの管理パネルで蚭定されたす。 チャンクに察しおデフォルトのパラメヌタヌを䜜成するこずもできたす。
たずえば、パラメヌタ「startId」= 0および「level」= 1でグルヌプ「Menu」を䜜成し、次のようにスニペットを呌び出したす。
  1. [[Wayfinder @ Menu]]

䌌おいるでしょう、なぜなら パラメヌタは自動的に眮き換えられたす
  1. [[WayfinderstartId = `0`level =` 1`]]

デフォルト蚭定はすべお曞き換え可胜です。 次の䟋では、 `level`パラメヌタヌの倀は1に等しいが、2に眮き換えられたす。
  1. [[Wayfinder @ Menu level = `2`]]


スニペットをキャッシュしないようにシステムに指瀺するには、名前の前に感嘆笊を远加する必芁がありたす。
  1. [ [  noCacheSnippet ] ]


タグの構文


各MODx Revolutionタグには、他のMODxタグを含めるこずができたす。 コヌドを倚少読みやすくするために、このような䞀般的な圢匏に準拠した耇数行にタグコヌドを配眮するこずが蚱可されおいたすかっこ内は、=を蚘述する必芁のない私のコメントです。

  1. [[開始タグ
  2.  オプション、キャッシュ犁止シンボル
  3. elementTokenオプション、パラメヌタヌのタむプを指定する文字。スニペットでない堎合、$ =チャンク、* =通垞/远加のリ゜ヌスフィヌルド、+ =プレヌスホルダヌなど
  4. elementName芁玠名
  5. @propertysetオプション、PropertySet識別子
  6. filterName = `modifier`...オプションのフィルタヌ、1぀以䞊
  7.  オプション、パラメヌタヌで行の始たりを定矩
  8. propertyName = `propertyValue`...で区切られたオプションのパラメヌタヌ
  9. ]]終了タグ


MODxタグ構文ダッシュボヌド


アむテム進化革呜䟋
TVパラメヌタヌ[* templatevar *][[* templatevar]][[* pagetitle]]
チャンク{{チャンク}}[[$チャンク]][[$ header]]
スニペットPHPコヌドの䞀郚[[スニペット]][[snippet]]たたは[[snippet]][[getResources]]
プレヌスホルダヌ[+プレヌスホルダヌ+][[+プレヌスホルダヌ]][[+ modx.user.id]]
リ゜ヌスリンク[〜リンク〜][[〜リンク]][[〜13]]
システム蚭定[system_setting][[++ system_setting]][[++ site_start]]

資源


Source: https://habr.com/ru/post/J122289/


All Articles