Japanese plugin dev 3 4 - Hiranyaloka/Documentation GitHub Wiki
MTã®ãã©ã°ã€ã³ãéçºããã«ã¯ãMTãªããžã§ã¯ãã®å©çšãå¿ é ã§ãã
ããã§ã¯MTãªããžã§ã¯ãã®å©ç𿹿³ã解説ããŸãã
MTãªããžã§ã¯ããšã¯MT::Objectã¯ã©ã¹ãšãããããæŽŸçãããMT::BlogãMT::Entryãšãã£ãã¯ã©ã¹ã®äºãæããŸããæŽŸçãããã¯ã©ã¹ã¯MT::Objectã¯ã©ã¹ã«ç¬èªã®å®è£ ãå ãããããããªããžã§ã¯ãæåã®ã¯ã©ã¹ãšããŠåäœããŸãã
MTãæ¡åŒµããã«ã¯ããã®MTãªããžã§ã¯ããæäœãåã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã®æ°èŠäœæãä¿åãä¿®æ£ãåé€ãªã©ãè¡ããŸããMTãªããžã§ã¯ãã®å€æŽã¯ããŒã¿ããŒã¹ãšçŽçµããŠãããSQLæãæžãäºç¡ããããã®æäœãè¡ããŸããå ·äœçã«ã¯Data Object Driverããªããžã§ã¯ãã®æäœãšããŒã¿ããŒã¹ã®æäœã®äžç¶ãè¡ã£ãŠããŸãã
åŸæ¥ã®èšè¿°æ³ã¯MTã®ã¯ã©ã¹åãçŽæ¥èšèŒããç©ïŒ MT::Foo
ïŒã§ããããæ°ããèšè¿°æ¹æ³ïŒ MT->model($class_name)
ïŒã䜿ãå Žé¢ãå¢ããŠããŸãã®ã§ãããã§ãŸãšããŸãããŸããä»åŸã®è§£èª¬ã¯æ°ããèšè¿°æ¹æ³ã䜿ããŸãã
MTã¯ã©ã¹åãçŽã«èšè¿°ããããã«å¯ŸããŠæäœãè¡ããŸãã
my $obj = MT::Foo->new();
ã¯ã©ã¹åãæå®ã㊠MT->model($class_name)
ã§ã¯ã©ã¹ $class
ãååŸããããã«å¯ŸããŠæäœãè¡ããŸãã
ãã®ããã«ããäºã§ãäŸãã°ã³ã¡ã³ãã¯ã©ã¹ãšãã©ãã¯ããã¯ã¯ã©ã¹ã«åæ§ã®åŠçãè¡ãé $class_name
ã®å€æŽã ãã§ãïŒã³ãŒãã§åŠçã§ããå Žåããããã³ãŒãã®ã¡ã³ããã³ã¹ã容æã«ãªããŸãã
my $class_name = 'foo'; my $class = MT->model($class_name); my $obj = $class->new();
ãµãã¿ã€ããæã£ãMT::Assetã®ãããªã¯ã©ã¹ã®å Žåã MT->models('asset')
ãšããããšã§ãã©ã®ãããªãµãã¿ã€ããå«ãŸããããããããŸããïŒâassetâ, âasset.imageâ, âasset.videoâ, etc.ïŒ
my @types = MT->models('asset');
ãªããžã§ã¯ãã®æ°èŠäœæã¯ä»¥äžã®ããã«ã¯ã©ã¹ã«å¯Ÿã㊠new()
ãåŒã¶äºã§å®è¡ã§ããŸãã
my $class = MT->model($class_name); my $obj = $class->new();
ãŸãã $class
ãæç€ºçã«ååŸãããïŒã©ã€ã³ã§ä»¥äžã®ããã«èšè¿°ããããšãã§ããŸãã
my $obj = MT->model($class_name)->new();
ååŸããããšèããŠãããªããžã§ã¯ãã®idãæå®ããŠããªããžã§ã¯ããååŸããŸããããã§åž°ã£ãŠæ¥ãã®ã¯ãªããžã§ã¯ã $obj
ã«ãªããŸãã
my $obj = $class->load($id);
äžèšã® load($id)
ã§ã¯ãªãã load( $terms, $args )
ãšèšè¿°ããäºã§ãäžèŽæ¡ä»¶ $terms
ãåºåæ¡ä»¶ $arg
ã«åã£ã圢ã§ãªããžã§ã¯ããååŸã§ããŸããããã§åž°ã£ãŠæ¥ãã®ã¯ãªããžã§ã¯ãã®é
å @obj
ã«ãªããŸãã
my $terms = { author_id => $author->id, blog_id => $blog->id }; my $args = { sort => 'created_on', direction => 'ascend', limit => 20 }; my @obj = $class->load( $terms, $args ); for my $obj (@obj) { # do something }
åè¿°ã®äžèŽæ¡ä»¶ $terms
ãšåºåæ¡ä»¶ $args
ãçšã㊠load_iter( $terms, $args )
ãå©çšãããšãã€ãã¬ãŒã¿ïŒããŒã¿ããŒã¹ã®ãã€ã³ã¿ã®ãããªãã®ïŒãååŸã§ããŸãã
äžè¿°ã® load()
ã§ã®å
šä»¶ååŸã§ã¯ãååŸããåã®ãªããžã§ã¯ãã®ã¡ã¢ãªãå¿
èŠãšãªããŸãããã€ãã¬ãŒã¿ã®å Žåã¯ãããã£ãäœåãªã¡ã¢ãªãå¿
èŠãšããŸããã
é ç¹°ãã«ã€ãã¬ãŒã¿ãããªããžã§ã¯ããååŸããã«ã¯ $obj = $iter->()
ãšããŸãã
my $iter = $class->load_iter( $terms, $args ); while (my $obj = $iter->()) { # do something }
ã«ã©ã åãããŒãšãããã®ã«ã©ã ã®å 容ãå€ãšããããã·ã¥ãžã®ãªãã¡ã¬ã³ã¹ã§ããããšãã°ãfooãšããã«ã©ã ã®å 容ã"bar"ãšäžèŽãããããªMT::Fooãªããžã§ã¯ããèªã¿èŸŒãã«ã¯ãloadãæ¬¡ã®ããã«åŒã³åºããŸãã
my @foo = MT::Foo->load({ foo => 'bar' });
$args
ã¯åºåæ¡ä»¶ãæ ŒçŽããããã·ã¥ãžã®ãªãã¡ã¬ã³ã¹ã§ãªããã°ãªããŸããããã®ããã·ã¥ã«ã¯ã以äžã®ãã©ã¡ãŒã¿ãŒãæå®å¯èœã§ãã
- sort => âcolumnâ
- èŠã€ãã£ããªããžã§ã¯ããã"column"ãšããååã®ã«ã©ã ã®å 容ã§ãœãŒãããŸãã"column"ã¯ã€ã³ããã¯ã¹ã€ãã®ã«ã©ã ã§ãªããã°ãªããŸããã
- direction => âascend|descendâ
- ãœãŒãé ã®æå®ã§ãsortãšçµã¿åãããŠäœ¿ããŸãã"ascend"ïŒæé ïŒã"descend"ïŒéé ïŒã®ãããããæå®ã§ããŸããããã©ã«ãã¯"ascend"ã§ãã
- limit => âNâ
- limitã®æå®ããªãå Žåã«ã¯ãããã©ã«ãã§æ¡ä»¶ã«åããªããžã§ã¯ãããã¹ãŠèªã¿èŸŒã¿ãŸãããlimitãæå®ãããšããªããžã§ã¯ãã®åæ°ã®äžéãNåã«ããŠèªã¿èŸŒã¿ãŸãã
- offset => âMâ
- limitãšçµã¿åãããŠäœ¿ããæåã®Nåãè¿ãïŒoffsetã®æå®ããªãå Žåã®ããã©ã«ãïŒãããã«ãMçªç®ããNååã®ãªããžã§ã¯ããè¿ããŸãã
- start_val => âvalueâ
- limitãšsortã®äž¡ãã©ã¡ãŒã¿ãŒãšçµã¿åãããŠäœ¿ããŸããæ¡ä»¶ã«åãæåã®Nåã®ãªããžã§ã¯ããè¿ã代ããã«ã"column"ïŒãœãŒãåºæºãšãªãã«ã©ã ïŒã®å€ã"value"ãã倧ããæåã®Nååã®ãªããžã§ã¯ããè¿ããŸãã
- range
- åŒæ°
$terms
ã®äžã§ãããã«ã©ã åã«å¯Ÿããå€ãšããŠé åãªãã¡ã¬ã³ã¹ãæå®ããå Žåã«ããããšçµã¿åãããŠäœ¿ããŸããæå®ããã«ã©ã ã®å€ããããå€ã«åèŽãããªããžã§ã¯ããæ€çŽ¢ãã代ããã«ãå€ãæå®ããç¯å²å ã«ãããªããžã§ã¯ããè¿ãããã«æç€ºããŸãã - rangeã®å€ã«ã¯ãããã·ã¥ã»ãªãã¡ã¬ã³ã¹ãæå®ããŸãããã®ããã·ã¥ã®ããŒã¯ãç¯å²ãšããŠè§£éãã¹ãã«ã©ã ã®ã«ã©ã åã§ãå€ã¯ãã¹ãŠ1ã§ãã
- åŒæ°
my $class = MT->model('entry'); my @entries = $class->load( { created_on => ['201103010000', '201104010000'] }, { range => { created_on => 1 } } );
- join
- å¥ã®ãªããžã§ã¯ãã®éåãæ€çŽ¢åºæºãããã¯ãœãŒãåºæºãšããŠããªããžã§ã¯ãã®éåãéžæããã®ã«äœ¿ããŸããããšãã°ãæè¿ã³ã¡ã³ãã®ã€ããNåã®ãšã³ããªãŒãéžæããå Žåãªã©ã§ãããã®å Žåãæ€çŽ¢åºæºã¯MT::Commentãªããžã§ã¯ãã§ãããè¿ããããªããžã§ã¯ãã¯MT::Entryãªããžã§ã¯ãã§ãããã®ãããªå Žåã«joinã䜿ããšãæè¿ã®MT::Commentãªããžã§ã¯ããèªã¿èŸŒãã§ãããããããã®ã³ã¡ã³ãå ã§ããMT::Entryãªããžã§ã¯ããåå¥ã«èªã¿èŸŒããããåŠçé床ãé«éã«ãªããŸãã
- ãã®joinã¯ãSQLæã®JOINæŒç®åãšã¯ç°ãªããè¿ããããªããžã§ã¯ããåžžã«1ã€ã®åã®ãªããžã§ã¯ãã ãã§ããããšã«æ³šæããŠãã ãããäžã®äŸã§ã¯ãè¿ããããªããžã§ã¯ãã¯MT::Entryãªããžã§ã¯ãã ãã§ããMT::Commentãªããžã§ã¯ãã®ã«ã©ã ãå«ããããšã¯ã§ããŸããã
- joinã®äžè¬çãªæå®æ¹æ³ã¯ä»¥äžã®ãšããã§ãã
join => [ CLASS, JOIN_COLUMN, $terms, $args ]
-
CLASS
ã¯çµåã«äœ¿ãã¯ã©ã¹ã§ããJOIN_COLUMN
ã¯2ã€ã®ãªããžã§ã¯ãã®ããŒãã«ãçµåããã«ã©ã åã§ãã$terms
ãš$args
ã®æå®æ¹æ³ã¯ãå€åŽã®load
ãŸãã¯load_iter
ã¡ãœããã®åŒæ°ãšåæ§ã§ãçµåã«å©çšãããªããžã§ã¯ãã®éžææ¹æ³ãæå®ããŸãã - ããšãã°ã次ã®ããã«loadã¡ãœããã䜿ããšãæè¿ã³ã¡ã³ããã€ãã10ä»¶ã®ãšã³ããªãŒãéžæããããšãã§ããŸãããã®ã³ãŒãã§ã¯ã unique ãæå®ããããšã«ãããè¿ãããMT::Entryãªããžã§ã¯ãã«éè€ããªãããšãä¿èšŒãããŠããŸãããã®ãã©ã°ã®æå®ãããªãå Žåãåäžã®ãšã³ããªãŒã«2ã€ã®ã³ã¡ã³ããã€ããŠãããšãåãMT::Entryã2ã€è¿ãããããšã«ãªããŸãã
my $class = MT->model('entry'); my @entries = $class->load(undef, { 'join' => [ 'MT::Comment', 'entry_id', { blog_id => $blog_id }, { 'sort' => 'created_on', direction => 'descend', unique => 1, limit => 10 } ] });
- unique
- è¿ããããªããžã§ã¯ããäžæã§ããããšãä¿èšŒããŸãã
- ãã®æå®ãæå³ãæã€ã®ã¯ãjoinã䜿ããšãã ãã§ãããšããã®ã¯ãåäžã®ãªããžã§ã¯ãã®ããŒã¿ããŒã¹ããããŒã¿ãèªã¿èŸŒãå Žåã«ã¯ãè¿ããããªããžã§ã¯ãã¯åžžã«äžæã ããã§ãã
ãªããžã§ã¯ãã®å€ãèšå®ããã®ã¯ç°¡åã§ãããªããžã§ã¯ãã® bar
èŠçŽ ã«æåå foobar
ãèšå®ããå Žåã以äžã®æ§ã«èšè¿°ããŸãã
$obj->bar('foobar');
å€ã®ååŸãèšå®ãšåããç°¡åã§ãããªããžã§ã¯ãã® bar
èŠçŽ ã以äžã®æ§ã«ååŸããŸããäžèšã®ããã«æååãèšå®ããŠããå Žåã $value
ã«ã¯ foobar
ãèšå®ãããŸãã
my $value = $obj->bar();
ãªããžã§ã¯ããæ°èŠäœæããããå€ãèšå®ããåŸãä¿åãããªããšçµæãããŒã¿ããŒã¹ã«æ ŒçŽãããŸããã以äžã®æ§ã«ä¿å save()
ããŸãã
ä¿ååºæ¥ãªãã£ãå ŽåïŒ $obj->save()
ã倱æããå ŽåïŒã¯ç°åžžç³»ã®ãšã©ãŒãªã®ã§ããšã©ãŒã¡ãã»ãŒãžãåºã㊠die
ããŸãã
$obj->save() or die $obj->errstr;
ãªããžã§ã¯ããããŒã¿ããŒã¹ããåé€ããã«ã¯ä»¥äžã®æ§ã« remove()
ãåŒã³ãŸãã
åé€åºæ¥ãªãã£ãå ŽåïŒ $obj->remove()
ã倱æããå ŽåïŒã¯ç°åžžç³»ã®ãšã©ãŒãªã®ã§ããšã©ãŒã¡ãã»ãŒãžãåºã㊠die
ããŸãã
$obj->remove() or die $obj->errstr;
ãªããžã§ã¯ããããŒã¿ããŒã¹ããäžæ¬åé€ããã«ã¯ä»¥äžã®æ§ã« remove_all()
ãåŒã³ãŸãã
åé€åºæ¥ãªãã£ãå ŽåïŒ $obj->remove_all()
ã倱æããå ŽåïŒã¯ç°åžžç³»ã®ãšã©ãŒãªã®ã§ããšã©ãŒã¡ãã»ãŒãžãåºã㊠die
ããŸãã
$class->remove_all() or die $class->errstr;
ãªããžã§ã¯ããããŒã¿ããŒã¹ããåãªããžã§ã¯ããšäžç·ã«åé€ããã«ã¯ remove
ãäžæžãããã以äžã®æ§ã« remove_children()
ãåŒã³ãŸãã
ãã®äžã§ SUPER::remove
ãåŒã¶äºã§èŠªãªããžã§ã¯ããåé€ãããŸãã
sub remove { my $obj = shift; $obj->remove_children({ key => 'class_id' }); $obj->SUPER::remove; }
ããŒã¿ããŒã¹å
ã«ããã€ã®ããŒã¿ãä¿åãããŠãããã確èªããŸãã $count
ã«ã¯ããŒã¿æ°ãè¿ããŸãã
$count = $class->count( $terms, $args );
ããŒã¿ããŒã¹å ã«ããŒã¿ãä¿åãããŠãããã確èªããŸããååšããå Žåã¯1ããååšããªãå Žåã¯0ãè¿ããŸãã
if ($foo->exists()) { printf "Foo $foo already exists!"; }
ãããªããžã§ã¯ã $obj
ã MT::Foo
ã®ã€ã³ã¹ã¿ã³ã¹ãã©ããã確èªããã«ã¯ isa()
ãå©çšããŸãã
if ( $obj->isa('MT::Foo') ) { # do something }
åã¯ã©ã¹ã®å ·äœçãªæäœæ¹æ³ã¯ã以äžã®ããã¥ã¡ã³ããåèã«ããŠãã ããã
Movable Type ãªããžã§ã¯ãã»ãªãã¡ã¬ã³ã¹ïŒæ¥æ¬èªïŒ
Movable Type Perl DocumentationïŒè±èªïŒ
PHPã§MTãªããžã§ã¯ããå©çšããã®ã¯ãã€ãããã¯ãããªãã·ã³ã°ã®éã®WebããŒãžã®äœæã«ãªããŸãã®ã§ãMTãªããžã§ã¯ãã®å©çšã¯èªã¿èŸŒã¿ãã¡ã€ã³ãšãªããŸãã
MT::Fooãªããžã§ã¯ããèªã¿èŸŒãã«ã¯ä»¥äžã®ããã«èšè¿°ããŸãããã®ããã«PHPçã®ãªããžã§ã¯ãèªã¿èŸŒã¿ã«ã¯å°çšã®é¢æ°ãçšæãããŠããããã®é¢æ°ãå©çšããŠãªããžã§ã¯ããèªã¿èŸŒãããã«ãªã£ãŠããŸãã
ãŸããPerlçã§ã¯å ¬éããŠãããã¹ããŒã¿ã¹ãæç€ºããå¿ èŠããããŸããããPHPçã§ã¯å ¬éããŠãããªããžã§ã¯ãããååŸã§ããŸããã
$mt = $ctx->mt; $obj = $mt->db()->fetch_foo($foo_id);
$args['class'] = 'foo'; $args['blog_id'] = $blog_id; $args['offset'] = 20; $args['limit'] = 10; $mt = $ctx->mt; $obj = $mt->db()->fetch_foos($args);
以äžãäž»ãªé¢æ°ã§ãã
ã¯ã©ã¹ | 颿° |
MT::Website | fetch_website( $website_id ) |
MT::WebsiteïŒè€æ°ïŒ | fetch_websites( $args ) |
MT::Blog | fetch_blog( $blog_id ) |
MT::BlogïŒè€æ°ïŒ | fetch_blogs( $args ) |
MT::TemplateïŒè€æ°ïŒ | fetch_templates( $args ) |
MT::Page | fetch_page( $page_id ) |
MT::PageïŒè€æ°ïŒ | fetch_pages( $args ) |
MT::Entry | fetch_entry( $entry_id ) |
MT::EntryïŒè€æ°ïŒ | fetch_entries( $args, &$total_count ) |
MT::Category | fetch_category( $cat_id ) |
MT::CategoryïŒè€æ°ïŒ | fetch_categories( $args ) |
MT::Folder | fetch_folder( $folder_id ) |
MT::FolderïŒè€æ°ïŒ | fetch_folders( $args ) |
MT::Author | fetch_author( $author_id ) |
MT::AuthorïŒè€æ°ïŒ | fetch_authors( $args ) |
MT::Comment | fetch_comment( $comment_id ) |
MT::CommentïŒè€æ°ïŒ | fetch_comments( $args ) |
ä»åã®è§£èª¬ã§ãMTã®ããã°ã©ãã³ã°ã§ã¯SQLæãæžããã«ãªããžã§ã¯ããããŒã¿ããŒã¹ã«åºãå ¥ããããäºãšããªããžã§ã¯ãã®å©çšãå¹³æã§ããäºãããã£ãŠããã ãããšæããŸãã
ãã®è§£èª¬ã Movable Type ãªããžã§ã¯ãã»ãªãã¡ã¬ã³ã¹ïŒæ¥æ¬èªïŒ ã Movable Type Perl DocumentationïŒè±èªïŒ ãåèã«ãã©ã°ã€ã³éçºã楜ããã§äžããã
- ãã©ã°ã€ã³éçºã®ããã®ãã¡ãŒã¹ãã¹ããã
- ã¬ãžã¹ããªãYAMLã«ã€ããŠ
- ç°å¢å€æ°ã«ã€ããŠ
- ãã©ã°ã€ã³ã®ããŒã«ã©ã€ãŒãŒã·ã§ã³ã«ã€ããŠ
- ãã¹ãããªãã³ã§ã®ãã©ã°ã€ã³ã®éçºã«ã€ããŠ
- ã°ããŒãã«ã»ã¢ãã£ãã¡ã€ã¢ãã©ã°ã€ã³ã®éçºã«ã€ããŠ
- ãã¡ã³ã¯ã·ã§ã³ã¿ã° ãã©ã°ã€ã³ã®éçºã«ã€ããŠ
- ãããã¯ã¿ã° ãã©ã°ã€ã³ã®éçºã«ã€ããŠ
- ã³ã³ãã£ã·ã§ãã«ã¿ã° ãã©ã°ã€ã³ã®éçºã«ã€ããŠ
- ãã©ã°ã€ã³ã®ãããã°
- ãã©ã°ã€ã³ã®èšå®æ¹æ³
- ã³ãŒã«ããã¯ãšããã¯ãã€ã³ã
- ã¹ã±ãžã¥ãŒã«ã¿ã¹ã¯ã®éçº
- MTãªããžã§ã¯ãã®å©ç𿹿³
- ç¬èªãªããžã§ã¯ãã®äœæ
- æ°èŠã¢ããªã±ãŒã·ã§ã³ã®äœæ
- Transformerãã©ã°ã€ã³ã®éçº
- 管çç»é¢ã®ã¡ãã¥ãŒä¿®æ£
- ãªã¹ãã¢ã¯ã·ã§ã³ã®è¿œå
- åäœã¢ãŒãã®è¿œå ãšã¢ãŒãã«ãŠã£ã³ããŠã®è¡šç€º
- å€éšWeb APIãšã®é£æº
- æš©éãšããŒã«