コンテナ内の記事数の取得方法がわかりません

プログラム(機能)関連の開発の話題
返信する
puupuu
メンバー
メンバー
記事: 25
登録日時: 2012年1月19日(木) 20:03

コンテナ内の記事数の取得方法がわかりません

投稿記事 by puupuu »

dittoで、記事の横のサイドバーに、月別アーカイブのリストを作っています。

月別アーカイブ
・2011年12月
・2012年1月

リソースは構成は

ブログ記事(60)
 2012年12月
  ├記事1
  ├記事2
  └記事3
 2012年1月
  ├記事1
  ├記事2
  └記事3

と、月別コンテナの中に記事を格納していて、月別コンテナのタイトルのみをdittoで呼び出しています。
サイドバー部分のコードです。

コード: 全て選択

<h2>月別アーカイブ</h2>
<ul>
[!Ditto?
&parents='60'
&depth='1'
&tpl='sidebar'
&sortBy='pub_date'
!]
</ul> 
tpl='sidebar' のコードです。

コード: 全て選択

<li><a href="[~[+id+]~]">[+longtitle+]</a></li>
今後、以下のように、月別アーカイブに記事の総数を表示させたいのですが方法がわかりません。
・2011年12月(3)
・2012年1月(3)

やりたいのは、コンテナ内の公開済みの記事数の取得です。
tpl='sidebar'チャンクに取得するためのコードが必要でしょうか?
良い方法があればアドバイスを宜しくお願いします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: コンテナ内の記事数の取得方法がわかりません

投稿記事 by yama »

スニペットかPHxのモディファイアを作る必要がありますが、目先を変えて
[[Wayfinder?
&showSubDocCount=1
&startId=60
&level=1
&textOfLinks=longtitle
&sortBy=pub_date
&rowTpl=`@CODE:<li><a href="[~[+wf.link+]~]">[+wf.linktext+]</a>([+wf.subitemcount+])</li>`
]]
こんな感じでどうでしょう
MODXのバージョンが古い場合はrowTplの部分はチャンクに移す必要があります
puupuu
メンバー
メンバー
記事: 25
登録日時: 2012年1月19日(木) 20:03

Re: コンテナ内の記事数の取得方法がわかりません

投稿記事 by puupuu »

yama様

コメントありがとうございます。
Wayfinder、試してみました。
Dittoと似ているので使いやすいですね。

ところで、関連してもう一点質問があるのですが、

トップページのアーカイブ2011年12月に
ブログ記事の2012年12月と、ニュース記事の2012年12月などの別階層のフォルダを
Dittoで、まとめてアーカイブ表示させているのですが、
こういった場合は、Wayfinderでは記事の総数取得は難しいでしょうか?
ブログ記事2012年12月(2)とニュース記事2012年12月(3)を足したものを
トップページ更新履歴2011年12月(5)として表示させたいのですが、
二つのフォルダ持つ記事数を足して別のページにそれを表示させるやりかたが
思いつきません(そもそもの作りがよくない気もしています)

トップページ更新履歴
 アーカイブ(ブログ記事とニュース記事をまとめたもの)
 ・2011年12月(5)
  ├記事1
  ├記事2
  ├記事3
  ├記事4
  └記事5

ブログ記事
 2012年12月(2)
  ├記事1
  ├記事2

ニュース記事
 2012年12月(3)
  ├記事3
  ├記事4
  └記事5
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: コンテナ内の記事数の取得方法がわかりません

投稿記事 by yama »

puupuu さんが書きました: トップページのアーカイブ2011年12月に
ブログ記事の2012年12月と、ニュース記事の2012年12月などの別階層のフォルダを
Dittoで、まとめてアーカイブ表示させているのですが、
今は2月ですよね。1月・12月・11月・・・というふうに、自動的に数カ月ぶんのロジックを組む感じでしょうか。
そのへんの組み方でもちょっと変わってきます。
どちらにしても、基本的にはDittoで(Wayfinderは複数の親リソースを処理対象にできない)、補助スニペット(またはPHxモディファイア)を作るという方向性で実装する感じになると思います。
$modx->getDocumentChildren()という関数を使いますが、数行程度で収まると思います。
返信する