- ・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 )";
//-------------------------------ここまで
ので、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'];
}