æè¿ãè±èªåã®MODXã³ãã¥ããã£ã§ã¯ããã©ãããã°ããã«å
ã«é²ãããšãã§ãããããšãããããã¯ã«ã€ããŠå€ãã®è°è«ããããŸãã 誰ããéããªãïŒæ°å¹ŽåŸã«ã¯ïŒã¡ãžã£ãŒããŒãžã§ã³3ã«ã€ããŠè°è«ããŸãããçŸæç¹ã§ã¯ã远å ã«ããçŸåšã®ããŒãžã§ã³ãæ¹åããŠããŸãã
å¹
åºãèªè
ãšå
±æãããæè¿ã®ã€ãã³ãã¯ãFenom
ãã³ãã¬ãŒããšã³ãžã³ãåããpdoToolsã®æ°ããããŒãžã§ã³ã®ãªãªãŒã¹ã§ãã
ãã®æé ã§ã¯ããµã€ãã倿Žããå¿
èŠã¯ãããŸãããpdoToolsãããŒãžã§ã³2.0ã«ã¢ããã°ã¬ãŒãããã ãã§ã
æ°ããæ§æã䜿çšã§ã
ãŸã ã æè¯ã®éšåã¯ãMODXã¿ã°ãFenomã«å®å
šã«é£æ¥ããåé¡ãªã飿ºããããšã§ãã ã·ãŒãã®ç°¡åãªäŸïŒ
{if $parent == 3} [[!pdoMenu?parents=`0`]] {else} [[!pdoResources?parents=`1,2,3`]] {/if}
ã«ããã®äžã§ã¯ãpdoToolsããŒãµãŒã«é¢ããèšå€§ãªéã®æ
å ±ããç§ãäžåºŠãåéããããšããããŸããã
ãã®ãããpdoToolsããŒãµãŒã¯ãMODXã·ã¹ãã èšå®ã«ç»é²ãããããŒãžäžã®ã¿ã°åŠçãã€ã³ã¿ãŒã»ããããå¥åã®ã¯ã©ã¹ã§ãã
ã³ã³ããŒãã³ãã®å€ãããŒãžã§ã³ã§ã¯ãã€ã³ã¹ããŒã«æã«ããŒãµãŒãå«ããããšã確èªããå¿
èŠããããŸããããããŒãžã§ã³2.1.1-plããã¯ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸãã äœããã®çç±ã§ãããããªãã«åããªãå Žåã¯ãã·ã¹ãã èšå®ãåé€ããŸã
- parser_class-ããŒãµãŒã¯ã©ã¹å
- parser_class_path-ããŒãµãŒã¯ã©ã¹ãžã®ãã¹
ããã©ã«ãã§ã¯ãMODXã«ã¯ãããã®èšå®ã¯ãããŸããããããã®èšå®ã¯ããã®å Žåã®ããã«ãå€éšããŒãµãŒãæ¥ç¶ããããã«ã®ã¿å¿
èŠã§ãã
åäœåç
pdoParserã¯ã次ã®2ã€ã®å Žåã«äœ¿çšã§ããŸãã
- ã¹ããããã§ãã£ã³ã¯ãã¬ã³ããªã³ã°ããå Žå-ããã¯ãã·ã¹ãã èšå®ã«é¢ä¿ãªããpdoToolsã䜿çšãããã¹ãŠã®ã¹ããããã§åžžã«çºçããŸãã
- ããŒãžã®ã¬ã³ããªã³ã°æ-ããŒãµãŒãã·ã¹ãã èšå®ã§æå¹ã«ãªã£ãŠããå Žåã®ã¿ã
ãã£ã³ã¯åŠç
pdoToolsã¯ã©ã¹ã«ã¯ããã®ããã®2ã€ã®ã¡ãœããããããmodXã¯ã©ã¹ã®ã¡ãœããã«éåžžã«äŒŒãŠããŸãã
- getChunk-å®å
šãªãã£ã³ã¯åŠçããã€ãã£ãMODXããŒãµãŒã䜿çšã§ããŸã
- parseChunk-ãã¬ãŒã¹ãã«ããŒãå€ã«çœ®ãæããã ãã§ãmodParserã¯åŒã³åºãããŸãã
ãããã®ã¡ãœããã®äž»ãªæ©èœã¯ã
_loadChunkãããã¯ãã¡ãœããã䜿çšããŠãã£ã³ã¯ãããŠã³ããŒãããããšã§ããããã«ãããããŒã¿ããŒã¹ãããã£ã³ã¯ãããŒãã§ããã ãã§ãªããä»»æã®æååã倿ã§ããŸãã
ãã£ã³ã¯ãªãã·ã§ã³
ãããã£ãŠãäž¡æ¹ã®pdoToolsã¡ãœããã¯ã次ã®ã¿ã€ãã®ãã£ã³ã¯åããµããŒãããŸãã
@INLINEãŸãã¯@CODE
æãäžè¬çãªãªãã·ã§ã³ã®1ã€ã¯ãããŒãžäžã§ãã£ã³ã¯ã®æ¬æãçŽæ¥ç€ºãããšã§ãã äŸïŒ
[[!pdoResources? &parents=`0` &tpl=`@INLINE <p>{{+id}} - {{+pagetitle}}</p>` ]]
ãã®ãããªè¡šç€ºã«ã¯ãå€ãã®äººãæ°ã«ããªããšããæ©èœããããŸããã¹ãããããåŒã³åºããã
åã« ããã£ã³ã¯å
ã®ãã¹ãŠã®ãã¬ãŒã¹ãã«ããŒãããŒãµãŒã«ãã£ãŠåŠçãããŸãã
ã€ãŸããæ¬¡ã®ããã«ããŒãžäžã§ã¹ãããããåŒã³åºããšïŒ
[[!pdoResources? &parents=`0` &tpl=`@INLINE <p>[[+id]] - [[+pagetitle]]</p>` ]]
ãã¬ãŒã¹ãã«ããŒ
[[+id]]
ãŸãã¯
[[+pagetitle]]
ãã·ã¹ãã ã®ã¡ã¢ãªã«èšå®ããããšãæ¢ã«åŠçããããã£ã³ã¯ãã¹ããããã«éãããæ¬¡ã®ãããªåãè¡ãããŒãžã«è¡šç€ºãããŸãã
15 - 15 - 15 -
ä»ã®ã¹ããããã以åã«èšå®ãããã®ãšåãå€ã ãã®ãããäŸã§ã¯ãã®ãããªç°åžžãªãã¬ãŒã¹ãã«ããŒããããŸã-
[[+]]
代ããã«
{{+}}
ã ã·ã¹ãã ããŒãµãŒã¯ãããã«è§Šãããæäœäžã«pdoToolsãããããéåžžã®ãã®ã«çœ®ãæããŸãã
ãã¹ãŠã®pdoToolsãã£ã³ã¯ã®ãã¬ãŒã¹ãã«ããŒã®ãã¬ãŒã ãšããŠäžæ¬åŒ§ã䜿çšã§ããŸã-ããŒãæã«ãããã
[[+]]
ã«å€æããŸãã
åãçç±ã§ãINLINEãã£ã³ã¯ã®ã¹ãããããšãã£ã«ã¿ãŒã®åŒã³åºãã¯æ©èœããŸããã
ããã¯åäœããŸãã ïŒ
[[!pdoResources? &parents=`0` &tpl=`@INLINE <p>[[+id]] - [[+pagetitle:default=` `]]</p>` ]]
ãããŠ-åé¡ãªã
[[!pdoResources? &parents=`0` &tpl=`@INLINE <p>{{+id}} - {{+pagetitle:default=` `}}</p>` ]]
ã€ã³ã©ã€ã³ãã£ã³ã¯ã䜿çšãããšãã¯ããã®ãã¥ã¢ã³ã¹ãèŠããŠãããŠãã ããã
@FILE
å€ãã®äººã
ã¯ãMODXããã£ã³ã¯ããã¡ã€ã«ã«ä¿åã§ãããããŒã¿ããŒã¹ã§åã³åäœããããã«åŒ·å¶ããããšãéé£ããŸãã ããã¯ãããŒãžã§ã³ç®¡çã·ã¹ãã ã«ãšã£ãŠã¯äžäŸ¿ã§ãããäœéã§ãã
ããŒãžã§ã³2.2ã®MODXã§ã¯ã
ãããã®ç®çã§
éçèŠçŽ ã䜿çšããããšãæšå¥šããŠããŸãããããã€ãã®çç±ããããã®æ¹æ³ã¯ãã¡ã€ã«ãçŽæ¥æäœããããã䟿å©ã§ã¯ãããŸããã
pdoToolsã¯ã@ FILEãæå®ãããšãã«ãã®å¯èœæ§ãéããŸãã
[[!pdoResources? &parents=`0` &tpl=`@FILE resources/mychank.tpl` ]]
ã»ãã¥ãªãã£äžã®çç±ãããæ¡åŒµåã
htmlããã³
tplã®ãã¡ã€ã«ã¯ãäºåå®çŸ©ãããç¹å®ã®ãã£ã¬ã¯ããªããã®ã¿äœ¿çšã§ããŸãã ããã©ã«ãã§ã¯ã次ã®ãšããã§ã
/assets/elements/chunks/
ã
&tplPath
ãã©ã¡ãŒã¿ãŒã䜿çšããŠããã¡ã€ã«çšã®ç¬èªã®ãã£ã¬ã¯ããªãŒãæå®ã§ããŸãã
[[!pdoResources? &parents=`0` &tpl=`@FILE resources/mychunk.tpl` &tplPath=`/core/elements` ]]
ãã®ãã¡ã€ã«ã¯ããµã€ãã®ã«ãŒããã
/core/elements/resources/mychunk.tpl
ãã¡ã€ã«ããããŠã³ããŒããããŸãã
@TEMPLATE
ãã®ã¿ã€ãã®ãã£ã³ã¯ã«ãããã·ã¹ãã ãã³ãã¬ãŒãïŒã€ãŸãmodTemplateãªããžã§ã¯ãïŒã䜿çšããŠåºåãã¹ã¿ã€ã«èšå®ã§ããŸãã
[[!pdoResources? &parents=`0` &tpl=`@TEMPLATE Base Template` ]]
空ã®ãã³ãã¬ãŒããæå®ãããéžæãããã¬ã³ãŒãã«idãŸãã¯ãã³ãã¬ãŒãåã®
template
ãã£ãŒã«ããããå Žåãã¬ã³ãŒãã¯ãã®ãã³ãã¬ãŒãã«ã©ãããããŸãã
[[!pdoResources? &parents=`0` &tpl=`@TEMPLATE` ]]
ããã¯ã
renderResourcesã¹ããããã«é¡äŒŒããŠããŸãã
ãã³ãã¬ãŒãã衚瀺ãããšãã«ãäžé£ã®ãã©ã¡ãŒã¿ãŒïŒã¹ãããããªã©ïŒãæå®ããããšãã§ããŸãã
[[!pdoResources? &parents=`0` &tpl=`@TEMPLATE Base Template@MyPropertySet` ]]
次ã«ããã®ã»ããã®å€ããã³ãã¬ãŒãã«æ¿å
¥ãããŸãã
éåžžã®ãã£ã³ã¯
ããã¯ãããŒã¿ããŒã¹ãããã£ã³ã¯ãããŒãããããã©ã«ãã¢ãŒãã§ãã
[[!pdoResources? &parents=`0` &tpl=`MyChunk` ]]
ãã©ã¡ãŒã¿ãŒã»ãããåãæ¹æ³ã§ãµããŒããããŸãã
[[!pdoResources? &parents=`0` &tpl=`MyChunk@MyPropertySet` ]]
ãã£ã³ã¯ãããŒããããããã®ã¡ãœããã¯
ããã¹ãŠã®ãã€ãã£ãpdoToolsã¹ãããããšãpdoToolsã®
getChunk
ããã³
parseChunk
ã䜿çšããä»ã®ãã¹ãŠã®
ã¹ããããã§
parseChunk
ã
GetChunkã¡ãœãã
ãã®ã¡ãœããã®å®£èšã¯æ¬¡ã®ããã«ãªããŸãã
getChunk(string $chunkName, array $properties, bool $fastMode = false)
ã¡ãœããã¯ãæå®ããããã£ã³ã¯ãããŒããïŒååšããå Žåã¯@BINDINGã®æç€ºã«åŸã£ãŠïŒããããå®å
šã«å転ãããã¹ãŠã®ãã¬ãŒã¹ãã«ããŒãæž¡ãããå€ïŒãã©ã¡ãŒã¿ãŒ$ããããã£ïŒã«çœ®ãæããŸãã
3çªç®ã®ãã©ã¡ãŒã¿ãŒã
fastMode
ãããŒãžã«äœåãªã¿ã°ããªãããã«ãæ®ãã®ãã¹ãŠã®æªå å·¥ã®ãã¬ãŒã¹ãã«ããŒãåãåããŸãã ãããè¡ãããªãå ŽåãããŒãµãŒã¯ãããã®ã¿ã°ãååž°çã«è§£æããããšããŸãïŒããã©ã«ãã§ã¯æå€§10åã®å埩ïŒãããã«ãããé床ãäœäžããå¯èœæ§ããããŸãã
ååž°çããŒãµãŒã¯ãMODXã®å©ç¹ã®1ã€ã§ãããç¹å¥ã«æ®ãããã¿ã°ã¯ãã·ã¹ãã ã¹ããããã®ããžãã¯ã«éåžžã«ããèŠãããŸãã ãã®ããã
fastMode
ããã©ã«ãã§ç¡å¹ã«ãªã£ãŠããŸãã䜿çšããŠããããšã確å®ãªå Žåã«ã®ã¿äœ¿çšããå¿
èŠããããŸãã
pdoToolsããŒãµãŒã¯ããã¹ãŠã®ãã¬ãŒã¹ãã«ããŒãç¬èªã«è§£æã§ããå Žåãã·ã¹ãã ããŒãµãŒãåŒã³åºããŸããã ãã£ã«ã¿ãŒãŸãã¯ã¹ãããããžã®åŒã³åºãããã£ã³ã¯ã«æ®ã£ãŠããå Žåãäœæ¥ã¯modParserã«è»¢éããã远å ã®åŠçæéãå¿
èŠã«ãªããŸãã
ParseChunkã¡ãœãã
ãããŠããã®ã¡ãœããã¯æ¬¡ã®ããã«å®£èšãããŸãïŒ
parseChunk(string $name, array $properties, string $prefix = '[[+', string $suffix = ']]')
ãŸããæå®ãããååãããã£ã³ã¯ãäœæãã@ BINDINGãããå Žåã¯è§£æããç¹å¥ãªåŠçãè¡ããã«ãã¬ãŒã¹ãã«ããŒãå€ã«çœ®ãæããŸãã
ããã¯ãããŒã¿ããã£ã³ã¯ã§ãã©ãŒãããããæãç°¡åã§æéã®æ¹æ³ã§ãã
ããŒãžåŠç
èšå®ã§pdoParserãæå¹ã«ãªã£ãŠããå ŽåããŠãŒã¶ãŒã«è¡šç€ºããããšãã«ããŒãžå
šäœãåŠçããããã«åŒã³åºãããŸãã
ãã®ããŒãµãŒã䜿çšãããšããã¹ãŠã®MODXãã£ã³ã¯ãšã¢ããªã³ãå°ãéãåŠçãããŸãã æ¡ä»¶ãšãã£ã«ã¿ãŒã䜿çšããã
[[+id]]
ã
[[~15]]
ãªã©ã®åçŽãªã¿ã°ã®ã¿ãåŠçããããããå°ããã ãã§ãã ãã ãã圌ã¯äžèŠãªãªããžã§ã¯ããäœæããªããããmodParserãããé«éã§ãã
é床ã®åäžã«å ããŠãããŸããŸãªãªãœãŒã¹ããããŒã¿ã䟿å©ã«åºåããããã®æ°ããæ©äŒãåŸãããŸãã
ã¿ã°fastField
2012幎ã®çµããã«ãMODXããŒãµãŒã«æ°ããã¿ã°ã远å ãã
ãfastFieldã³ã³ããŒãã³ãã«æé·ã
ãå°ããªãã©ã°ã€ã³
ãå
¬éãããŸã
ã ã
圌ã¯
[[#15.pagetitle]]
ãªã©ã®è¿œå ã®ãã¬ãŒã¹ãã«ããŒã®åŠçãã·ã¹ãã ã«è¿œå ããŸãã
èè
ã®èš±å¯ãåŸãŠ ããã®æ©èœã¯ãã§ã«pdoParserã«å«ãŸããŠããããããã«æ¡åŒµãããŠããŸãã
ãã¹ãŠã®fastFieldã¿ã°ã¯
#
ã§å§ãŸã
ãç®çã®ãªãœãŒã¹ã®IDãŸãã¯ã°ããŒãã«é
åã®ååã®ãããããå«ã¿ãŸãã
éåžžã®ãªãœãŒã¹ãã£ãŒã«ãã®åºåïŒ
[[#15.pagetitle]] [[#20.content]]
TVãªãœãŒã¹ãã©ã¡ãŒã¿ãŒïŒ
[[#15.date]] [[#20.some_tv]]
MiniShop2補åãã£ãŒã«ãïŒ
[[#21.price]] [[#22.article]]
ãªãœãŒã¹ãšååã®é
åïŒ
[[#12.properties.somefield]] [[#15.size.1]]
ã¹ãŒããŒã°ããŒãã«é
åïŒ
[[#POST.key]] [[#SESSION.another_key]] [[#GET.key3]] [[#REQUEST.key]] [[#SERVER.key]] [[#FILES.key]] [[#COOKIE.some_key]]
é
åå
ã®ä»»æã®ãã£ãŒã«ããæå®ã§ããŸãã
[[#15.properties.key1.key2]]
é
åå
ã®å€ãããããªãå Žåã¯ãæå®ããã ãã§å®å
šã«åºåãããŸãã
[[#GET]] [[#15.colors]] [[#12.properties]]
FastFieldã¿ã°ã¯ãMODXã¿ã°ãšçµã¿åãããããšãã§ããŸãã
[[#[[++site_start]].pagetitle]] [[#[[++site_start]]]]
ãã§ãã ãã³ãã¬ãŒããšã³ãžã³
Fenomãã³ãã¬ãŒããšã³ãžã³ã®ãµããŒãã¯ã
ããŒãžã§ã³2.0ããpdoToolsã«ç»å Žã ããã®åŸPHP 5.3+ãå¿
èŠãšãå§ããŸããã
ãã€ãã£ãmodParserãããã¯ããã«é«éã«åäœããåäžã®MODXã¿ã°ãæããªãããã«ãã£ã³ã¯ãæžãæãããšãmodParserã¯ãŸã£ããèµ·åããŸããã åæã«ããã¡ããã1ã€ã®ãã£ã³ã¯ã§å€ãã¿ã°ãšæ°ããã¿ã°ã®äž¡æ¹ãåæã«æäœããããšã
ã§ããŸãã
次ã®ã·ã¹ãã èšå®ã¯ããã³ãã¬ãŒããšã³ãžã³ã«ããåŠçã«åœ±é¿ããŸãã
- pdotools_fenom_default -Fenomãä»ããpdoToolsãã£ã³ã¯åŠçãæå¹ã«ããŸãã ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸãã
- pdotools_fenom_parser-ãµã€ãã®ãã¹ãŠã®ããŒãžã®ãã³ãã¬ãŒããšã³ãžã³ã«ããåŠçãå«ãŸããŸãã ã€ãŸãããã£ã³ã¯ã ãã§ãªãããã¿ãŒã³ããããŸãã
- pdotools_fenom_php-ãã³ãã¬ãŒããšã³ãžã³ã§ã®PHP颿°ã®ãµããŒããå«ãŸããŠããŸãã ãããŒãžã£ãŒã¯ãã£ã³ã¯ããçŽæ¥PHPã«ã¢ã¯ã»ã¹ãããããããã¯éåžžã«å±éºãªæ©èœã§ãã
- pdotools_fenom_modx-ã·ã¹ãã 倿°
{$modx}
ããã³{$pdoTools}
ã{$pdoTools}
ãã³ãã¬ãŒãã«è¿œå ããŸãã ãŸããéåžžã«å±éºã§ãããã¹ãŠã®ãããŒãžã£ãŒãMODXãªããžã§ã¯ãããã£ã³ã¯ãã管çã§ããŸãã - pdotools_fenom_options- å
¬åŒããã¥ã¡ã³ãã«ããèšå®ã®é
åãå«ãJSONæååã äŸïŒ
{"auto_escape":true,"force_include":true}
- pdotools_fenom_cache-ã³ããŒããããã³ãã¬ãŒãããã£ãã·ã¥ããŸãã ããã©ã«ãã§ç¡å¹ã«ãªã£ãŠããäœæ¥ãµã€ãã®è€éãªãã£ã³ã¯ã«å¯ŸããŠã®ã¿æå³ããããŸãã
ãã®ãããããã©ã«ãã§ã¯ãFenomã¯pdoToolsãééãããã£ã³ã¯ã§ã®ã¿åäœããããã«æå¹ã«ãªã£ãŠããŸãã ããã¯å®å
šã«å®å
šã§ãããã·ã¹ãã 管çè
ã¯ããã䟿å©ãªæ§æãšé«éãé€ããŠãè¿œå æ©èœãåãåããŸããã
pdotools_fenom_parserãæå¹ã«ãããšãããã¥ã¡ã³ãããã³ããŒãžãã³ãã¬ãŒãã®ã³ã³ãã³ãã§çŽæ¥
Fenomæ§æã䜿çšã§ããŸããã1ã€ã®æ³šæç¹ããããŸãããã³ãã¬ãŒããšã³ãžã³ã¯ãäžæ¬åŒ§ã«èª€ã£ãŠå¿çããå¯èœæ§ããããŸãã
ãã®ãããªå Žåãèè
ã¯{
ignore }ã¿ã°ã®äœ¿çšãæšå¥šããŸãã
Fenomããµã€ãå
šäœã§ã°ããŒãã«ã«æå¹ã«ããäºå®ãããå Žåããã¹ãŠã®ããŒãžã§æ£åžžã«æ©èœãããã©ããã確èªããå¿
èŠããããŸãã
æ§æ
éå§ããã«ã¯ã
å
¬åŒããã¥ã¡ã³ããèªãããšããå§ãããŸãããã®åŸãMODXã®æ§æãæ€èšããŸãã
ã¹ããããã®ãã¹ãŠã®å€æ°ã¯ãã®ãŸãŸãã£ã³ã¯ã«è»¢éããããããå€ããã£ã³ã¯ãæ°ããæ§æã§æžãæããããšã¯æ¬åœã«æ¥œããã§ãã
MODX | ãã§ãã |
[[+ id]] | {$ id} |
[[+ idïŒdefault = `test`]] | {$ id ?: 'test'} |
[[+ idïŒis = ``ïŒthen = `test`ïŒelse =` [[+ pagetitle]] `]]] | {$ id == ''ïŒ 'ãã¹ã'ïŒ$ pagetitle} |
ããè€éãªãšã³ãã£ãã£ã䜿çšããããã«ãpdoParserã¯ãµãŒãã¹å€æ°
{$ _modx}ãæäŸããŸããããã«ãããã·ã¹ãã ã®ããã€ãã®å€æ°ãšã¡ãœããã«å®å
šã«ã¢ã¯ã»ã¹ã§ããŸãã
MODX | ãã§ãã |
[[* id]] | {$ _modx-> resource.id} |
[[* tv_param]] | {$ _modx-> resource.tv_param} |
[[ïŒ
lexicon]] | {$ _modx-> lexiconïŒ 'lexicon'ïŒ} |
[[ã15]] | {$ _modx-> makeUrlïŒ15ïŒ} |
[[ã[[* id]]]] | {$ _modx-> makeUrlïŒ$ _ modx-> resource.idïŒ} |
[[++ system_setting]] | {$ _modx-> config.system_setting} |
ããã«å ããŠã倿°ã䜿çšã§ããŸãã
{$ _modx-> config} -ã·ã¹ãã èšå®
{$_modx->config.site_name} {$_modx->config.emailsender} {$_modx->config['site_url']} {$_modx->config['any_system_setting']}
{$ _modx-> user} -çŸåšã®ãŠãŒã¶ãŒã®é
åã èš±å¯ãããŠããå Žåããããã¡ã€ã«ã®ããŒã¿ã远å ãããŸãã
{if $_modx->user.id > 0} , {$_modx->user.fullname}! {else} . {/if}
{$ _modx-> context} -çŸåšã®ã³ã³ããã¹ããæã€é
å
{$_modx->context.key}
{$ _modx-> resource} -æ¢ã«äžèšã®äŸã§èŠãããã«ãçŸåšã®ãªãœãŒã¹ã®é
å
{$_modx->resource.id} {$_modx->resource.pagetitle} {$_modx->makeUrl($_modx->resource.id)}
{$ _modx-> lexicon} -ä»»æã®èŸæžãããŒãããããã«äœ¿çšã§ãããªããžã§ã¯ãïŒé
åã§ã¯ãããŸããïŒïŒ
modLexicon ïŒ
{$_modx->lexicon->load('ms2gallery:default')} ms2Gallery: {$_modx->lexicon('ms2gallery_err_gallery_exists')}
å¥ã®é¢æ°
{$_modx->lexicon()}
ãã¬ã³ãŒãã®åºåãæ
åœããŸãã
ãã€ã³ããæã€ãã¬ãŒã¹ãã«ããŒ
Fenomã¯é
åã®å€ã«ã¢ã¯ã»ã¹ããããã«ãã€ã³ãã䜿çšããMODXã¯éåžžãã®ãããªé
åãããã¬ãŒã¹ãã«ããŒã眮ããŸãã ãããã£ãŠã[[+ tag.sub_tag]]ã¿ã°ã®å ŽåãFenomã«ã¯é¡äŒŒç©ã¯ãããŸããã
ãããã£ãŠããã®ãããªãã¬ãŒã¹ãã«ããŒã«ã¯ã2çªç®ã®ãŠãŒãã£ãªãã£å€æ°-
{$ _pls}ã䜿çšããå¿
èŠããããŸãã
{$_pls['tag.subtag']}
åºåã¹ãããããšãã£ã³ã¯
{$_modx}
倿°ã¯ãå®éã«ã¯ã·ã³ãã«ã§å®å
šãª
microMODXã¯ã©ã¹ã§ããããã£ãŠãã¹ãããããšãã£ã³ã¯ã¯æ¬¡ã®ããã«åŒã³åºãããŸãã
{$_modx->runSnippet('!pdoPage@PropertySet', [ 'parents' => 0, 'showLog' => 1, 'element' => 'psoResources', 'where' => ['isfolder' => 1], 'showLog' => 1, ])} {$_modx->getPlaceholder('page.total')} {$_modx->getPlaceholder('page.nav')}
ã芧ã®ãšãããæ§æã¯PHPãšã»ãŒåãã§ãããæ°ããå¯èœæ§ãéãããŠããŸãã ããšãã°ãJSONæååã®ä»£ããã«é
åãæå®ã§ããŸãã
ããã©ã«ãã§ã¯ããã¹ãŠã®ã¹ããããã¯ãã£ãã·ã¥ãšåŒã°ããŸããã远å ã§ã
!
ååã®å-MODXã¿ã°ã®ããã«ã
ãã€ãã£ãMODXã¡ãœããã䜿çšããŠã¹ãããããåŒã³åºããšãpdoToolsãèµ·åããŠãã£ã³ã¯ã衚瀺ããããã®ãã¹ãŠã®æ©èœã䜿çšã§ããŸãã
{$_modx->getChunk('MyChunk@PropertySet')} {$_modx->parseChunk('MyChunk', [ 'pl1' => 'placeholder1', 'pl2' => 'placeholder2', ])} {$_modx->getChunk('@TEMPLATE Base Template')} {$_modx->getChunk('@INLINE : {$_modx->config.site_name} ')} {$_modx->getChunk( '@INLINE : {$var}', ['var' => ''] )} {$_modx->getChunk(' @INLINE : {$_modx->runSnippet("pdoResources", [ "parents" => $parents ])} : {$_modx->getPlaceholder("total")} ', ['parents' => 0] )}
äžèšã®äŸã¯å°ãããããã§ããããããã¯èªåã§åäœããŸãã
ãã£ãã·ã¥ç®¡ç
modX :: cacheManagerãµãŒãã¹ã¯
{$ _modx}ãªããžã§ã¯ãã§å©çšã§ããŸããããã«ãããåŒã³åºãããã¹ããããã«ä»»æã®ãã£ãã·ã¥æéãèšå®ã§ããŸãã
{if !$snippet = $_modx->cacheManager->get('cache_key')} {set $snippet = $_modx->runSnippet('!pdoResources', [ 'parents' => 0, 'tpl' => '@INLINE {$id} - {$pagetitle}', 'showLog' => 1, ])} {set $null = $_modx->cacheManager->set('cache_key', $snippet, 1800)} {/if} {$snippet}
ãã®ãã£ãã·ã¥ã¯ã
/core/cache/default/
ã§è¡šç€ºã§ããŸãããã®äŸã§ã¯ã30åéä¿åãããŸãã
cacheManager->set
ãããŒãžã«1ïŒã€ãŸãtrueïŒã
cacheManager->set
ããªãããã«ã
set $null = ...
å¿
èŠã§ãã
ãŸããã·ã¹ãã ããã»ããµãèµ·åã§ããŸãïŒååãªæš©éãããå ŽåïŒã
{$_modx->runProcessor('resource/update', [ 'id' => 10, 'alias' => 'test', 'context_key' => 'web', ])}
èªå¯ãã§ãã¯
{$_modx}
ã«ã¯ãŠãŒã¶ãŒãæã€ãªããžã§ã¯ãããªããããæ¿èªãšã¢ã¯ã»ã¹æš©ããã§ãã¯ããã¡ãœããã¯ã¯ã©ã¹ã«çŽæ¥äœ¿çšãããŸãã
{$_modx->isAuthenticated()} {$_modx->hasSessionContext('web')} {$_modx->hasPermission('load')}
ãã®ä»ã®æ¹æ³
ãããã®ã¡ãœããã¯ãã¹ãŠã®MODXéçºè
ã«éŠŽæã¿ãããã¯ããªã®ã§ãäŸãæããŠèª¬æããŸãã
{$_modx->regClientCss('/assets/css/style.css')} {$_modx->regClientScript('/assets/css/script.js')} {$_modx->sendForward(10)} {$_modx->sendRedirect('http://yandex.ru')} {$_modx->setPlaceholder('key', 'value')} {$_modx->getPlaceholder('key')} {if $res = $_modx->findResource('url-to/doc/')} {$_modx->sendRedirect( $_modx->makeUrl($res) )} {/if}
ãã³ãã¬ãŒãæ¡åŒµ
Fenomãã³ãã¬ãŒããšã³ãžã³ã䜿çšãããšã1ã€ã®ãã£ã³ã¯ïŒä»ã®ãã³ãã¬ãŒãïŒãå«ããããæ¡åŒµãããããããšãã§ããŸãã
ããšãã°ããã£ã³ã¯ã®ã³ã³ãã³ããåã«ããŒãã§ããŸãã
{include ' '} modTemplate {include 'template: '} {include 'chunk@propertySet'} {include 'template:Name@propertySet'}
å
¬åŒããã¥ã¡ã³ãã®{
include }ã®è©³çްãã芧ãã ããã
ããã«è峿·±ãæ©èœã¯ããã³ãã¬ãŒãã®{
extends }ã§ããå«ãŸããã·ã¹ãã èšå®
pdotools_fenom_parserãå¿
èŠ
ã§ã ã
åºæ¬ãã³ãã¬ãŒããFenom BaseããäœæããŸãã
<!DOCTYPE html> <html lang="en"> <head> {include 'head'} </head> <body> {block 'navbar'} {include 'navbar'} {/block} <div class="container"> <div class="row"> <div class="col-md-10"> {block 'content'} {$_modx->resource.content} {/block} </div> <div class="col-md-2"> {block 'sidebar'} Sidebar {/block} </div> </div> {block 'footer'} {include 'footer'} {/block} </div> </body> </html>
éåžžã®ãã£ã³ã¯ïŒã¡ãªã¿ã«ã
Theme.Bootstrapã³ã³ããŒãã³ãã®éåžžã®MODXãã¬ãŒã¹ãã«ããŒïŒãå«ãŸããå¥ã®ãã³ãã¬ãŒãã§å±éã§ããããã€ãã®ãããã¯ãå®çŸ©ããŸãã
次ã«ããFenom ExtendedããäœæããŸãã
{extends 'template:Fenom Base'} {block 'content'} <h3>{$_modx->resource.pagetitle}</h3> <div class="jumbotron"> {parent} </div> {/block}
ãããã£ãŠã1ã€ã®åºæ¬çãªãã³ãã¬ãŒããèšè¿°ãããããåã§å±éã§ããŸãã
åæ§ã«ããã£ã³ã¯ãäœæããã³å±éã§ããŸããmodTemplateã§äœæ¥ããã«ã¯ã
templateïŒãã¬ãã£ãã¯ã¹ãæå®ããå¿
èŠããããŸããããã£ã³ã¯ã§ã¯ãªãããã¹ãŠã®
{include}
ããã³
{extends}
ããã©ã«ãã§æ©èœããããšã«æ³šæããŠãã ããã
æ§èœè©Šéš
ãã®ã³ã³ãœãŒã«ã¹ã¯ãªããã䜿çšããŠãæ°ãããµã€ããäœæãã1000åã®ãªãœãŒã¹ã远å ããŸãã
<?php define('MODX_API_MODE', true); require 'index.php'; $modx->getService('error','error.modError'); $modx->setLogLevel(modX::LOG_LEVEL_FATAL); $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML'); for ($i = 1; $i <= 1000; $i++) { $modx->runProcessor('resource/create', array( 'parent' => 1, 'pagetitle' => 'page_' . rand(), 'template' => 1, 'published' => 1, )); }
次ã«ã2ã€ã®ãã£ã³ã¯ãäœæããŸãããããããæ¬¡ã®å
容ã®
modx
ãš
modx
ã§ãã
<p>[[+id]] - [[+pagetitle]]</p>
ãããŠ
<p>{$id} - {$pagetitle}</p>
ãããŠã2ã€ã®ã³ã³ãœãŒã«ãã¹ãã¹ã¯ãªããã远å ããŸãã ãã€ãã£ãããŒãµãŒMODXã®å Žå
<?php define('MODX_API_MODE', true); require 'index.php'; $modx->getService('error','error.modError'); $modx->setLogLevel(modX::LOG_LEVEL_FATAL); $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML'); $res = array(); $c = $modx->newQuery('modResource'); $c->select($modx->getSelectColumns('modResource')); $c->limit(10); if ($c->prepare() && $c->stmt->execute()) { while ($row = $c->stmt->fetch(PDO::FETCH_ASSOC)) { $res .= $modx->getChunk('modx', $row); } } echo number_format(microtime(true) - $modx->startTime, 4), 's<br>'; echo number_format(memory_get_usage() / 1048576, 4), 'mb<br>'; echo $res;
ãããŠãpdoToolsã®å ŽåïŒ
<?php define('MODX_API_MODE', true); require 'index.php'; $modx->getService('error','error.modError'); $modx->setLogLevel(modX::LOG_LEVEL_FATAL); $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML'); $pdoTools = $modx->getService('pdoTools'); $res = array(); $c = $modx->newQuery('modResource'); $c->select($modx->getSelectColumns('modResource')); $c->limit(10); if ($c->prepare() && $c->stmt->execute()) { while ($row = $c->stmt->fetch(PDO::FETCH_ASSOC)) { $res .= $pdoTools->getChunk('fenom', $row);
pdoToolsã¯äž¡æ¹ã®æ§æãçè§£ãããããMODXã¿ã°ã¢ãŒããšFenomã¢ãŒãã®2ã€ã®ãã¹ãããããŸãã
ã¹ã¯ãªããã«ã¯ãå¶é= 10ã®æç€ºããããŸãããã®åŸã衚ã«ãå¢å ããæ°å€ã瀺ããŸãã
å¶é | MODX | pdoToolsïŒMODXïŒ | pdoToolsïŒãã§ãã ïŒ |
10 | 0.0369ç§8.1973mb | 0.0136ç§7.6760mb | 0.0343ç§8.6503mb |
100 | 0.0805ç§8.1996mb | 0.0501ç§7.6783mb | 0.0489ç§8.6525mb |
500 | 0.2498ç§8.2101mb | 0.0852ç§7.6888mb | 0.0573ç§8.6630mb |
1000 | 0.4961s 8.2232mb | 0.1583ç§7.7019mb | 0.0953ç§8.6761mb |
ãããŠããã£ã³ã¯ãå°ãè€éã«ããŸã-ãªãœãŒã¹ã®ãªã³ã¯çæãš
menutitle
åºåã远å ã
menutitle
ïŒ
<p><a href="[[~[[+id]]]]">[[+id]] - [[+menutitle:default=`[[+pagetitle]]`]]</a></p>
ãããŠ
<p><a href="{$_modx->makeUrl($id)}">{$id} - {$menutitle ?: $pagetitle}</a></p>
å¶é | MODX | pdoToolsïŒMODXïŒ | pdoToolsïŒãã§ãã ïŒ |
10 | 0.0592ç§8.2010mb | 0.0165ç§7.8505mb | 0.0346ç§8.6539mb |
100 | 0.1936s 8.2058mb | 0.0793ç§7.8553mb | 0.0483ç§8.6588mb |
500 | 0.3313ç§8.2281mb | 0.2465s 7.8776mb | 0.0686ç§8.6811mb |
1000 | 0.6073ç§8.2560mb | 0.4733s 7.9055mb | 0.1047ç§8.7090mb |
ã芧ã®ãšãããpdoToolsãä»ãããã£ã³ã¯ã®åŠçã¯ããã¹ãŠã®å Žåã«ãããŠé«éã§ãã
åæã«ãFenomãã£ã³ã¯ã®éå§ã«ã¯äžå®ã®æå°å€ããããŸãããããã¯ãã³ãã¬ãŒããã³ã³ãã€ã«ããå¿
èŠãããããã§ãã
ãããã«
pdoToolsããŒãµãŒã®æ©èœãèŠçŽããŸãããã
- ã¯ã€ãã¯ã¯ãŒã¯
- ãã¡ã€ã«ãå«ãããŸããŸãªãœãŒã¹ãããã£ã³ã¯ãããŠã³ããŒããã
- FastFieldã¿ã°ã®ãµããŒã
- Fenom Template Engineã®ãµããŒã
- ãã³ãã¬ãŒãã®ç¶æ¿
- ãã³ãã¬ãŒãæ¡åŒµ
- é«åºŠãªMODXæ©èœãžã®å®å
šãªã¢ã¯ã»ã¹
çŸæç¹ã§ã¯ãpdoToolsã¯
å
¬åŒãªããžããªãã40,000å以äž
ãmodstore.proãªããžããªãã10,000å以äžããŠã³ããŒããããŠãããMODXã§ã®æ°ãããã³ãã¬ãŒããã¯ãããžãŒã®åºç¯ãªæ®åãæåŸ
ã§ããŸãã
çŽ æŽããããã³ãã¬ãŒããšã³ãžã³ã
æäŸããŠããã
aco habrayuzerã«æè¬ããŸãïŒ