Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

XOOPS Cube Conference 2012 Developer Workshop 4

96,110 views

Published on

Published in: Self Improvement
  • Be the first to comment

  • Be the first to like this

XOOPS Cube Conference 2012 Developer Workshop 4

  1. 1. ニュースモジュールを 作ってみよう 2012年6月 氷川 霧霞 @kilica on Twitter http://jp.xoopsdev.com/
  2. 2. ニュースモジュールbulletin
  3. 3. どんな機能が必要?基本機能• ニュース一覧(投稿日の新しい順)• ニュース詳細• ニュース投稿(編集)• ニュース削除• フィールドは、 o id(topic_id) o タイトル(title) o カテゴリ(category_id) o 本文(content) o 投稿者(uid) o ニュース日時(newsdate) o 投稿日時(posttime)
  4. 4. どんな機能が必要?詳細• 記事のカテゴリ分類• タイトル、カテゴリ、本文は入力必須項目。id, uid, 投稿日時は自動入力。• カテゴリID付きの投稿URLをリクエストした場合、投稿画面でそのカテゴリが選択 状態になっている• 投稿・削除は管理者(かサイト運営者が設定したグループ)のみが操作できる• 一覧および詳細画面での日時は「ニュース日時」が入っていれば「ニュース日時」、 なければ「投稿日時」を使う。• 「ニュース日時」が設定されている場合、「ニュース日時」になるまではそのニュー スを表示しない。ただし、管理者にのみは表示する。
  5. 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. 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. 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. 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

×