рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдбреНрд░реБрдкрд▓ 7 рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдирд╛ рд╕реАрдЦрдиреЗ рдХрд╛ рдХрд╛рдо рдорд┐рд▓рд╛ред рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЦреЛрдВ рдФрд░ рдкреБрд╕реНрддрд┐рдХрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдореЗрдВ рд╣рд╛рде рдмрдВрдЯрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдереЗ, рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдмрд╣реБрдд рдХрдо рдереАред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдиреЗ рднреА рдореБрдЭреЗ рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреАред рдЖрдзреЗ рдореЗрдВ рджреБ: рдЦ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдХрдИ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХреА рдФрд░ рдЗрд╕реЗ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдбреНрд░реБрдкрд▓ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рд╣реБрдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдФрд░ рджреНрд░реБрдкрд╛рд▓ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдХрдо рд╕реЗ рдХрдо рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
Drupal API рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд
рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЖрд░рдПрд╕рдПрд╕ рдлрд╝реАрдб рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдкреГрд╖реНрда рдкрд░ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ "рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо" рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЕрдХреНрд╖рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рд▓реЛрдЕрд░рдХреЗрд╕ рд╡рд░реНрдг рдФрд░ "_" рдЪрд┐рд╣реНрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо "rss_feeds" рд░рдЦрд╛ред
рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ:
рд╕рд╛рдЗрдЯреЗрдВ / рд╕рднреА / рдореЙрдбреНрдпреВрд▓ / rss_feeds (рд╕рднреА рдирдП рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдЖрдк рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП)ред рдЗрд╕рдореЗрдВ, рд╣рдо
rss_feeds.info рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ META рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ:
name = RSS рдлрд╝реАрдбреНрд╕
рд╡рд┐рд╡рд░рдг = RSS рдлрд╝реАрдбреНрд╕ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдкреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИред
рдкреИрдХреЗрдЬ = "рдЖрд░рдПрд╕рдПрд╕"
рдХреЛрд░ = 7.x
рд╕рдВрд╕реНрдХрд░рдг = "7.x-1.0"
config = admin / config / content / rss_feeds
рдлрд╛рдЗрд▓реЗрдВ [] = rss_feeds.module
- рдирд╛рдо - рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдЬреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- рд╡рд┐рд╡рд░рдг - рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЬреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ;
- рдкреИрдХреЗрдЬ - рдЙрд╕ рд╢реНрд░реЗрдгреА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдкреГрд╖реНрда рдкрд░ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- рдХреЛрд░ - рдбреНрд░реБрдкрд▓ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
- рд╕рдВрд╕реНрдХрд░рдг - рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг;
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ - рд╡рд╣ рдкрде рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛;
- рдлрд╛рдЗрд▓реЗрдВ [] - рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЬреБрдбрд╝реА рдлрд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА;
рдХреБрдЫ рдФрд░ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк
рдпрд╣рд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░рд╛ рдореЙрдбреНрдпреВрд▓ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ RSS (рдЗрд╕рдХрд╛ рдирд╛рдо рдФрд░ URL) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред
Rss_feeds.install рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
<?php function rss_feeds_uninstall() { cache_clear_all('rss_feeds', 'cache', TRUE); drupal_uninstall_schema('rssfeeds'); menu_rebuild(); } function rss_feeds_schema() { $schema['rssfeeds'] = array( 'fields' => array( 'id' => array('type' => 'serial', 'size'=>'normal', 'not null' => TRUE), 'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE), 'url' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE), 'created_at' => array('type' => 'int', 'not null' => TRUE), 'updated_at' => array('type' => 'int', 'not null' => TRUE), ), 'primary key' => array('id') ); return $schema; }
рд╕реНрдХреАрдорд╛ () рд╣реБрдХ рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ () рд╣реБрдХ рдХреИрд╢ рдХреЛ
рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ , рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдореЗрдиреВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ (рдпрд╣ рдбреНрд░реБрдкрд▓ рдореЗрдВ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП "?>" рдЯреИрдЧ рдХреЛ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ)ред
.Module рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛
рдЕрдЧрд▓рд╛, рд╣рдо рд╕реАрдзреЗ рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ -
rss_feeds.module :
<?php function rss_feeds_block_info() { $blocks['rss_feeds'] = array( 'info' => t('RSS Feeds'), 'cache' => DRUPAL_CACHE_PER_ROLE,
рдЗрд╕ рд╣реБрдХ рдореЗрдВ, рд╣рдо рдкреНрд░рдпреБрдХреНрдд рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╕рд╛рде, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ
'rss_feeds' рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
'info' рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдФрд░
'cache' рдХреИрд╢ рдирд┐рдпрдо рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ
рд▓рд┐рдП hook_block_info () рджреЗрдЦреЗрдВред
рдЖрдЧреЗ рд╣рдо
рд╣реБрдХ_рдореЗрдиреВ () рдХрд╛ рд╡рд░реНрдгрди
рдХрд░рддреЗ рд╣реИрдВ :
function rss_feeds_menu() { $items = array(); $items['admin/config/content/rss_feeds'] = array( 'title' => 'RSS Feeds', 'description' => 'Configure the RSS feeds list.', 'page callback' => 'rss_list', 'access arguments' => array('administer site configuration'), ); $items['admin/config/content/rss_feeds/list'] = array( 'title' => 'RSS feeds list', 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => 1, );
рдЖрдЗрдЯрдо рдореЗрдВ, рд╣рдо URL, рдЗрд╕рдХрд╛ рд╢реАрд░реНрд╖рдХ (рд╢реАрд░реНрд╖рдХ), рд╡рд┐рд╡рд░рдг (рд╡рд┐рд╡рд░рдг), рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдлрдВрдХреНрд╢рди (рдкреЗрдЬ рдХреЙрд▓рдмреИрдХ), рдкрд╛рд░рд┐рдд рддрд░реНрдХ (рдкреГрд╖реНрда рддрд░реНрдХ), рдПрдХреНрд╕реЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ (рдПрдХреНрд╕реЗрд╕ рддрд░реНрдХ), рдкреНрд░рдХрд╛рд░ (рдкреНрд░рдХрд╛рд░) рдФрд░ "рд╡рдЬрди" (рд╡рдЬрди) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ
рдкреГрд╖реНрда рдХреЙрд▓рдмреИрдХ -
drupal_get_from рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдлреЙрд░реНрдо рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
"рдкреГрд╖реНрда рддрд░реНрдХ => рд╕рд░рдгреА (1)" рдореЗрдВ , рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо URL рдХреЗ 1 рддрддреНрд╡ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдЧрдгрдирд╛ 0 рд╕реЗ рдЬрд╛рддреА рд╣реИ)ред
рд╣реБрдХ_рдореЗрдиреВ рдкрд░ рдЕрдзрд┐рдХ
() ред
рдЕрдЧрд▓рд╛, рд╣рдо рдЙрд╕ рдлреЙрд░реНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рдЖрд░рдПрд╕рдПрд╕ рдлрд╝реАрдб рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ:
function rss_feeds_form($form, &$form_state, $rss = null) { $form['name'] = array( '#title' => t('RSS feed name.'), '#description' => t('Insert RSS shortcut name'), '#type' => 'textfield', '#default_value' => $rss ? $rss['name'] : '', '#required' => true, ); $form['url'] = array( '#title' => t('RSS feed url.'), '#description' => t('Insert RSS url'), '#type' => 'textfield', '#default_value' => $rss ? $rss['url'] : '', '#required' => true, ); $form['submit'] = array( '#type' => 'submit', '#value' => $rss ? t('Save') : t('Add'), ); if ($rss) { $form['id'] = array( '#type' => 'value', '#value' => $rss['id'], ); } return $form; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╣рдо рдлреЙрд░реНрдо рдореЗрдВ
$ rss рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлреЙрд░реНрдо рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╣рдо рдПрдХ рдирдпрд╛ рдлреАрдб рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдХреЛ рдПрдбрд┐рдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЯреА () (рдЕрдиреБрд╡рд╛рдж) рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдмрд╛рдд рдХрд░реВрдВрдЧрд╛)ред
рд╣реБрдХ_рдлреЙрд░реНрдо рдкрд░ рдЕрдзрд┐рдХ
() ред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ
рд╣реБрдХ_рдлреЙрд░реНрдо_рд╡реЗрд▓рд┐рдбреЗрдЯ () рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рдлреЙрд░реНрдо рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдЧрд╛:
function rss_feeds_form_validate($form, &$form_state) { $url = $form_state['values']['url']; if (fopen($url, "r")) { libxml_use_internal_errors(true); $rss_feed = simplexml_load_file($url); if (empty($rss_feed)) { form_set_error('url', t('URL is invalid!')); } } else { form_set_error('url', t('URL is invalid!')); } }
рдкрд╣рд▓реЗ рд╣рдореЗрдВ
$ form_state рд╕реЗ рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреБрдЫ рдЧрд▓рдд рд╣реИ, рддреЛ рдорд╛рдирдХ
form_set_error () рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдкреНрд░рдкрддреНрд░ рдлрд╝реАрд▓реНрдб рдирд╛рдо рдФрд░ рд╕рдВрджреЗрд╢ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдЬрдм рдлреЙрд░реНрдо рд╕рддреНрдпрд╛рдкрди рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ
рд╣реБрдХ_рдлреЙрд░реНрдо_рд╕реБрдорд┐рдЯ () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ :
function rss_feeds_form_submit($form, &$form_state) { $rss = array( 'name' => $form_state['values']['name'], 'url' => $form_state['values']['url'], 'created_at' => time(), 'updated_at' => time(), );
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред
drupal_write_record () рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ,
drupal_set_message () рд╕рд┐рд╕реНрдЯрдо рд╕рдВрджреЗрд╢,
drupal_goto () рджрд┐рдП рдЧрдП URL рдкрд░ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдХреЗрд╡рд▓ рдЯреЗрдк рдЖрдИрдбреА (
$ rss ) рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
hool_load рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
function rss_load($id) { $rss = db_select('rssfeeds', 'n') ->fields('n', array('id', 'name', 'url', 'created_at', 'updated_at')) ->condition('n.id', $id) ->execute()->fetchAssoc(); return $rss; }
рдЕрдм,
$ rss рдХреЗ рд░реВрдк рдореЗрдВ , рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдлрд╝реЙрд░реНрдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯред
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдкреГрд╖реНрда рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЕрдкрдиреА рдЖрд░рдПрд╕рдПрд╕ рдлрд╝реАрдб рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ -
rss_list () :
function rss_list() { $header = array( array('data' => t('Name')), array('data' => t('URL')), array('data' => t('Actions')) ); $rss = db_select('rssfeeds', 'n') ->fields('n', array('id', 'name', 'url')) ->execute()->fetchAll(); $row = array(); if ($rss) { foreach ($rss as $rss_feed) { $actions = array( l(t('edit'), 'admin/config/content/rss_feeds/' . $rss_feed->id . '/edit'), l(t('delete'), 'admin/config/content/rss_feeds/' . $rss_feed->id . '/delete'), ); $row [] = array( array('data' => $rss_feed->name), array('data' => $rss_feed->url), array('data' => implode(' | ', $actions)), ); } } return theme('table', array( 'header' => $header, 'rows' => $row, )); }
рдлрдВрдХреНрд╢рди
l () (рд▓рд┐рдВрдХ) - рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдХрд╛рд░реНрдп
рдереАрдо () рд╣реИ ред рдЖрдк рдЙрд╕рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдорд┐рд▓реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧреА рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред
рдиреАрдЪреЗ рд╣рдо рд░рд┐рдХреЙрд░реНрдб
rss_feeds_delete () рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ:
function rss_feeds_delete($rss) { $rss_deleted = db_delete('rssfeeds') ->condition('id', $rss['id']) ->execute(); drupal_set_message(t('RSS Feed deleted!')); drupal_goto('admin/config/content/rss_feeds'); }
рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВред
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рд╛ рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ (рдмреНрд▓реЙрдХ рдпрд╛ рдкреГрд╖реНрда) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдБ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИрдВ:
function rss_contents($display) { $query = db_select('rssfeeds', 'n') ->fields('n', array('id', 'name', 'url')) ->orderBy('name', 'DESC'); if ($display == 'block') { $query->range(0, 5); } return $query->execute(); }
рдпрджрд┐ рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ
'рдмреНрд▓реЙрдХ' рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ 5 рд░рд┐рдХреЙрд░реНрдб рдорд┐рд▓реЗрдВрдЧреЗред
рдЕрдЧрд▓рд╛, рд╣рдо рдмреНрд▓реЙрдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╣реБрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ -
рд╣реБрдХ_рдмреНрд▓реЙрдХ_рд╡реНрдпреВ () :
function rss_feeds_block_view($delta = '') { $blocks = array(); switch ($delta) { case 'rss_feeds': $select = db_select('rssfeeds', 'tc'); $select->addField('tc', 'name'); $select->addField('tc', 'url'); $entries = $select->execute()->fetchAll(); $blocks['subject'] = t('List of URLs'); $blocks['content'] = theme('rssfeeds_block', array('urls' => $entries)); } return $blocks; }
рдпрд╣ рдмреНрд▓реЙрдХ рдкреНрд░рд╢рд╛рд╕рди рдкреИрдирд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
рдЕрдм рд╣рдо рдЙрд╕ рдкреГрд╖реНрда рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬрд┐рд╕ рдкрд░ рдлрд╝реАрдб рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА, рдЬрдм рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА (рдПрдХ рдирдП рдЯреИрдм рдореЗрдВ):
function _rss_feeds_page() { drupal_set_title(t('RSS Feeds')); $result = rss_contents('page')->fetchAll(); if (!$result) { $page_array['rss_feeds_arguments'] = array( '#title' => t('RSS Feeds page'), '#markup' => t('No RSS feeds available'), ); return $page_array; } else { $page_array = theme('rssfeeds_page', array('urls' => $result)); return $page_array; } }
... рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рди рдкреГрд╖реНрда:
function rss_content($rss) { $url = $rss['url']; libxml_use_internal_errors(true); $rss_feed = simplexml_load_file($url); if (!empty($rss_feed)) { drupal_set_title($rss_feed->channel->title); $page_array = theme('rssfeeds_content', array('items' => $rss_feed)); return $page_array; } else { $page_array['rss_feeds_arguments'] = array( '#title' => t('All posts from the last week'), '#markup' => t('No posts available.'), ); return $page_array; } }
рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдореИрдВрдиреЗ
рдереАрдо () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ
'rssfeeds_block' рдФрд░
'rssfeeds_content' рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдПред рдпреЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИрдВред рдЖрдЗрдП рдЙрдиреНрд╣реЗрдВ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
hook_theme () рдмрдирд╛рдПрдВ:
function rss_feeds_theme() { return array( 'rssfeeds_block' => array( 'variables' => array( 'urls' => NULL ), 'template' => 'rssfeeds-block', ), 'rssfeeds_page' => array( 'variables' => array( 'urls' => NULL ), 'template' => 'rssfeeds-page', ), 'rssfeeds_content' => array( 'variables' => array( 'items' => NULL ), 'template' => 'rssfeeds-content', ) ); }
рдлрд╝реАрд▓реНрдб рдореЗрдВ
'рдЯреЗрдореНрдкреНрд▓реЗрдЯ' рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдирд╛рдо рд╕реЗ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИред
рдЕрдм рд╕реНрд╡рдпрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдБред рдЕрд░реНрдерд╛рддреН:
rssfeeds-block.tpl.php ,
rssfeeds-page.tpl.php рдФрд░
rssfeeds-content.tpl.php ред
рдкрд╣рд▓реА рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:
<div id="rssfeeds-pager"> <?php foreach ($urls as $url): ?> <span> <a target="_blank" href="http://<?php echo $url->url; ?>"><?php echo $url->url; ?></a><br> </span> <?php endforeach; ?> </div>
... рджреВрд╕рд░рд╛:
<div id="rssfeeds-pager"> <?php foreach ($urls as $url): ?> <span> <a target="_blank" href="rss_feeds/<?php echo $url->id; ?>/items"><?php echo $url->name; ?></a><br> </span> <?php endforeach; ?> </div>
... рдФрд░ рддреАрд╕рд░рд╛, рдХреНрд░рдорд╢рдГ:
<?php foreach ($items->channel->item as $item): ?> <span class="title"><a href="<?php echo $item->link; ?>"><?php echo $item->title; ?></a></span><br><br> <?php echo $item->description; ?><br><br><?php echo $item->pubDate; ?> <hr><br><br> <?php endforeach; ?>
рдЕрдм рд╣рдорд╛рд░рд╛ рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдзреНрдпрд╛рди рджрд┐рдпрд╛ - рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм CSS рд╕реНрдЯрд╛рдЗрд▓ рдлрд╛рдЗрд▓ рдХреЛ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрдЯреИрдЪ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, .info рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:
рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ [рд╕рднреА] [] = main.cssрдФрд░
main.css рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
.title { font-size: 16px; text-shadow: 0px 0px 1px black; font-weight: bold; } .title a { text-decoration: none; color: #B81007; } .title a:hover { text-decoration: underline; }
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреИрдпрд╛рд░ рдореЙрдбреНрдпреВрд▓ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧреАред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдкреБрдирд╢реНрдЪ
рджреВрд╕рд░рд╛ рднрд╛рдЧ рд▓рд┐рдЦрд╛ред