MovableType рд╣рдорд╛рд░реЗ рджреЗрд╢ рдореЗрдВ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреНрд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреНрд▓реЙрдЧреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, 5 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдпрд╣ рдПрдХ рдкреВрд░реНрдг рд╕рд╛рдЗрдЯ рдХрд╛ рдкреНрд░рдмрдВрдзрди рднреА рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрдЯреИрдЯрд┐рдХ html рдлрд╛рдЗрд▓реНрд╕ рдЬреЗрдирд░реЗрдЯ рдХрд░рдХреЗ рдкреЗрд░рд▓ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╡рдЬрд╣ рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реЗ рд▓реЛрдб рдХреЛ рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЭреЗрд▓ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдУрдкрдирд╕реЛрд░реНрд╕ рдФрд░ рдкреНрд░реЛред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдПрдХ рдЕрд░реНрдз-рдореБрдХреНрдд рдореЛрдб рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдШрдбрд╝реА, рдШрдбрд╝реА, рднреБрдЧрддрд╛рди, рдЙрдкрдпреЛрдЧред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд┐рд╕реНрдЯрдо OOP рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд▓рдЧрднрдЧ рд╣рд░ рдЫреАрдВрдХ рдХреЗ рд▓рд┐рдП рд╣реБрдХ рд╣реИрдВ, ORM рд╣реИ, рд╕рдм рдХреБрдЫ рд▓рдЧрднрдЧ рдареАрдХ рд╣реИ ...
рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрдирд╛
рддреЛ, рдкрд╣рд▓рд╛ рдмрд┐рдВрджреБ: рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ред рд╕реНрдерд╛рдкрд┐рдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- $ Mt / plugins / <plugin> рдкреНрд▓рдЧрдЗрди рдХреЛрдб рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЗ рдбреИрдбреА рднрд░реЗрдВ
- $ Mtpub / mt-static / plugins / <plugin> рдореЗрдВ рд╕реНрдерд┐рд░ рдкреНрд▓рдЧрдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рднрд░реЗрдВ
- рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ $ mt / extlib / рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рднрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рд╣рдо рдзреНрдпрд╛рди рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ "рдХреНрдпрд╛ рдореБрдЭреЗ рдкрд░реНрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ"
- рд╣рдо рдзреНрдпрд╛рди рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ "рдореИрдВ рдЕрдм рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреИрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ"
рдкреНрд▓рдЧрдЗрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЕрдВрддрд┐рдо рджреЛ рдмрд┐рдВрджреБ рдХрднреА-рдХрднреА рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдореЗрдВ рдкрд░рд┐рдгрдд рд╣реЛрддреЗ рд╣реИрдВред рдХреБрдЫ рдкреНрд▓рдЧрдЗрди рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдиреЗ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐
mt-hacks.com рд╕реЗ TemplateInstaller ред
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдордЯреА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдзреНрдпрд╛рди рд╕реЗ рд╕реЛрдЪреЗрдВ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рдЖрдВрджреЛрд▓рдиреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝реЗред
MT рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╡рд┐рд╡рд░рдг
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЬрдиреНрдо рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдИ:
plugins/coolplugin/
plugins/coolplugin/lib/
plugins/coolplugin/tmpl/
mt-static/plugins/coolplugin/
рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реЛрдЪрд╛: рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, config.yaml рд▓рд┐рдЦреЗрдВред рдХреБрдЫ (4.xx рдкреНрд░рдХрд╛рд░) рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╡рд┐рд╡рд░рдг config.yaml рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд▓рдн рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд▓рдЧрдЗрди рдХреА рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдирд╣реАрдВ рд╣реИред рддреЛ рдХреНрдпрд╛ рдФрд░ config.yaml рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
рд▓реЗрдХрд┐рди
рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ ред рдпрджрд┐ рдЖрдк рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рд╕реНрд╡рд╛рдЧрдд рд╣реИ,
$mt/lib/MT/Plugin.pm
рдФрд░ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рд╣реИрдВ:
рдирд╛рдо: рдЖрдкрдХреЗ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирд╛рдоред рдПрдХ рдЫреЛрдЯреА рд░реЗрдЦрд╛ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдлрд┐рдЯ рд╣реЛред
рдЖрдИрдбреА: рдкреНрд▓рдЧрдЗрди рдирд╛рдо
Author_link: рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓реЗрдЦрдХ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ
author_name: рдкреНрд▓рдЧрдЗрди рд▓реЗрдЦрдХ рдХрд╛ рдирд╛рдо
рд╡рд┐рд╡рд░рдг: <__ рдЯреНрд░рд╛рдВрд╕ рд╡рд╛рдХреНрдпрд╛рдВрд╢ = "рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╡рд┐рд╡рд░рдг, рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдиреВ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдирд╛рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ">
рд╕рдВрд╕реНрдХрд░рдг: рдкреНрд▓рдЧрдЗрди рд╕рдВрд╕реНрдХрд░рдг
рд╕реНрдХреАрдорд╛_рд╡рд░реНрдЬрди: рдкреНрд▓рдЧрдЗрди рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рд╕рдВрд╕реНрдХрд░рдг
plugin_link: рдЙрд╕ рдкреГрд╖реНрда рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ рдЬрд╣рд╛рдБ рдЖрдк рдкреНрд▓рдЧрдЗрди рдХреЛ рдорд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
doc_link: рдЙрд╕ рдкреГрд╖реНрда рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдкреНрд▓рдЧрдЗрди рд╡рд┐рд╡рд░рдг рд╣реИ
blog_config_template: template_name with_configuration_page.tpl
l10n_class: рдкреНрд▓рдЧрдЗрди :: рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд╡рд░реНрдЧ
рдЖрдЗрдХрди: рдкреНрд▓рдЧрдЗрди рдЫрд╡рд┐! {gif / png / jpg / itd}
рд╕реЗрдЯрд┐рдВрдЧреНрд╕:
рдХреНрдпрд╛ рд╕реЗрдЯрд┐рдВрдЧ:
рдбрд┐рдлрд╝реЙрд▓реНрдЯ: "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди"
рдЧреБрдВрдЬрд╛рдЗрд╢: рдмреНрд▓реЙрдЧ
рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧ:
рдбрд┐рдлрд╝реЙрд▓реНрдЯ: "рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг"
init: $ рдкреНрд▓рдЧрд┐рди :: рдореЙрдбреНрдпреВрд▓ :: рдЖрд░рдВрднреАрдХрд░рдг рдХрд╛рд░реНрдп
рдХреЙрд▓рдмреИрдХ:
рдХреБрдЫ рд╣реИрдХ: $ рдкреНрд▓рдЧрд┐рди :: рдореЙрдбреНрдпреВрд▓ :: рд╣реИрдХ рдлрд╝рдВрдХреНрд╢рди
рдЯреИрдЧ:
рд╕рдорд╛рд░реЛрд╣:
рдЯреИрдЧрдирд╛рдо: $ рдкреНрд▓рдЧрдЗрди :: рдореЙрдбреНрдпреВрд▓ :: рдЯреИрдЧ_рдлрдВрдХреНрд╢рди
рдмреНрд▓реЙрдХ:
рдмреНрд▓реЙрдХрдЯреИрдЧрдирд╛рдо: $ рдкреНрд▓рдЧрдЗрди :: рдореЙрдбреНрдпреВрд▓ :: рдмреНрд▓реЙрдХ_рдлрдВрдХреНрд╢рди_рдлрдВрдХреНрд╢рди
object_types:
рд╡рд╕реНрддреБ:
рдлрд╝реАрд▓реНрдб: рдЯрд╛рдЗрдк # рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛
рдлрд╝реАрд▓реНрдб: рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдореЗрдЯрд╛ # рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА
рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ:
# рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ, рдЬрдмрдХрд┐ рд╡реЗ рднреВрд▓ рдЧрдП
рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╡рд░рдг рдХреА рдХрдореА рдЖрдкрдХреЗ рд▓рд┐рдП рдХрдИ рдФрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░реЗрдЧреАред
рдКрдкрд░, рдореИрдВрдиреЗ рдЙрди рд╕рднреА рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬреЛ рдореИрдВ рдЦреБрдж рднрд░ рдЖрдпрд╛ рдерд╛ред
icon:
рд░реВрдк рдореЗрдВ рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЯреНрд░рд┐рдлрд╝рд▓
icon:
рдПрдордЯреА рдХреЗ рдХреЛрдб рдореЗрдВ рд╣реА рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдирд╣реАрдВред
рдкреНрд▓рдЧрдЗрди рд╡рд┐рдиреНрдпрд╛рд╕
рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдПрдордЯреА рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рд╕реНрд╡рдпрдВ рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ рдмрдирд╛рдПрдВ, рдпрд╛ рдСрдЯреЛ-рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХрд╛ рдкреНрд▓рдЧ-рдЗрди 2-3-4 рд╕рд░рд▓ рд░реЗрдЦрд╛рдУрдВ / рдЪреЗрдХрдмреЙрдХреНрд╕ / рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдСрдЯреЛ-рдЬрдирд░реЗрдЯрд░ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬрд╝ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдбреЗрдкреНрдЯ рдПрдордЯреА
рдмреЗрд░реЗрди рд░реАрдЬрд╝ ("рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдордЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдЬрд╛рдирддрд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдЙрдирдХреЗ рдкреЛрд╕реНрдЯ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ)"
HOWTO: рдУрди рдкреНрд▓рдЧрдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬ "рд▓реЗрдЦ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред
рдореИрдВ рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рд╡рд░реНрдгрди рдореБрдЭреЗ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛:
рдкреНрд▓рдЧрдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрди
рдПрдордЯреА рдЦреБрдж рдбреЗрдЯрд╛ рдХреЛ рдХрд╣реАрдВ рднреА рдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдбрд╛рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдзрд┐рдХрддрдо рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рддреЛ, рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд▓рдЧрдЗрди рдХреНрд▓рд╛рд╕ рд╣реИ рдЬреЛ рдЗрдирд┐рдЯ рд╣реБрдХ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдКрдкрд░ config.yaml рджреЗрдЦреЗрдВ)ред рд╕реНрд╡рдпрдВ рд╡рд┐рдзрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд▓рдЧ рдЗрди / OurPlugin / lib / Plugin.pm рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ) рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
package OurPlugin::Plugin use base 'MT::Plugin'; sub cb_init { my $p = shift; return bless $p, 'OurPlugin::Plugin'; }
рдФрд░ config.yaml рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╡рд░реНрдгрд┐рдд рд╣реИ:
init: $OurPlugin::Plugin::cb_init
рддреЛ, рдмрдЪрдд рдХреЗ рд╕рдордп, OurPlugin :: Plugin: save_config рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рддреАрди рддрд░реНрдХ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ: рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ, рд╣реИрд╢ рдореЗрдВ рдлреЙрд░реНрдо рдбреЗрдЯрд╛ рдФрд░ рд╕реНрдХреЛрдк рдХреНрд╖реЗрддреНрд░ред
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдЖрдзрд╛рд░ MT :: Plugin рд╣реИ, рдЕрдЧрд░ рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдИ рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХреЛ-рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рд╣рдо рдХреЛрдИ рд╕рддреНрдпрд╛рдкрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
sub save_config { my ($plugin, $args, $scope) = @_; my @errors;
рдпрд╣ рдмрдЪрдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдбрд░рд╛рд╡рдирд╛ рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмреИрдХ рдмрдЯрди рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП? рдЖрдк рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди load_config рдЬреЛрдбрд╝реЗрдВ:
sub load_config { my ($plugin, $args, $scope) = @_; $plugin->SUPER::load_config($args, $scope);
рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдбрд╛рд▓реЗрдВ
<mt:if name="error"> <mtapp:statusmsg id="generic-error" class="error"> <mt:var name="error"> </mtapp:statusmsg> </mt:if>
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдордирдорд╛рдирд╛ рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛рдирд╛ рд╣реИ, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдВрджрд░
рдХрдИ рдорд╛рдирдХ рдЯреИрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ ред рдпрд╣реА рд╣реИ, рд╡реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдмрдХрд╡рд╛рд╕ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдмреНрд▓реЙрдЧ рдЖрдИрдбреА рднреА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ - рдФрд░ рдпрд╣рд╛рдВ
load_config
$args->{...}
load_config
рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
load_config
рд╕реЗ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрдПрдЧрд╛
$args->{...}
рдЖрд╡рд╢реНрдпрдХ рдЪрд░, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреЛрдИ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
JQuery рдХрдиреЗрдХреНрд╢рди рдкреНрд▓рдЧрдЗрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдмрд╣реБрдд рд╣реА рдордЬреЗрджрд╛рд░ рдкрд▓ред MT5 рдкреВрд░реНрдг рд░реВрдк рд╕реЗ jQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди MT4 рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╣реИред рдЙрд╕реА рд╕рдордп, MT4 рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА jQ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рд╕рд┐рд░реНрдл jQ рдХреЛ рд╣рдореЗрд╢рд╛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рд┐рд░ рдореЗрдВ рд╕рдВрдШрд░реНрд╖ рд╣реЛрдЧрд╛ред
рдЦреБрдж рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ blog_config.tmpl рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛:
<mt:If tag="Version" lt="5"> <script type="text/javascript"> </script> <script type="text/javascript" src="<$mt:StaticWebPath$>jquery/jquery.js"></script> <script type="text/javascript"> </script> </mt:If>
рд╡рд┐рдзрд┐ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ jQ рдмрд┐рд▓реНрдХреБрд▓ рд▓реЛрдб рд╣реЛрдВрдЧреЗ рдФрд░ $ / jQuery рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЬрд╛рджреВ рдХрд╛ рдЯреИрдЧ
рдЕрдм рдЯреИрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдмреНрд▓реЙрдХред
рдПрдХ рдЯреИрдЧ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн, рддрд░реНрдХ, рд╢рд░реНрддреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ, рдЯреИрдЧреНрд╕ рдХреЛ
<$mt:$>
рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рд╡рд╛рд▓:
- рдЯреИрдЧ рдореЗрдВ рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?
sub tag_somemytag { my ($ctx, $args, $cond) = @_; my $blog_id = $ctx->stash('blog_id'); my $some_param = MT->component('OurPlugin')->get_config_value('some_param', 'blog:' . $blog_id);
- рдПрдХ рдЯреИрдЧ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдЬреЛ рдЕрдиреНрдп рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ?
sub tag_somemytag { my ($ctx, $args, $cond) = @_; my $text = "<$mt:SomeOtherTag$>"; .... my $t = MT::Template->new; $t->text($t); return $t->build($ctx) or $ctx->error($t->errstr); }
- рдмрдЧреНрд╕ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреИрд╕реЗ рдХрд░реЗрдВ?
рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл $ctx->error("error message");
, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ "рддреЗрдЬ" рддреНрд░реБрдЯрд┐ рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП $ctx->_no_entry_error();
ред
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, $ mt / lib / MT / рдЯреЗрдореНрдкрд▓реЗрдЯ / рдкреНрд░рд╕рдВрдЧ рджреЗрдЦреЗрдВ редpm
рдПрдХ рдмреНрд▓реЙрдХ рдЯреИрдЧ рдпрд╛ рддреЛ рдПрдХ рд▓реВрдк, рдпрд╛ рдПрдХ рд╢рд░реНрдд, рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ "рдЗрдВрдЯрд░реНрдирд▓" рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмреНрд▓реЙрдХ рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ config.yaml рдореЗрдВ рдЯреИрдЧ / рдмреНрд▓реЙрдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдКрдкрд░ рджреЗрдЦреЗрдВ)ред рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕рд┐рдХ рдЯреИрдЧ рд▓реВрдк рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
sub tag_myloop { my($ctx, $args, $cond) = @_; my $builder = $ctx->stash('builder');
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╢рд░реАрд░ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ, рдЖрдк рдПрдХ рдФрд░ рддрд░реНрдХ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдФрд░ рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: рдЯреИрдЧ рдмреНрд▓реЙрдХ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдХреА рд╕рднреА рдЯреИрдЧ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рд╣реАред
рдХреЙрд▓рдмреИрдХ: рдХрд░реНрдиреЗрд▓ рд╣реИрдХ
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдордЯреА рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЫрдбрд╝реА рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдХреНрдпрд╛ рд╕реНрдерд╛рди рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдлрд┐рд░ рд╕реЗ, рд╕рднреА рдХреЛ рд╡рд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдПрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
MT::App::CMS::template_param.
рдкрд░ рдПрдХ рд╣реБрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдкреГрд╖реНрда рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ template_output рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреЗрдЬ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЕрдЧрд░ рдХреЛрдИ рдорд╛рдВрдЧ рд╣реИ, рддреЛ рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ) рдпреЗ рд╣реБрдХ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдЬрдм рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реБрдХ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ
run_callbacks
рдХреЗ рд▓рд┐рдП MT рдХреЛрдб рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ POD рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред
рдЪреВрдВрдХрд┐ рдХреЙрд▓рдмреИрдХ рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрдмрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрджрд░ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рд▓рд┐рдВрдХ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рдХрд░рдирд╛ред
Config.yaml рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рдХреЙрд▓рдмреИрдХ:
MT :: рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ :: pre_save: $ OurPlugin :: Plugin :: cb_entry_pre_save
# cms_pre_save.entry: $ OurPlugin :: Plugin :: cb_cms_pre_save_entry
# api_pre_save.entry: $ OurPlugin :: Plugin :: cb_api_pre_save_entry
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдмрд┐рдВрджреБ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЗрд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдкрд╛рда рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрдбрд╝реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
MT::Entry::pre_save
- рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ ORM рд╣реИрдВрдбрд▓рд░ рд╕реЗ рддреБрд░рдВрдд рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредcms_pre_save.entry
- рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп рд░рд┐рдХреЙрд░реНрдб рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИapi_pre_save.entry
- RPC рдпрд╛ ATOM рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп рд░рд┐рдХреЙрд░реНрдб рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
Entry_pre_save рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ regexp рджреНрд╡рд╛рд░рд╛ рдкрд╛рда рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ, рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
sub cb_entry_pre_save { my ($cb, $entry, $original) = @_; my $txt = $entry->text; if ($txt ne $original->text) { my $newtxt = $txt;
рдЕрдиреБрдкреНрд░рдпреЛрдЧ: рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рдПрдордЯреА рдЦреБрдж рдХреЛ рдХрдИ "рдЕрд▓рдЧ" рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЙрд╕рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдмрд┐рдВрджреБ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╣реИ:
- CMS (mt.cgi, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ)
- рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ (mt-comments.cgi, рдЬрдирддрд╛ рд╕реЗ рдирдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд)
- рд╡рд┐рдЬрд╝рд╛рд░реНрдб (mt-Wizard.cgi, рд╕реНрдерд╛рдкрдирд╛
- Upgrader (mt-upgrade.cgi, рдЬрд┐рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)
- рдЦреЛрдЬ, рдЦреЛрдЬ :: FreeText (mt-search.cgi, mt-ftsearch.cgi, рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрд╛рдЧ рдкрд░ рдЦреЛрдЬреЗрдВ)
- рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрдлреАрдбреНрд╕ (mt-feed.cgi, RSS / Atom рдЬрдирд░реЗрдЯрд░)
- рдЯреНрд░реИрдХрдмреИрдХ, рдиреЛрдЯрд┐рдлрд╛рдИрд▓рд┐рд╕реНрдЯ
Config.yaml рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдкреНрд▓рдЧрдЗрди рд╡рд┐рд╕реНрддрд╛рд░ / рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред рд╕рдВрдкреВрд░реНрдг рдЦрдВрдб рдЕрддреНрдпрдВрдд рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ (рдХреЗрд╡рд▓ PODs рдореЗрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдЙрдкрдпреЛрдЧ рджреЗрдЦреЗрдВ)ред
рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдЬрд╛рдХреНрд╕ рдХреЙрд▓ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рдЕрдЬрд╛рдХреНрд╕ рд╡рд┐рдзрд┐:
applitcations:
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:
рд╡рд┐рдзрд┐:
record_some_info: $ OurPlugin :: Plugin :: ajax_record_some_info
рдФрд░ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди:
sub ajax_record_some_info { my ($app) = @_; my $blog = $app->blog; my $result = "{'error': 'No information supplied'}"; my $user_name = $app->param('user_name'); my $info = $app->param('info'); if ($user_name && $info) { $result = do_store_info($user_name, $info);
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝реЗрдВ (рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдХреЗрд╡рд▓ рдЙрддреНрдкрдиреНрди рдкрде):
var u = mtGetUser(); if(u && !u.is_anonymous) { jQuery.post({ url: '<mt:CGIPath encode_js='1'><mt:CommentScript encode_js='1'>', '__mode': 'record_some_info', 'user_name': u.name, 'info': 'he he' });
рдпрд╣рд╛рдВ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП URL <mt: CGIPath encode_js = '1'> <mt: CommentScript encode_js = '1'> рдХрд┐рдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рдорд╛рдзрд╛рди рдПрдХ .js рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдПрдордЯреА рдЦреБрдж рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рд╣реИрдбрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ
<script>COMMENTS_URL = '<mt:CGIPath encode_js='1'><mt:CommentScript encode_js='1'>';</script>
рдФрд░ рдЬрд╣рд╛рдБ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ_URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЫреВрдЯреЗ рд╣реБрдП рдкрд▓
рдореИрдВрдиреЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд░реЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдФрд░ i18n рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдкреГрд╖реНрда рдХреИрд╕реЗ рдмрдирд╛рдПрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реЗ рдЕрдВрдХ рдореЗрдВ рдкрдврд╝рд┐рдПред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ
- MovableType - рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ
- MovableType Developer Center - рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рд▓реЗрдЦрди
- рдордВрдЪреЛрдВ рдкрд░ HOWTO.movabletype.org - рдордВрдЪ рдкрд░ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП Google рдорджрджред
- mt-dev maillist рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЫрд▓реА рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд╕реНрдерд╛рди рд╣реИред рдереЛрдбрд╝рд╛ рд╕рдбрд╝рд╛ рд╣реБрдЖред