Drupal Developers рдХреЗ рдмреАрдЪ
Feeds рдореЙрдбреНрдпреВрд▓ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╡рд╛рд▓ рдпрд╣ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЕрдкрдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВред рдлреАрдбреНрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕рд┐рд╕реНрдЯрдо рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
3 рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рдЖрдкрдХреЛ рдирдП рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
- FeedsFetcher - рдПрдХ рдХрд▓реЗрдХреНрдЯрд░ рдкреНрд▓рдЧрдЗрдиред рдорд╛рдирдХ: HTTP рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдбред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
- FeedsProcessor - рдПрдВрдЯрд┐рдЯреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд▓рдЧрдЗрдиред рдорд╛рдирдХ: рдиреЛрдб рдкреНрд░реЛрд╕реЗрд╕рд░, рдЯреИрдХреНрд╕реЛрдиреЙрдореА рдЯрд░реНрдо рдкреНрд░реЛрд╕реЗрд╕рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ред рдирдП рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдПрдХ рдирдпрд╛ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рдЗрдХрд╛рдЗрдпрд╛рдВ рдмрдирд╛рдПрдЧрд╛ рдЬреЛ рдорд╛рдирдХ рд╕реЗрдЯ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
- FeedsParser - рдПрдХ рдкрд╛рд░реНрд╕рд░ рдкреНрд▓рдЧрдЗрдиред рдлрд╝реАрдб рдореЗрдВ рдорд╛рдирдХ рдкрд╛рд░реНрд╕рд░ XML, CSV рдФрд░ рдХрдИ рдЕрдиреНрдп рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдкрд╛рд░реНрд╕рд░ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдХреНрд╕рд░ рдореБрдЭреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрдорд╛рдг
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдЬрд╛рдирдХрд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
json_example_parser.info
name = Json example parser description = Simple json parser package = Feeds core = 7.x dependencies[] = feeds
json_example_parser.module
<?php function json_example_parser_feeds_plugins() { $info = array(); $info['JsonExampleParser'] = array( 'name' => 'JSON parser', 'description' => 'Parses custom JSON.', 'handler' => array( 'parent' => 'FeedsParser',
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╣реБрдХ рдХреЗ рдореБрдЦреНрдп рдЖрдХрд░реНрд╖рдг рдХрд╛ рд╡рд░реНрдгрди рд╣реИред
рд╕реНрд░реЛрдд рдбреЗрдЯрд╛
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдпрд╛рддрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде "рдХрдВрдкреНрдпреВрдЯрд░ рдЧреЗрдо" рдиреЛрдб рд▓реЗрдВ:

рдЬреЛ рдбреЗрдЯрд╛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╡рд╣ JSON рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдЖрдПрдЧрд╛ред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рд╣реИ рдпрд╛ HTTP рд╕рдВрдЧреНрд░рд╛рд╣рдХ, Fetcher рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ рдЗрди рдХреЗ рд╕реЗрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред
рдЗрдирдкреБрдЯ JSON:
[ { "name":"Team Fortress 2", "year":2007, "price":0 }, { "name":"Warcraft III: The Frozen Throne", "year":2003, "price":13.9 }, { "name":"Diablo III", "year":2012, "price":33 } ]
рдкрд╛рд░реНрд╕рд░ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдирд╛
рдПрдХ рдкрд╛рд░реНрд╕рд░ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдорд╛рдирдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдлреАрдбрд░реНрд╕рдкреИрд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкрд╛рд░реНрд╕ рдФрд░ рдЧреЗрдЯрдореИрдкреНрд╕реЙрд░реНрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдмрд╛рдХреА рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
JsonExampleParser.inc
<?php class JsonExampleParser extends FeedsParser { public function parse(FeedsSource $source, FeedsFetcherResult $fetcher_result) { $result = new FeedsParserResult();
рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ред
рдкрд╛рд░реНрд╕ - рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡рд┐рдзрд┐; рд╕реНрд░реЛрдд рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдлреАрдбрд╕реНрд╕реЛрд░реНрд╕ рдФрд░ рдХреНрд▓рд╛рд╕ рдлреАрдб рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдлреАрдбрд╕реЗрдЯрд░.рдХрд╛рдЙрдВрдЯрд░ рдЬрд┐рд╕рд╕реЗ рд░реАрдб рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдмрдирд╛рддреА рд╣реИ FeedsParserResult рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рдеред
getMappingSources - рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреА рд╣реИ рдЬреЛ рд╕реНрд░реЛрдд рд╕реЗ рд▓рд┐рдЦрд┐рдд рд╡рд╕реНрддреБ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдкрд┐рдВрдЧ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдиреЛрдб рд╣реЗрдбрд░ рдЖрджрд┐ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
configForm - рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝реЙрд░реНрдо рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ рдЖрдпрд╛рддрдХ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдбреЗрдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
configDefaults - рдорд╛рдирдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
sourceDefaults рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝реЙрд░реНрдо рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдорд╛рдкрджрдВрдбреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐ рд╣реИред
sourceForm - рдПрдХ рдРрд╕рд╛ рдлреЙрд░реНрдо рдЬреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рд╡рд╣ рдлрд╝реЙрдЪрд░ рдлреЙрд░реНрдо рдХрд╛ рдкреВрд░рдХ рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрд╕реАрдорд┐рдд рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдлреАрдбреНрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдкреНрд▓рдЧ-рдЗрди рдорд┐рд▓рд╛ред рдлрд╝реАрдб рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдирдХ рдРрдб-рдСрди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред