Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

XOOPS Cube Conference 2012 Developer Workshop 4

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 8 Publicité

Plus De Contenu Connexe

Publicité

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=2 actions/TopicEditAction.class.php public 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.html templates/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.php public 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

×