
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ AJAX рдЬрдорд╛ рдлрд╝реЙрд░реНрдо рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреЙрдкрдЕрдк рдореЗрдВ рдкреНрд░рдкрддреНрд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрднреА рднреА рдиреБрдХрд╕рд╛рди рд╣реИрдВред
рдХрд╛рд░реНрдп Drupal 7 рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлреИрдВрд╕реАрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЙрдкрдЕрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
$ рдкрде = drupal_get_path ( 'рдореЙрдбреНрдпреВрд▓' , 'simple_ajax_popup' ) ;
drupal_add_js ( $ рдкрде ред '/ misc/fancybox/source/jquery.fancybox.pack.js' ) ;
drupal_add_css ( $ рдкрде ред '/misc/fancybox/source/jquery.fancybox.css' ) ;
drupal_add_js ( $ рдкрде ред /misc/simple_ajax_popup.js ) ;
drupal_add_js ( 'рдорд┐рд╕ / jquery.form.js' ) ;
Jquery.form.js рдлрд╝рд╛рдЗрд▓ рдкреГрд╖реНрда рдкрд░ рд╣рд░ рдмрд╛рд░ рдПрдХ рдкреНрд░рдкрддреНрд░ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ Drupal рджреНрд╡рд╛рд░рд╛ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ AJAX рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝реЙрд░реНрдо рдЬрдорд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЪреВрдВрдХрд┐ рдкреЗрдЬ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдпрд╣ рдлреЙрд░реНрдо рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреНрд░реБрдкрд▓ рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдлрд┐рд░ рдореЗрдиреВ рд╣реБрдХ рдореЗрдВ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХреЙрд▓рдмреИрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
/ **
* рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреНрд╕ рд╣реБрдХ_рдореЗрдиреВ ()ред
* /
рд╕рдорд╛рд░реЛрд╣ simple_ajax_popup_menu ( ) {
$ рдЖрдЗрдЯрдо = рд╕рд░рдгреА ( ) ;
$ рдЖрдЗрдЯрдо [ 'рдкрд░реАрдХреНрд╖рдг' ] = рд╕рд░рдгреА (
'рдЯрд╛рдЗрдк' => MENU_SUGGESTED_ITEM ,
'рд╢реАрд░реНрд╖рдХ' => рдЯреА ( 'рдЯреЗрд╕реНрдЯ рдкреЗрдЬ' ) ,
'рдкреЗрдЬ рдХреЙрд▓рдмреИрдХ' => 'simple_ajax_popup_page' ,
'рдПрдХреНрд╕реЗрд╕ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕' => рдПрд░реЗ ( 'рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреЗрдВрдЯ' ) ,
) ;
$ рдЖрдЗрдЯрдо [ 'рдХреЙрд▓рдмреИрдХ' ] = рд╕рд░рдгреА (
'рдЯрд╛рдЗрдк' => MENU_CALLBACK ,
'рдкреЗрдЬ рдХреЙрд▓рдмреИрдХ' => 'simple_ajax_popup' ,
'рдПрдХреНрд╕реЗрд╕ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕' => рдПрд░реЗ ( 'рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреЗрдВрдЯ' ) ,
) ;
$ рдЖрдЗрдЯрдо рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ;
}
рдкрд╣рд▓рд╛ рдХреЙрд▓рдмреИрдХ рд╡рд╣ рдкреЗрдЬ рд╣реЛрдЧрд╛ рдЬрд┐рд╕ рдкрд░ рдлреЙрд░реНрдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдХреЙрд▓рдмреИрдХ рдлреЙрд░реНрдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛ред
рдлрд╝реЙрд░реНрдо рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреГрд╖реНрда рдкрд░ рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВ:
рд╕рдорд╛рд░реЛрд╣ simple_ajax_popup_page ( ) {
drupal_add_library ( 'рд╕рд┐рд╕реНрдЯрдо' , 'drupal.ajax' ) ;
рд╡рд╛рдкрд╕реА l (
'AJAX рдлреЙрд░реНрдо' ,
'рдХреЙрд▓рдмреИрдХ' ,
рд╕рд░рдгреА (
'рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ' => рд╕рд░рдгреА ( 'рд╡рд░реНрдЧ' => рд╕рд░рдгреА ( 'рдлреИрдВрд╕реАрдмреЙрдХреНрд╕' , 'рдлреИрдВрд╕реАрдмреЙрдХреНрд╕.рдЬреИрдХреНрд╕' ) ) ,
)
) ;
}
AJAX рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Drupal рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ
рдХрд┐ рдлрдВрдХреНрд╢рди рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдлрд╛рд░реНрдо рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП
рдлрдВрдХреНрд╢рдирд▓ рдмреЙрдХреНрд╕ рдореЗрдВ рд╢реЛрд╢реЛ рдЗрд╡реЗрдВрдЯ рдХреЗ рдмрд╛рдж
рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ :
рдлрдВрдХреНрд╢рди simpleAjaxPopupFormProcess ( ) {
Drupalред рд╕рдВрд▓рдЧреНрдирдХ ( '# рд╕рд┐рдореНрдкрд▓_рдЬреИрдХреНрд╕_рдкреЛрдк_рдлреЙрд░реНрдо' ) ;
jQuery ( '#simple_ajax_popup_form' ) ред ajaxForm ( ) ;
}
рдлрд╝рдВрдХреНрд╢рди рд░реЗрдВрдбрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ:
/ **
* рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдкреЙрдкрдЕрдк рд▓реМрдЯреЗрдВред
* /
рд╕рдорд╛рд░реЛрд╣ simple_ajax_popup ( ) {
$ рдлреЙрд░реНрдо = drupal_render ( drupal_get_form ( 'simple_ajax_popup_form' ) ) ;
$ рдлреЙрд░реНрдо рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ ;
drupal_exit ( ) ;
}
Ajax_deliver рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Ajax_command_replace рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдЙрд╕ рдЕрдиреБрд░реЛрдз рдХреА AJAX рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░реИрдкрд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдлрд╝рдВрдХреНрд╢рди simple_ajax_popup_form_submit ( $ рдлрд╝реЙрд░реНрдо , рдФрд░ $ рдлрд╝реЙрд░реНрдо_рд╕реНрдЯреЗрдЯ ) {
$ form_state [ 'rebuild' ] = TRUE ;
рдкреНрд░рд╣рд░реА ( 'рдЕрдЬрд╛рдХреНрд╕ рд╕рдВрджреЗрд╢' , $ _POST [ 'рд╕рдВрджреЗрд╢' ] ) ;
$ рдЖрджреЗрд╢ = рд╕рд░рдгреА ( ) ;
$ рдХрдорд╛рдВрдб [ ] = ajax_command_replace (
'# рд╕рд░рд▓-рдЕрдЬрд╛рдХреНрд╕-рдкреЙрдкрдЕрдк-рдлреЙрд░реНрдо' ,
'<div class = "рд╕рдВрджреЗрд╢ рдХрд╛ рджрд░реНрдЬрд╛"> рд╕рдВрджреЗрд╢ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред </ div>'
) ;
ajax_deliver ( рд╕рд░рдгреА ( '# рдЯрд╛рдЗрдк' => 'ajax' , '#commands' => $ рдХрдорд╛рдВрдб ) ) ;
drupal_exit ( ) ;
}
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрд╛ рд╕рдлрд▓ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢:
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреНрд░рдкрддреНрд░ рдХреЗрд╡рд▓ рд╡реЙрдЪрдбреЙрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдФрд░ рдЕрдВрдд рдореЗрдВ - рдлреЙрд░реНрдо рд╕рдмрдорд┐рдЯ рдмрдЯрди рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ рддрд╛рдХрд┐ рдлреЙрд░реНрдо рдХреЛ AJAX рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
$ рдлреЙрд░реНрдо [ 'form_wrapper' ] [ 'рд╕рдмрдорд┐рдЯ' ] = рд╕рд░рдгреА (
'# рдЯрд╛рдЗрдк' => 'рд╕рдмрдорд┐рдЯ' ,
'#value' => 'рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред' ред
'#attributes' => array ( 'class' => array ( 'use-ajax-submit' ) ) ,
) ;
рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЛрдб
рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИредрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрд╣рд╛рдВ рдкреЙрдкрдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣
рдЯрд┐рдкреНрдкрдгреА рджреБрд░реБрдкрдпреЛрдЧ рдореЙрдбреНрдпреВрд▓ рд╣реИред