Drupal 7. DIY рд╕рджрд╕реНрдпрддрд╛ рдореЙрдбреНрдпреВрд▓

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдЧреНрд░рджреВрдд


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





рдЙрдкрдпреБрдХреНрдд рдореЙрдбреНрдпреВрд▓ рдЦреЛрдЬреЗрдВ


рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рди рдореЙрдбреНрдпреВрд▓ рд╣реИред рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдиреЛрдбреНрд╕ рдФрд░ рдЯреИрдХреНрд╕реЛрдиреЙрдореА (рд╕рд╛рдордЧреНрд░реА рдкрд░ рдирдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕рд╣рд┐рдд) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдИрдореЗрд▓ рдиреНрдпреВрдЬрд╝рд▓реЗрдЯрд░реНрд╕ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рдХреА рдХрдореА рдереАред

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕рдХреА рд╡реНрдпрд╛рдкрдХрддрд╛ рдФрд░ рдорд╛рдкрдиреАрдпрддрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП (рд╣рдорд╛рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рджрд╕реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП) рдЙрдкрдпреБрдХреНрдд рдереА, рд▓реЗрдХрд┐рди 7.x рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХрдореА рдиреЗ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреАред

рдЗрд╕рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╛рдзрд╛рди рдерд╛ - рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк


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



рджреВрд╕рд░реЗ, рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреЛрдбреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдмрдирд╛рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдЖрдХреГрддрд┐ рдореЗрдВ:



рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛ , Nid рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдЯреЗрдореНрдкрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЬрд┐рд╕рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдШрдЯрдирд╛ рдмрд╛рдж рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХреА рдЬрд╛рдПрдЧреА), рд╣рдо рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХ рд╕реЗ рдЗрд╕рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдЙрдирдХрд╛ рд╡рд┐рд╡рд░рдг


рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдЗрдЯреЛрдВ / рд╕рднреА / рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо_рд╕реНрдХреНрд░рд┐рдкреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБред рд╣рдореЗрдВ 4 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: custom_subs рдмрдиреЗрдЧрд╛ ред рдЕрдм рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред

рдЬрд╛рдирдХрд╛рд░реА рдлрд╝рд╛рдЗрд▓

Custom_subsults.info рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:

name = "Custom Subscriptions" description = "Allows users to follow content" core = 7.x version = 7.x-1.0 php = 5.1 scripts[] = custom_subscriptions.js 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдпрд╣рд╛рдБ рд╢рд╛рдорд┐рд▓ рдереАред

рд╕реНрдерд╛рдкрдирд╛ рдлрд╝рд╛рдЗрд▓

рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧреА, рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдпреВрдЖрдИрдбреА (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛) рдФрд░ рдПрдирдЖрдИрдбреА (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рдЧрдИ рдиреЛрдб рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛) рд╣реЛрдЧреАред

Custom_subsults.install рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:

 <?php /** * Implements hook_schema() */ function custom_subscriptions_schema() { $schema['custom_subscriptions'] = array( 'description' => t('The base table for subscriptions'), 'fields' => array( 'sid' => array( 'type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE, ), 'uid' => array( 'type' => 'int', 'length' => 10, 'not null' => TRUE, ), 'nid' => array( 'type' => 'int', 'length' => 10, 'not null' => TRUE, ), ), 'primary key' => array('sid'), ); return $schema; } 

рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрди рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдЧреА:



рдереАрдо рд╕реЗрдЯрдЕрдк

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рджреГрд╢реНрдп рдореЗрдВ рдПрдирдЖрдИрдбреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдирд╛рдо рджреГрд╢реНрдп-рджреГрд╢реНрдп-рдлрд╝реАрд▓реНрдб - рдЖрдЗрдЯрдо - рдкреГрд╖реНрда - nid.tpl.php рд╣реИ (рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдирд╛рдо рджреГрд╢реНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдПрдбрд╡рд╛рдВрд╕ рдбреА / рдереАрдо рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдереАрдо рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ ( рдЬрд╝реЗрди рд╕рдмрдЯреЙрдкрд┐рдХ рдЬрд┐рд╕реЗ STARTERKIT рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдлрд╝рд╛рдЗрд▓ рджреГрд╢реНрдп-рдлрд╝реАрд▓реНрдб - рдЖрдЗрдЯрдо - рдкреГрд╖реНрда - nid.tpl.php рдХреА рд╕рд╛рдордЧреНрд░реА :

 <?php global $user; ?> <?php if ($user->uid != 0): ?> <?php $following = db_select('custom_subscriptions', 'cs') ->fields('cs') ->condition('uid', $user->uid) ->condition('nid', $output) ->execute() ->rowCount(); ?> <?php if ($following == 0):?> <?php print('<a href="follow/' . $output . '" class="follow">FOLLOW</a>'); ?> <?php else:?> <?php print('<a href="unfollow/' . $output . '" class="following">FOLLOWING</a>'); ?> <?php endif; ?> <?php endif; ?> 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рджрд╕реНрдпрддрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЗрд╡рд▓ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, custom_subscos рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдлрд╝реАрд▓реНрдб рд╢реАрд░реНрд╖рдХ FOLLOW (рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдиреЛрдб рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╕реЗ рдмрджрд▓рдХрд░ FOLLOWING (рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рд╕рджрд╕реНрдпрддрд╛ рд╣реИ)ред рдкреНрд░рддрд┐рдмрджреНрдз рдХрд╛рд░реНрд░рд╡рд╛рдИ ( рдлрд╝реЙрд▓реЛ / рдЕрдирдлрд╝реЙрд▓реЛ ) рдФрд░ рдиреА рдбреА рдиреЛрдб рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА href рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдЧреАред

рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рддрдВрддреНрд░ рдХрд╛ рд╡рд┐рдХрд╛рд╕

рдЪреВрдВрдХрд┐ рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдЗрдП рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рд╕рд╛рдордЧреНрд░реА рдкрд░ рдордБрдбрд░рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдлрд╝реАрд▓реНрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕ рдлрд╝реАрд▓реНрдб рдкрд░ рд╣реЛрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдХреЗ рдкрд╛рда рдХреЛ UNFOLLOW рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред

рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА custom_subsults.j s:

 (function ($) { Drupal.behaviors.collectiveMove = { attach: function(context, settings) { // show buttons on hover $('.view-items .views-row').hover(function() { $(this).find('.views-field-nid a').css('display', 'block'); }); // hide buttons on mouseleave $('.view-items .views-row').mouseleave(function() { $(this).find('.views-field-nid a.follow, .views-field-nid a.unfollow').css('display', 'none'); }); // show 'unfollow' when user has already had a subscription $('.view-items .views-row .views-field-nid .following').live('mouseover', function() { $(this).text('UNFOLLOW'); $(this).addClass('unfollow'); }); // hide 'unfollow' when user has already had a subscription $('.view-items .views-row .views-field-nid .following').live('mouseout', function() { $(this).text('FOLLOWING'); $(this).removeClass('unfollow'); }); } }; })(jQuery); 

рдЕрдм рдордЬрд╝реЗрджрд╛рд░ рднрд╛рдЧ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ - рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдгред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ: рдЬрдм рдЖрдк FOLLOW рдкреЛрд╕реНрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдЕрдиреБрд░реЛрдз рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ ( 'рдЕрдиреБрд╕рд░рдг' ) рдФрд░ рдиреЛрдб рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред UNFOLLOW рдХреЗ рд▓рд┐рдП, рддрдВрддреНрд░ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЕрд▓рдЧ ( 'рдЕрдирдлрд╝реЙрд▓реЛ ') рд╣реЛрдЧреА, рдФрд░ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкреГрд╖реНрда рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣реБрдХ_рдореЗрди рдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред

Custom_subsults.module рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:

 <?php /* Implements hook_menu() */ function custom_subscriptions_menu() { $items = array(); $items['custom_subscriptions_ajax'] = array( 'title' => 'Ajax callback', 'page callback' => 'custom_subscriptions_ajax', 'access callback' => TRUE, 'type' => MENU_CALLBACK, ); return $items; } 

рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ Drupal рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрддреА php рдЯреИрдЧ рд╕реЗрдЯ рд╣реИред

рдкреЗрдЬ рддреИрдпрд╛рд░ рд╣реИ - рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВред

Custom_subsults.module рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:

 <?php /* Implements hook_menu() */ function custom_subscriptions_menu() { ... } /** * Implements ajax callback function */ function custom_subscriptions_ajax() { global $user; if($_POST['type'] == 'follow') { if ($_POST['nid']) { db_insert('custom_subscriptions') ->fields(array( 'uid' => $user->uid, 'nid' => $_POST['nid'], )) ->execute(); print(1); } } else if($_POST['type'] == 'unfollow') { if ($_POST['nid']) { db_delete('custom_subscriptions') ->condition('uid', $user->uid) ->condition('nid', $_POST['nid']) ->execute(); print(1); } } else { print(0); } } 

рдкреЛрд╕реНрдЯ- рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХреНрд╢рди ( рдлреЙрд▓реЛ / рдЕрдирдлреЙрд▓реЛ ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдЯреЗрдмрд▓ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рддреЗ рдпрд╛ рд╣рдЯрд╛рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдпреВрдЖрдИрдбреА (рд╡реИрд╢реНрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛) рдФрд░ рдПрдирдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ '1' рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред

рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдмрдиреА рд╣реБрдИ рд╣реИ - рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдард┐рдд рдкреГрд╖реНрда рдкрд░ nid рдлрд╝реАрд▓реНрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ред

Custom_subsults.js рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:

 (function ($) { Drupal.behaviors.collectiveMove = { attach: function(context, settings) { ... // click on follow/unfollow buttons $('.view-items .views-row .views-field-nid a').bind('click', function(e) { e.preventDefault(); var href = $(this).attr('href'); var strs = href.split('/'); var item = $(this); $.post( Drupal.settings.basePath + 'custom_subscriptions_ajax', { type: strs[0], nid: strs[1], }, function (data) { if (data == 1) { if (strs[0] == 'follow') { item.text('UNFOLLOW'); item.removeClass('follow'); item.addClass('following unfollow'); item.attr('href', 'unfollow/' + strs[1]); } if (strs[0] == 'unfollow') { item.text('FOLLOW'); item.removeClass('following'); item.removeClass('unfollow'); item.addClass('follow'); item.attr('href', 'follow/' + strs[1]); } } } ); }); } }; })(jQuery); 

рдЬрдм рд╣рдо nid рдлрд╝реАрд▓реНрдб рдореЗрдВ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ:

рдПрдХ рдЖрдлреНрдЯрд░рд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп


рдЗрд╕ рд▓реЗрдЦ рдиреЗ Drupal 7 рдореЗрдВ рдиреЛрдб рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдкреЛрд╕реНрдЯ- рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рд╕рджрд╕реНрдпрддрд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред
рдЖрдк рдпрд╣рд╛рдВ рддреИрдпрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ: github.com/Sacret/custom_subscos

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


All Articles