evogallery、display=`galleries`時の挙動不具合と対処についてアドバイスが欲しいです。  【解決済み】

質問全般・改善要望
返信する
noka
メンバー
メンバー
記事: 94
登録日時: 2013年6月19日(水) 10:02

evogallery、display=`galleries`時の挙動不具合と対処についてアドバイスが欲しいです。

投稿記事 by noka »

こんにちは。はじめまして。
  • ・MODx Evolution 1.0.10J
    ・EvoGallery 1.1.0-beta1
です。

まだmodxに習熟しておりませんので見当違いかもしれませんが、EvoGalleryのスニペットについて、下記症状についての対応について妥当かどうかアドバイス等いただきたく。
------------------------
EvoGallery の &display パラメータを`galleies`にした場合、docIdで指定した直下のドキュメントからギャラリーリスト(私の語感ではアルバムリスト)を表示してくれるわけですが、

1) &limitパラメータで指定した件数のギャラリー(アルバム)をリストアップされることが期待されるわけですが、写真が含まれない投稿もカウントされて正確なリストアップがされない
2)ドキュメントでは複数の&docIdを指定できそうな雰囲気ですが、カンマ区切りで指定してもエラーになる


ような気がします。

modxにおける作法(classをextendすべきなのかとかAPIとか)がわからないのですが、
gallery.class.inc.phpによれば、

1)については、mysqlクエリが、site_contentのみを対象にしていることが原因のように思われました。
スマートではないですがfunction renderGalleries()内に以下を追加したところ期待される動作になりました。

コード: 全て選択

		// Retrieve list of documents under the requested id
		$filter  = " WHERE published = '1' AND type = 'document' AND hidemenu <= '" . $this->config['ignoreHidden'] . "'";
		//------------------------------ここから:where句にgallerisTable内に一致するdocIdがあるかサブクエリを追加
		$filter .= " AND id = (SELECT MIN(content_id) FROM ". $modx->getFullTableName($this->galleriesTable) ." WHERE content_id = " . $modx->getFullTableName('site_content') .".id )";
		//-------------------------------ここまで

2)については、同じ関数内で複数指定時にカンマ区切り引数を配列に変換していることが原因のように思われました。
ので、explodeせずに例えば以下のようにすると大丈夫みたいでした。※&excludeDocsパラメータにも同様の問題があるようです。

コード: 全て選択

		// Hide/show docs based on configuration
		$docSelect = '';
		if ($this->config['docId'] != '*' && !empty($this->config['docId']))
		{
			if (strpos($this->config['docId'], ',') !== false)
			{
				//------------------------------ここ修正:sqlクエリなので配列に変換しない。
				$docSelect = 'parent IN ('. trim($this->config['docId']) .')'; 
			}
			else
				$docSelect = 'parent = ' . $this->config['docId'];
		}
初心者で恐縮ですが、modxは今後長く使いそうな予感がしておりますので、適切な対処等についてアドバイスいただけると幸いです。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: evogallery、display=`galleries`時の挙動不具合と対処についてアドバイスが欲しいです。

投稿記事 by yama »

EvoGalleryの該当部分のコードを見たところ、指定階層の全ドキュメントがアルバムであることを前提とした単純な仕様という感じですね。今回のサブクエリー追加でより実用的に使えると思います。

https://github.com/Mark-H/EvoGallery
最新版は上記です。デザインやjQueryまわりなども含めて全部で20ヶ所近く修正されていて、2番目の問題も、コードを見た限りでは解決されているようです。
noka
メンバー
メンバー
記事: 94
登録日時: 2013年6月19日(水) 10:02

Re: evogallery、display=`galleries`時の挙動不具合と対処についてアドバイスが欲しいです。  【解決済み】

投稿記事 by noka »

yamaさま

早速のご返答ありがとうございます。
githubに最新版があるのは知らなかったので早速チェックしてみます。
#事前に調べればよかったです、すみません。



とりいそぎ。
返信する