MODx рдХреНрд░рд╛рдВрддрд┐ рдХреЗ рд▓рд┐рдП рдРрдб-рдСрди рд╡рд┐рдХрд╛рд╕ред рднрд╛рдЧ 1


рд╣рдордиреЗ рдореЙрдбреЗрдХреНрд╕ рд░рд┐рд╡реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдЕрднреА рднреА рд░реВрд╕реА рдореЗрдВ рдХреЛрдИ рд╡реНрдпрд╛рдкрдХ рдЧрд╛рдЗрдб рдирд╣реАрдВ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдВрддрд░рд╛рд▓ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЧрд╛рдЗрдб рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╣рд▓ рдмреЗрдХрд╛рд░ рд╣реИ :)ред рдпрджреНрдпрдкрд┐ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реВрд╕реА рдореЗрдВ рдкрдврд╝рдирд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреА рд░рд╛рдп рдореЗрдВ, рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ, рдЗрд╕ рдореМрд▓рд┐рдХ рдХрд╛ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд▓рд╛рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдХрд╛рдо рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдзреИрд░реНрдп рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдХреЛрдИ рдореЗрд░реА рдорджрдж рдХрд░реЗрдЧрд╛ред рдбрд░реЛ рдордд рдХрд┐ рдмрд╣реБрдд рдкрд╛рда рд╣реИ, рдпрд╣ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд╣реА рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред

рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

рдпрд╣ рдкрд╛рда рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдбреВрдбрд▓ рдРрдб-рдСрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдЧрд╛, рдЬреЛ рдПрдХ рдХрд╕реНрдЯрдо рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбреВрдбрд▓ рдирд╛рдордХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд╛рдо рдФрд░ рд╡рд┐рд╡рд░рдг рд╣реЛред рд╣рдо рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдЪрдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛, рдПрдХреНрд╕рдЯрд░реНрдЬрд╝ (рднрд╛рдЧ 2) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░рд╛ рдкреНрд░рд╢рд╛рд╕рди рдкреГрд╖реНрда (рдШрдЯрдХ), рдФрд░ рдкреИрдХреЗрдЬ (рдкреИрдХреЗрдЬ) рдореЗрдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рдмрдирд╛рдПрдЧрд╛ - рднрд╛рдЧ 3ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рднреА i18n- рд╣реЛрдЧрд╛ рд╕рдВрдЧрдд рдпрд╛рдиреА рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рд╡реИрд╕реЗ, рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдирд╛

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝реЛрд▓реНрдбрд░ / www / рдбреВрдбрд▓ / рдмрдирд╛рдпрд╛ред рдпрд╣ рдлрд╝реЛрд▓реНрдбрд░ рдореБрдЭреЗ http: // localhost / doodles / рдХреЗ рдкрддреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣рдорд╛рд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
рдХреБрдЫ рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 3 рдореБрдЦреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ: рдХреЛрд░ / , рд╕рдВрдкрддреНрддрд┐ / рдФрд░ _build / ред рдЖрдорддреМрд░ рдкрд░, MODx Revo рдРрдб-рдСрди рдХреЛ рджреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреЛрд░ / рдШрдЯрдХ / myextra / рдФрд░ рд╕рдВрдкрддреНрддрд┐ / рдШрдЯрдХ / myextra / ред рд╕рдВрдкрддреНрддрд┐ / рдШрдЯрдХреЛрдВ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рд╡реЗрдм-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд╕реАрдПрд╕рдПрд╕, рдЖрджрд┐ред рдпреЗ рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╕рднреА PHP рдлрд╛рдЗрд▓реЗрдВ рдХреЛрд░ / рдШрдЯрдХреЛрдВ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреАред рдХреЛрд░ / рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрдЯ (рд╡реЗрдмрд░реЛрдЯ) рдХреЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрди рдХреИрдЯрд▓реЙрдЧ рдХреЛ рд╕рд╛рдЗрдЯ рдХреЗ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рднрд╛рдЧ рдХреЗ "рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрди" рдЕрдиреБрднрд╛рдЧ рд╕реЗ рддреНрд╡рд░рд┐рдд рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЗ рдкрд░рд┐рд╡рд╣рди рдкреИрдХреЗрдЬ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред _Build / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдкрд░рд┐рд╡рд╣рди рдкреИрдХреЗрдЬ рдореЗрдВ рдкреИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реА рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред рдкрд╛рда рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдореЗрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ PHP рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧреА - рдХрдиреЗрдХреНрдЯрд░ ред рдПрдлрдкреА ред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╣рдореЗрдВ рд╣рдорд╛рд░реЗ рдХрд╕реНрдЯрдо рдкреНрд░рдмрдВрдзрдХ рдкреГрд╖реНрда (CMP) рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧреАред рдЙрд╕ рдкрд░ рдФрд░ рдмрд╛рдж рдореЗрдВред

рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛрд░ / рдШрдЯрдХреЛрдВ / рдбреВрдбрд▓ / рдореЗрдВ рдХрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдмрдирд╛рдПрдБ:
рдирд┐рдпрдВрддреНрд░рдХ - рд╕реАрдПрдордкреА рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ;
рдбреЙрдХреНрд╕ - рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЪреИрдВрдЬ, рд░реАрдбрдореА рдФрд░ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ;
рддрддреНрд╡ - рд╣рдорд╛рд░реЗ рд╕рднреА рд╕реНрдирд┐рдкреЗрдЯреНрд╕, рдкреНрд▓рдЧрдЗрдиреНрд╕, рдЪрдВрдХреНрд╕ рдЖрджрд┐;
рд▓реЗрдХреНрд╕рд┐рдХреЙрди - рд╕рднреА i18n рднрд╛рд╖рд╛ рдХреА рдлрд╛рдЗрд▓реЗрдВ;
рдореЙрдбрд▓ - рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛рдПрдВ, рд╕рд╛рде рд╣реА рд╣рдорд╛рд░реЗ рдХрд╕реНрдЯрдо рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП XML рд╕реНрдХреАрдорд╛ рдлрд╝рд╛рдЗрд▓;
рдкреНрд░реЛрд╕реЗрд╕рд░ - CMP рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ред

рд╕реНрдирд┐рдкреЗрдЯ рдирд┐рд░реНрдорд╛рдг

рд╕реНрдирд┐рдкреЗрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ: /www/doodles/core/compenders/doodles/elements/snippets/snippet.doodles.php ред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:

$doodles = $modx->getService('doodles','Doodles',$modx->getOption('doodles.core_path',null,$modx->getOption('core_path').'components/doodles/').'model/doodles/',$scriptProperties); if (!($doodles instanceof Doodles)) return ''; 

рдЖрдЙрдЪ! рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдпрд╣реАрдВ рдкрд░ рдЬрд╛рджреВ рд╣реЛрддрд╛ рд╣реИред рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ getService () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИред рдЖрд╕рд╛рди рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝реЗрдВрдЧреЗ:

 $defaultDoodlesCorePath = $modx->getOption('core_path').'components/doodles/'; $doodlesCorePath = $modx->getOption('doodles.core_path',null,$defaultDoodlesCorePath); $doodles = $modx->getService('doodles','Doodles',$doodlesCorePath.'model/doodles/',$scriptProperties); 

рдареАрдХ рд╣реИ, $ modx рдХреНрдпрд╛ рд╣реИ-> getOption () ? рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╣рдорд╛рд░реА рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред $ modx-> getService () рдПрдХ рд╡рд░реНрдЧ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рд╡рд╕реНрддреБ рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╡рд╣ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдЗрд╕реЗ $ modx-> рдбреВрдбрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ (рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рд╣реБрдЖ)ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ ред

рдкрде рд╕реЗрдЯрд┐рдВрдЧ рдмрдирд╛рдПрдБ

рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, "рд╕рд┐рд╕реНрдЯрдо" -> "рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕" рдкрд░ рдЬрд╛рдПрдВред рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рдирдП рдкреИрд░рд╛рдореАрдЯрд░ рдмрдирд╛рдПрдБ:
doodles.core_path - {core_path} рдШрдЯрдХ / рдбреВрдбрд▓ /
doodles.assets_url - {рд╕рдВрдкрддреНрддрд┐_рдкрде} рдШрдЯрдХ / рдбреВрдбрд▓ /

рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдирд╛

рдПрдХ рдХреНрд▓рд╛рд╕ рдлрд╝рд╛рдЗрд▓ /www/doodles/core/compenders/doodles/model/doodles/doodles.class.php рдмрдирд╛рдПрдВред рдпрд╣ рд╡рд░реНрдЧ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдЗрд╕рдореЗрдВ рд╣рдо рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЕрдкрдиреЗ рдШрдЯрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

 <?php class Doodles { public $modx; public $config = array(); function __construct(modX &$modx,array $config = array()) { $this->modx =& $modx; $basePath = $this->modx->getOption('doodles.core_path',$config,$this->modx->getOption('core_path').'components/doodles/'); $assetsUrl = $this->modx->getOption('doodles.assets_url',$config,$this->modx->getOption('assets_url').'components/doodles/'); $this->config = array_merge(array( 'basePath' => $basePath, 'corePath' => $basePath, 'modelPath' => $basePath.'model/', 'processorsPath' => $basePath.'processors/', 'chunksPath' => $basePath.'elements/chunks/', 'jsUrl' => $assetsUrl.'js/', 'cssUrl' => $assetsUrl.'css/', 'assetsUrl' => $assetsUrl, 'connectorUrl' => $assetsUrl.'connector.php', ),$config); } } 


рдЕрдм рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ рд╕реНрдирд┐рдкреЗрдЯ рдкрд░ рдЬрд╛рдПрдВред рдХреБрдЫ рдЧреБрдг рдЬреЛрдбрд╝реЗрдВ:

 $dood = $modx->getService('doodles','Doodles',$modx->getOption('doodles.core_path',null,$modx->getOption('core_path').'components/doodles/').'model/doodles/',$scriptProperties); if (!($dood instanceof Doodles)) return ''; /* setup default properties */ $tpl = $modx->getOption('tpl',$scriptProperties,'rowTpl'); $sort = $modx->getOption('sort',$scriptProperties,'name'); $dir = $modx->getOption('dir',$scriptProperties,'ASC'); $output = ''; return $output; 


рдХреВрд▓ред рдЕрдм рд╣рдо рдЕрдкрдиреЗ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП xPDO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ... рдУрд╣ред рд╣рдордиреЗ рдЕрднреА рддрдХ рдЙрдирдХреЗ рд▓рд┐рдП xPDO рдореЙрдбрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╣рдореЗрдВ рдХрд░рдирд╛ рд╣реИред

рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг

XPDO рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдЪреНрдЫрд╛ OOP рдХреНрд╡реЗрд░реА рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЕрдореВрд░реНрдд рдмрдирд╛рддрд╛ рд╣реИред рд╡рд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдЕрдЪреНрдЫреА, рд╕рд╛рдл рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдХреЛрдб рдХреЗ рд╕рднреА рдмрд╣реБрдд рдХрдо рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рд╣рдореЗрдВ xPDO рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ XML рдлрд╝рд╛рдЗрд▓ /www/doodles/core/compenders/doodles/model/schema/doodles.mysql.schema.xml рдмрдирд╛рдПрдБред рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рдбрд╛рд▓реЗрдВ:

 <?xml version="1.0" encoding="UTF-8"?> <model package="doodles" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM"> <object class="Doodle" table="doodles" extends="xPDOSimpleObject"> <field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default=""/> <field key="description" dbtype="text" phptype="string" null="false" default=""/> <field key="createdon" dbtype="datetime" phptype="datetime" null="true"/> <field key="createdby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" /> <field key="editedon" dbtype="datetime" phptype="datetime" null="true"/> <field key="editedby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" /> <aggregate alias="CreatedBy" class="modUser" local="createdby" foreign="id" cardinality="one" owner="foreign"/> <aggregate alias="EditedBy" class="modUser" local="editedby" foreign="id" cardinality="one" owner="foreign"/> </object> </model> 


рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдпрд╣ рд╕рдм рдХреНрдпрд╛ рд╣реИред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐:
 <model package="doodles" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM"> 

рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рд╣реИ - "рдбреВрдбрд▓"ред рд╡рд╣ рдпрд╣ рднреА рдХрд╣рддреА рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ "xPDOObject" рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рд╕рд░реНрдХрд┐рдЯ MySQL рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╣ рдпрд╣ рднреА рдХрд╣рддреА рд╣реИ рдХрд┐ MyISAM рд╣рдорд╛рд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ MySQL рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЧреБрдг рд╕реЗрдЯ рдХрд░реЗрдВред рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ xPDOSimpleObject рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдСрдЯреЛ-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

 <aggregate alias="CreatedBy" class="modUser" local="createdby" foreign="id" cardinality="one" owner="foreign"/> <aggregate alias="EditedBy" class="modUser" local="editedby" foreign="id" cardinality="one" owner="foreign"/> 


рдпрд╣ рдЕрдиреНрдп xPDO рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИред

рд╕реНрдХреАрдорд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдЕрдм рд╣рдорд╛рд░реЗ _build / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ /www/doodles/_build/build.config.php рдмрдирд╛рдПрдБ:

 <?php define('MODX_BASE_PATH', '../'); define('MODX_CORE_PATH', MODX_BASE_PATH . 'core/'); define('MODX_MANAGER_PATH', MODX_BASE_PATH . 'manager/'); define('MODX_CONNECTORS_PATH', MODX_BASE_PATH . 'connectors/'); define('MODX_ASSETS_PATH', MODX_BASE_PATH . 'assets/'); define('MODX_BASE_URL','/modx/'); define('MODX_CORE_URL', MODX_BASE_URL . 'core/'); define('MODX_MANAGER_URL', MODX_BASE_URL . 'manager/'); define('MODX_CONNECTORS_URL', MODX_BASE_URL . 'connectors/'); define('MODX_ASSETS_URL', MODX_BASE_URL . 'assets/'); 


рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд░рд╛рд╕реНрддреЗ рд╕рд╣реА рд╣реИрдВред рдЕрдм рд╣рдо рд╕реНрд╡рдпрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рд╣рдорд╛рд░реА XML- рд╕реНрдХреАрдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдЧреА рдФрд░ рдЗрд╕рдХрд╛ PHP-рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧреАред рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ / / http : //doodles/_build/build.schema.php :

 <?php require_once dirname(__FILE__).'/build.config.php'; include_once MODX_CORE_PATH . 'model/modx/modx.class.php'; $modx= new modX(); $modx->initialize('mgr'); $modx->loadClass('transport.modPackageBuilder','',false, true); echo '<pre>'; /* used for nice formatting of log messages */ $modx->setLogLevel(modX::LOG_LEVEL_INFO); $modx->setLogTarget('ECHO'); $root = dirname(dirname(__FILE__)).'/'; $sources = array( 'model' => $root.'core/components/doodles/model/', 'schema_file' => $root.'core/components/doodles/model/schema/doodles.mysql.schema.xml', ); $manager= $modx->getManager(); $generator= $manager->getGenerator(); if (!is_dir($sources['model'])) { $modx->log(modX::LOG_LEVEL_ERROR,'Model directory not found!'); die(); } if (!file_exists($sources['schema_file'])) { $modx->log(modX::LOG_LEVEL_ERROR,'Schema file not found!'); die(); } $generator->parseSchema($sources['schema_file'],$sources['model']); echo '.'; exit(); 


рдЕрдм рдЖрдк _build / build.schema.php рдлрд╝рд╛рдЗрд▓ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдПрдХ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ: http: //localhost/doodles/_build/build.schema.php ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рд╕ рдлрд╛рдЗрд▓реНрд╕ рдФрд░ рдореИрдкреНрд╕ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред


рдЕрдм рдЕрдкрдиреЗ рдмреЗрд╕ рдбреВрдбрд▓ рдХреНрд▓рд╛рд╕ (/www/doodles/core/compenders/doodles/model/doodles/doodles.class.php) рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рдорд╛рдпреЛрдЬрди рдХрд░реЗрдВред Array_merge рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдирд┐рдореНрди рд▓рд╛рдЗрди рдХреЛ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 $this->modx->addPackage('doodles',$this->config['modelPath']); 

рдпрд╣ xPDO рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо "рдбреВрдбрд▓" xPDO рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рд╕реНрдирд┐рдкреЗрдЯ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ

рдкрд╣рд▓реЗ рд╣рдордиреЗ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдмрдирд╛рдпрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдм рдЖрдк рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреЛ рдбреВрдбрд▓ / рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ / рд╕реНрдирд┐рдкреЗрдЯ / рд╕реНрдирд┐рдкреЗрдЯ.рдбреВрдбрд▓реНрд╕ . php рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЪрд┐рдкрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдРрд╕реЗ рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдирд┐рдкреЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЪрд▓реЛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА "рддрддреНрд╡" -> "рд╕реНрдирд┐рдкреЗрдЯреНрд╕" -> "рдиреНрдпреВ рд╕реНрдирд┐рдкреЗрдЯ" рдкрд░ рдЬрд╛рдПрдВред

рд╕реНрдирд┐рдкреЗрдЯ рдирд╛рдо:
рд╢рд╛рдорд┐рд▓

рд╕реНрдирд┐рдкреЗрдЯ рдХреЛрдб (php):

 <?php return include $file; 


рдЕрдм рдХрд┐рд╕реА рднреА рдкреЗрдЬ рдкрд░ рдпрд╛ рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 [[!include? &file=`[[++doodles.core_path]]elements/snippets/snippet.doodles.php`]] 


рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА рдмрдирд╛рдирд╛

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдРрд╕реА рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВ (рд╡рд╛рдкрд╕реА):
 $m = $modx->getManager(); $created = $m->createObjectContainer('Doodle'); return $created ? ' .' : '  .'; 


рдЕрдм, рдпрджрд┐ рдЖрдк рд╣рдорд╛рд░рд╛ рд╕реНрдирд┐рдкреЗрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреВрдбрд▓ рдШрдЯрдХ рддрд╛рд▓рд┐рдХрд╛ рдЕрдкрдиреЗ рдЖрдк рдмрди рдЬрд╛рдПрдЧреАред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдпреЛрдВ рдХрд╣реЗрдВ рдХрд┐:
 $tablexists = $modx->query("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '".$modx->getOption('dbname')."' AND table_name = '".$modx->getOption('table_prefix')."doodles'"); if(!$tablexists->fetch(PDO::FETCH_COLUMN)){ $m = $modx->getManager(); $created = $m->createObjectContainer('Doodle'); } 


рдЕрдм рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
 $doodles = $modx->getCollection('Doodle'); $output = count($doodles); 


рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдЖрдкрдХреЛ "0" рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИред

рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП phpMyAdmin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдФрд░ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рд╕реНрдирд┐рдкреЗрдЯ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
 $doodle = $modx->newObject('Doodle'); $doodle->fromArray(array( 'name' => 'TestDoodle', 'description' => 'A test doodle' )); $doodle->save(); 


рдЗрд╕ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдХрд╕реНрдЯрдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдЗрд╕реЗ рдФрд░ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП xPDOQuery xPDO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдХреЗрд╡рд▓ рдХреНрд░рдордмрджреНрдз рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

 $c = $modx->newQuery('Doodle'); $c->sortby($sort,$dir); $doodles = $modx->getCollection('Doodle',$c); 


$ Dir рдХреЗ рдХреНрд░рдо рдореЗрдВ $ рд╕реЙрд░реНрдЯ рдлрд╝реАрд▓реНрдб рдкрд░ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рд╣реЛрддреА рд╣реИред рдЗрди рдЪрд░реЛрдВ рдХрд╛ рдорд╛рди рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реНрдирд┐рдкреЗрдЯ рдХреЙрд▓ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 [[!include? &file=`[[++doodles.core_path]]elements/snippets/snippet.doodles.php`&sort=`name`&dir=`DESC`]] 


рдбреВрдбрд▓ рд╡рд░реНрдЧ рдХреА GetChunk рд╡рд┐рдзрд┐

рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
 public function getChunk($name,$properties = array()) { $chunk = null; if (!isset($this->chunks[$name])) { $chunk = $this->_getTplChunk($name); if (empty($chunk)) { $chunk = $this->modx->getObject('modChunk',array('name' => $name)); if ($chunk == false) return false; } $this->chunks[$name] = $chunk->getContent(); } else { $o = $this->chunks[$name]; $chunk = $this->modx->newObject('modChunk'); $chunk->setContent($o); } $chunk->setCacheable(false); return $chunk->process($properties); } private function _getTplChunk($name,$postfix = '.chunk.tpl') { $chunk = false; $f = $this->config['chunksPath'].strtolower($name).$postfix; if (file_exists($f)) { $o = file_get_contents($f); $chunk = $this->modx->newObject('modChunk'); $chunk->set('name',$name); $chunk->setContent($o); } return $chunk; } 


рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рдЖрдкрдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / www / рдбреВрдбрд▓ / рдХреЛрд░ / рдШрдЯрдХреЛрдВ / рдбреВрдбрд▓ / рддрддреНрд╡реЛрдВ / рд╡рд┐рдЦрдВрдбреВ / рдореЗрдВ рд╡рд┐рдЦрдВрдбрди рдХреЗ рд▓рд┐рдП рджрд┐рдЦреЗрдВрдЧреА ред

рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ chunk рдлрд╝рд╛рдЗрд▓ /www/doodles/core/compenders/doodles/elements/chunks/rowtpl.chunk.tpl рдмрдирд╛рдПрдБ:
 <li><strong>[[+name]]</strong> - [[+description]]</li> 


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реЗрдЦрд╛рдУрдВ рдХреЛ рд╣рдорд╛рд░реЗ рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 foreach ($doodles as $doodle) { $doodleArray = $doodle->toArray(); $output .= $dood->getChunk($tpl,$doodleArray); } 


рдкреВрд░реНрдг рд╕реНрдирд┐рдкреЗрдЯ рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
 <?php $dood = $modx->getService('doodles','Doodles',$modx->getOption('doodles.core_path',null,$modx->getOption('core_path').'components/doodles/').'model/doodles/',$scriptProperties); if (!($dood instanceof Doodles)) return ''; /* setup default properties */ $tpl = $modx->getOption('tpl',$scriptProperties,'rowTpl'); $sort = $modx->getOption('sort',$scriptProperties,'name'); $dir = $modx->getOption('dir',$scriptProperties,'ASC'); $output = ''; $tablexists = $modx->query("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '".$modx->getOption('dbname')."' AND table_name = '".$modx->getOption('table_prefix')."doodles'"); if(!$tablexists->fetch(PDO::FETCH_COLUMN)){ $m = $modx->getManager(); $created = $m->createObjectContainer('Doodle'); } $c = $modx->newQuery('Doodle'); $c->sortby($sort,$dir); $doodles = $modx->getCollection('Doodle',$c); foreach ($doodles as $doodle) { $doodleArray = $doodle->toArray(); $output .= $dood->getChunk($tpl,$doodleArray); } return $output; 


рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдо рдЯреЗрдмрд▓ рд╕реЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрдЦреЗрдВрдЧреЗ:


рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ xPDO рдкреИрдХреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдЪрдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ред

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдПрдХ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдкреГрд╖реНрда (рдШрдЯрдХ) рдмрдирд╛рдиреЗ рдХреА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ bebrumkin рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрддрд╛рдпрд╛ рд╣реИ ред рддреАрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ , рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрд┐рд╕реА рдиреЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд╢рд╛рдпрдж рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЕрдиреБрд╡рд╛рдж рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдкреВрд░реЗ рдШрдЯрдХ рдХреА рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ "рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрди" рдЕрдиреБрднрд╛рдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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


All Articles