maomaode
|
|
« 於: 一月 04, 2006, 09:20:27 上午 » |
|
Hi,
我问一个问题, 目前外挂在默认方式下都是”未启用“, 我在想是否有选项, 或者通过编写代码使得默认方式变为“启用” 也就是说, 在外挂安装上后, 这个外挂就处于“启用”状态呢?
|
|
|
已記錄
|
|
|
|
lss
|
|
« 回覆文章 #1 於: 一月 04, 2006, 09:29:41 上午 » |
|
hi maomaode:
很多人問過了,請等 1.1 版,或是等不及的話就自己動手吧!
你可以參考 api 文件裡的 bloginfo 類別。我沒記錯的話,外掛的屬性都是存在 bloginfo 裡面的。
lss
|
|
|
已記錄
|
|
|
|
maomaode
|
|
« 回覆文章 #2 於: 一月 04, 2006, 09:36:18 下午 » |
|
Hi lss,
仅修改bloginfo就ok吗? bloginfo好像只是一个dataobject, 可以取出blogsetting, 是把外挂的enable属性设置为true加入blogsetting,是这样吗?可不可以再给点提示,我想实验一下, 谢谢!
|
|
|
已記錄
|
|
|
|
lss
|
|
« 回覆文章 #3 於: 一月 04, 2006, 10:15:52 下午 » |
|
hi maomaode: 抱歉,我果然記錯了 不是使用 bloginfo ,而是使用 blogSettings 類別,用他的 setValue 方法來將預設的 plugin_xxx_enabled 屬性設為 true 。 以 authimage 為例,修改 pluginauthimage.class.php 裡面的 register() 方法如下: function register() { $config =& Config::getConfig(); $this->cacheFolder = $config->getValue('temp_folder'); $this->cacheFolder = $this->cacheFolder.'/authimage/'.$this->blogInfo->getId(); if( !File::exists( $this->cacheFolder )) { File::createDir( $this->cacheFolder ); } $blogSettings = $this->blogInfo->getSettings(); $this->pluginEnabled = $blogSettings->getValue( "plugin_authimage_enabled" ); if ( empty($this->pluginEnabled) ) { $blogSettings->setValue( "plugin_authimage_enabled", true ); $this->pluginEnabled = $blogSettings->getValue( "plugin_authimage_enabled" ); } $this->length = $blogSettings->getValue( "plugin_authimage_length" ); $this->key = $blogSettings->getValue( "plugin_authimage_key" ); $this->expiredTime = $blogSettings->getValue( "plugin_authimage_expiredtime" ); if ($this->expiredTime == "") $this->expiredTime = 3600; $this->default = $blogSettings->getValue( "plugin_authimage_default" ); }
如入紅色的部份即可。這三行是先判斷 blogSettings 裡面是否已經有儲存 plugin_authimage_enabled 的值,如果沒有,那表示從未設定過,就自動加入預設值為 true ,並重新取得設定後的值。做這樣的修改,只要是還沒儲存過這個 plugin 設定值的 blog 應該都適用。這些修改理論上在防垃圾干擾的外掛應該都可以用吧!請你試試看囉!記得來分享成果哦! lss
|
|
|
已記錄
|
|
|
|
lss
|
|
« 回覆文章 #4 於: 一月 04, 2006, 10:50:54 下午 » |
|
寫了一篇比較詳細一點點的說明,請看看「 如何預設啟用外掛程式?」 lss
|
|
|
已記錄
|
|
|
|
markwu
|
|
« 回覆文章 #5 於: 一月 05, 2006, 12:00:05 上午 » |
|
其實 最好的方式是像 jupload 或是 template editor 讓 adminstrator 來決定要不要開放。 上面那句話有語病,應該是『我喜歡的方式』。 Mark
|
|
|
已記錄
|
|
|
|
|
maomaode
|
|
« 回覆文章 #7 於: 一月 05, 2006, 12:15:38 下午 » |
|
mark说的对, 应该由管理员来控制会比较好一点, 我已经阅读了lss的文章, 写的蛮详细的,晚上我会来实验一下。谢谢lss lss的做法是修改某一个插件的代码来达到“默认启用” 最好是能在“外挂列表”上可以钩选某一个外挂是否“默认启用”, 不过这个改动会蛮大, 我先考虑考虑, 再动手去做 any other suggestions/comments?
|
|
|
已記錄
|
|
|
|
markwu
|
|
« 回覆文章 #8 於: 一月 05, 2006, 12:22:31 下午 » |
|
會改蠻多的!但是如果你只是自己要用,那麼hard coding 其實救 okay 了。 以後的升級,就要自己照顧自己了 Mark
|
|
|
已記錄
|
|
|
|
Psyche
新手見習
文章: 4
|
|
« 回覆文章 #9 於: 三月 16, 2006, 04:22:42 下午 » |
|
前教各位前輩 有關迴響驗證的外掛,大致上可以運作,只是有很多模版裡並沒有有關 $authimage 的定義,所以是否必須一個一個模版裡去修改 commentform.template 加入以下程式碼!還是說 有其他的方法嗎? Install: Add the following code to commentform.template: {if $authimage->isEnabled()} <div><label for="authImage">AuthImage</label><input type="text" name="authImage" id="authImage" value="" /> {$authimage->show()}</div> {/if}
|
|
|
已記錄
|
|
|
|
bibicall
|
|
« 回覆文章 #10 於: 三月 16, 2006, 06:11:56 下午 » |
|
前教各位前輩 有關迴響驗證的外掛,大致上可以運作,只是有很多模版裡並沒有有關 $authimage 的定義,所以是否必須一個一個模版裡去修改 commentform.template 加入以下程式碼!還是說 有其他的方法嗎?
沒有別的辦法,因為每個模版都必須要有那一段程式碼 所以你必須一個個的加上去
|
|
|
已記錄
|
我的虛擬主機基本資料如下 Operating system: Linux Apache version: 1.3.37 PHP version: 4.4.4 MySQL version: 4.1.21-standard
|
|
|
Psyche
新手見習
文章: 4
|
|
« 回覆文章 #11 於: 三月 17, 2006, 10:55:47 上午 » |
|
沒有別的辦法,因為每個模版都必須要有那一段程式碼 所以你必須一個個的加上去 謝謝 bibicall 前輩的回應。 另外,小弟已經在 plugins/authimage/pluginauthimage.class.php 的 function register() 修改為: function register() { $config =& Config::getConfig(); $this->cacheFolder = $config->getValue('temp_folder'); $this->cacheFolder = $this->cacheFolder.'/authimage/'.$this->blogInfo->getId(); if( !File::exists( $this->cacheFolder )) { File::createDir( $this->cacheFolder ); } $blogSettings = $this->blogInfo->getSettings();
// 由 $blogSettings 物件裡取出 plugin_authimage_enabled 的設定值 $this->pluginEnabled = $blogSettings->getValue( "plugin_authimage_enabled" );
// 如果取出的設定值不存在,代表還沒有設定過, // 將設定值設為 true , // 並重新取得設定值。 if ( empty($this->pluginEnabled) ) { $blogSettings->setValue( "plugin_authimage_enabled", true ); $this->pluginEnabled = $blogSettings->getValue( "plugin_authimage_enabled" ); } $this->length = $blogSettings->getValue( "plugin_authimage_length" ); $this->key = $blogSettings->getValue( "plugin_authimage_key" ); $this->expiredTime = $blogSettings->getValue( "plugin_authimage_expiredtime" ); if ($this->expiredTime == "") $this->expiredTime = 3600; $this->default = $blogSettings->getValue( "plugin_authimage_default" ); } 照理說應該已經「預設啟用」,可是如果使用者未經啟用,驗證碼的效果還是無法啟用。還是需要使用者自行設定啟用,驗證碼效果才能運作。 請問,我有疏漏什麼步驟嗎?
|
|
|
已記錄
|
|
|
|
php
新手見習
文章: 23
|
|
« 回覆文章 #12 於: 四月 01, 2006, 11:59:18 上午 » |
|
确实是这样的。我分析了一下,照这种方法修改后,前台页面在进行评论(回复)的区域是默认会显示出Authimage区域的,但自动生成的图片不显示出来。仔细查看数据库中有关bloginfo的参数,却发现里面根本没有有关Authimage的四个参数,所以这个图片是显示不出来的。而且,即使是新注册用户也是这样的。只有用户在后台启用这个插件后,这些参数才会写入至bloginfo,那个图片才会显示出来。所以,前面所说的默认启用还是不能成功实现。 我想,如果能在新用户注册时,自动在新用户的bloginfo中加入有关Authimage参数,这样应该就行的吧。 还没想好具体实施方法。请教各位大侠。
|
|
|
已記錄
|
|
|
|
php
新手見習
文章: 23
|
|
« 回覆文章 #13 於: 四月 01, 2006, 05:16:36 下午 » |
|
我已经试验成功,将程序中相关各项参数都赋于一个默认的值就行了。这样,不管该用户是否在控制中心设置是否启用插件,都能成功显示验证码了。 有一个问题,就是用户在控制中心是不能自己修改这个插件的参数了。
|
|
|
已記錄
|
|
|
|
maomaode
|
|
« 回覆文章 #14 於: 四月 17, 2006, 10:39:31 下午 » |
|
To php and Psyche : lss 的回复中有误, 你还需要自己加上 $this->blogInfo->setSettings( $blogSettings ); $blogs = new Blogs(); $blogs->updateBlog( $this->blogInfo->getId(), $this->blogInfo );
这行代码的意思是将blogsettings写回到blogger的设置里, 并写回到数据库里 所以完整的代码应该是 if ( empty($this->pluginEnabled) ) { $blogSettings->setValue( "plugin_authimage_enabled", true ); $this->blogInfo->setSettings( $blogSettings ); $blogs = new Blogs(); $blogs->updateBlog( $this->blogInfo->getId(), $this->blogInfo ); $this->pluginEnabled = $blogSettings->getValue( "plugin_authimage_enabled" ); }
即使这样, 你也没有成功, 应该plugin的其他设置还没写到数据库里面, 想办法取的默认值就可以. Lss, 您可以更新一下你的 http://blog.nlhs.tyc.edu.tw/post/2/97吗? thx
|
|
« 最後編輯時間: 四月 17, 2006, 11:17:23 下午 由 maomaode »
|
已記錄
|
|
|
|
|