XOOPS Cube Conference 2012 Developer Workshop 4
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
77,928
On Slideshare
77,928
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
4
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ニュースモジュールを 作ってみよう 2012年6月 氷川 霧霞 @kilica on Twitter http://jp.xoopsdev.com/
  • 2. ニュースモジュールbulletin
  • 3. どんな機能が必要?基本機能• ニュース一覧(投稿日の新しい順)• ニュース詳細• ニュース投稿(編集)• ニュース削除• フィールドは、 o id(topic_id) o タイトル(title) o カテゴリ(category_id) o 本文(content) o 投稿者(uid) o ニュース日時(newsdate) o 投稿日時(posttime)
  • 4. どんな機能が必要?詳細• 記事のカテゴリ分類• タイトル、カテゴリ、本文は入力必須項目。id, uid, 投稿日時は自動入力。• カテゴリID付きの投稿URLをリクエストした場合、投稿画面でそのカテゴリが選択 状態になっている• 投稿・削除は管理者(かサイト運営者が設定したグループ)のみが操作できる• 一覧および詳細画面での日時は「ニュース日時」が入っていれば「ニュース日時」、 なければ「投稿日時」を使う。• 「ニュース日時」が設定されている場合、「ニュース日時」になるまではそのニュー スを表示しない。ただし、管理者にのみは表示する。
  • 5. カテゴリの設定「カテゴリID付きの投稿URLをリクエストした場合、投稿画面でそのカテゴリが選択状 態になっている」http://localhost/xoops/html/modules/mynews/index.php?action=TopicEdit&category_id=2actions/TopicEditAction.class.phppublic function prepare(){ $req = $this->mRoot->mContext->mRequest; if($this->mObject->isNew()){ $this->mObject->set(uid, Legacy_Utils::getUid()); $this->mObject->set(category_id, $req- >getRequest(category_id)); }}
  • 6. 管理者のみ投稿可能投稿・削除は管理者(かサイト運営者が設定したグループ)のみが操作できるtemplates/mynews_topic_list.html<{if $xoops_isadmin}><ul class="hmenu"> <li><a href="<{xoops_cooluri dirname=$dirname dataname=$dataname action=edit}>"><{$smarty.const._MD_MYNEWS_LANG_ADD_A_NEW_TOPIC}></a></li ></ul><{/if}>
  • 7. テンプレートの編集一覧および詳細画面での日時は「ニュース日時」が入っていれば「ニュース日時」、な ければ「投稿日時」を使う。ニュース日時は初期値を0にするclass/handler/topic.class.php$this->initVar(newsdate, XOBJ_DTYPE_INT, 0, false);テンプレートで表示する値を場合分けする(class/handler/news.class.php で showDate みたいなメソッドを追加する方法もあり)templates/mynews_topic_list.htmltemplates/mynews_topic_view.html<{if $obj->getShow(newsdate)}> <{$obj->getShow(newsdate)|xoops_formattimestamp:m}><{else}> <{$obj->getShow(posttime)|xoops_formattimestamp:m}><{/if}>
  • 8. 表示期間の設定「ニュース日時」が設定されている場合、「ニュース日時」になるまではそのニュースを 表示しない。ただし、管理者にのみは表示する。actions/TopicListAction.class.phppublic function getDefaultView(){ ... $criteria=$this->mFilter->getCriteria(); if($this->mRoot->mContext->mUser->isInRole(Site.Owner)===false){ $criteria->add(new Criteria(newsdate, time(), <)); } ・・・}actions/TopicViewAction.class.php