我不確定為什麼這個 plugin 在別的網站上頭是可以運作的, 因為裡頭在使用 Gallery API 時, 參數似乎不怎麼正確, 且傳回值在沒有錯誤時是個 null 而不是一個 object, 所以接著用來檢查的動作就會有問題 (也許是版本不同的關係, 不過我看過 2.0.2 與 2.1 的 source code, 都不應該這樣子寫.
所以, 簡單改了一下:
- 代碼: 選擇全部
diff -Nur gallery.orig/class/gallery/galleryhelper.class.php gallery/class/gallery/galleryhelper.class.php
--- gallery.orig/class/gallery/galleryhelper.class.php 2005-05-17 13:26:12.000000000 +0800
+++ gallery/class/gallery/galleryhelper.class.php 2006-02-16 15:50:29.501266842 +0800
@@ -60,11 +60,12 @@
// Set up the gallery call
$ret = GalleryEmbed::init( array( 'embedUri' => $this->_embedUri,
- 'embedPath' => $this->_embedPath,
- 'relativeG2Path' => $this->_relativePath,
+ 'g2Uri' => $this->_relativePath,
+ 'loginRedirect' => '/index.php',
'activeUserId' => '' ) );
// Return error details if there is a problem
- if ($ret->isError()) {
+ if ($ret != null) {
$this->_error = $ret->getAsHtml();
return;
}
@@ -94,7 +95,7 @@
$ret = GalleryEmbed::done();
// Check for errors
- if ($ret->isError()) {
+ if ($ret != null) {
return $ret->getAsHtml();
}
@@ -121,12 +122,13 @@
$ret = GalleryEmbed::init( array( 'embedUri' => $this->_embedUri,
- 'embedPath' => $this->_embedPath,
- 'relativeG2Path' => $this->_relativePath,
+ 'g2Uri' => $this->_relativePath,
+ 'loginRedirect' => '/index.php',
'activeUserId' => '',
'fullInit' => true) );
// Check for errors
- if ($ret->isError()) {
+ if ($ret != null) {
return $ret->getAsHtml();
}
@@ -141,7 +143,7 @@
}
// Check for errors
- if ($ret->isError()) {
+ if ($ret != null) {
return $ret->getAsHtml();
}
@@ -149,7 +151,7 @@
$ret = GalleryEmbed::done();
// Check for errors
- if ($ret->isError()) {
+ if ($ret != null) {
return $ret->getAsHtml();
}
這個 patch 可以到這兒抓: http://www.teatime.com.tw/~tommy/mypatc ... lery.patch
經過這個修正後, Gallery 應該可以在 LifeType 中正常使用了.
有關這個 plugin 的說明並不多, 有些要注意的地方如下:
* Gallery 部份
在網址改寫的部份, 其中 "限制熱鏈接項目" 這個項目不可以使用. 另外 "顯示項目" 這個也最好不要用 (用了之後, 有個壞處是當你要用 specificItem 設定來顯示某張圖片時, 很難由原本的 Gallery 來查出到底 itemId 是什麼), 如果要使用這個功能, 後面對於 LifeType 的部份 rewrite 模組的設定也要加上這項才可以.
* LifeType 部份
Absolute path: 設定你的系統上頭, 安裝 Gallery2 的 embed.php 的完整路徑. 以我的系統而言, 就是 /usr/share/gallery2/embed.php
Embed uri: 你的 LifeType 使用 Gallery 時, 應該用的 index.php 連結與參數. 以我的系統而言, 就是 blog.teatiem.com.tw/index.php?op=gallery&blogId=1 (如果是同一個 hostname, 則可以省略 hostname)
Embed path: 弄不清楚做什麼用的, 實際上好像也沒用到這個參數了, 就打個 / 上去吧. 程式裡頭也沒用到這個參數了.
Relative path: 就是你的 Gallery 的 main.php 所在的路徑. 以我的系統來說, 就是 gallery.teatime.com.tw/main.php (如果是同一個 hostname, 則可以省略 hostname, 用相對路徑表示)
如果你在 Gallery 有啟用 "顯示項目" 的網址改寫, 在 Gallery 的 .htaccess 會有下列的設定:
- 代碼: 選擇全部
RewriteCond %{THE_REQUEST} /v/([^?]+)(?.| .)
RewriteCond %{REQUEST_FILENAME} !/main.php$
RewriteRule . /main.php?g2_view=core.ShowItem&g2_path=%1 [QSA,L]
這時在 LifeType 的 .htaccess 就要有相對應的設定:
- 代碼: 選擇全部
RewriteCond %{THE_REQUEST} /v/([^?]+)(?.| .)
RewriteCond %{REQUEST_FILENAME} !/index.php$
RewriteRule . index.php?op=gallery&blogId=1&g2_view=core.ShowItem&g2_path=%1 [QSA,L]
經過這樣的修正與設定後, 就可以順利將 LifeType 與 Gallery2 整合在一起了
要看運作結果可以參考我的部落格: http://blog.teatime.com.tw/1