歡迎光臨, 訪客. 請先 登入註冊一個帳號.
十一月 28, 2024, 07:12:10 下午
19595 文章 在 3865 主題 由 4579 會員
最新註冊會員: aa123aa1
LifeType 中文開發論壇  |  開發  |  外掛程式  |  默认启用外挂? « 上篇主題 下篇主題 »
頁: [1] 2
作者 主題: 默认启用外挂?  (閱讀 50453 次)
maomaode
一般會員
***
文章: 115


檢視個人資料
« 於: 一月 04, 2006, 09:20:27 上午 »

Hi,

我问一个问题, 目前外挂在默认方式下都是”未启用“, 我在想是否有选项, 或者通过编写代码使得默认方式变为“启用”
也就是说, 在外挂安装上后, 这个外挂就处于“启用”状态呢?
已記錄

我的blog:
               http://maomaode.bokeland.com
Blog搬家/同步
               http://banjia.bokeland.com
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #1 於: 一月 04, 2006, 09:29:41 上午 »

hi maomaode:

很多人問過了,請等 1.1 版,或是等不及的話就自己動手吧!

你可以參考 api 文件裡的 bloginfo 類別。我沒記錯的話,外掛的屬性都是存在 bloginfo 裡面的。

lss
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
maomaode
一般會員
***
文章: 115


檢視個人資料
« 回覆文章 #2 於: 一月 04, 2006, 09:36:18 下午 »

Hi lss,

仅修改bloginfo就ok吗? bloginfo好像只是一个dataobject, 可以取出blogsetting, 是把外挂的enable属性设置为true加入blogsetting,是这样吗?可不可以再给点提示,我想实验一下, 谢谢!
已記錄

我的blog:
               http://maomaode.bokeland.com
Blog搬家/同步
               http://banjia.bokeland.com
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #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
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #4 於: 一月 04, 2006, 10:50:54 下午 »

寫了一篇比較詳細一點點的說明,請看看「 如何預設啟用外掛程式?

lss
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #5 於: 一月 05, 2006, 12:00:05 上午 »

其實最好的方式是像 jupload 或是 template editor 讓 adminstrator 來決定要不要開放。 微笑

上面那句話有語病,應該是『我喜歡的方式』。

Mark
已記錄

markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #6 於: 一月 05, 2006, 11:17:21 上午 »

如果有興趣,可以看看延伸的討論:

http://forums.lifetype.net/viewtopic.php?t=2005

這是用 BlogInfo 來修改,事實上是 BlogInfo 裡面的 BlogSetting。

他可以在註冊的時候就啟動 plugin,但是『既往不咎,展望未來』。

就是只對新 user 有用。

Mark
已記錄

maomaode
一般會員
***
文章: 115


檢視個人資料
« 回覆文章 #7 於: 一月 05, 2006, 12:15:38 下午 »

mark说的对, 应该由管理员来控制会比较好一点,
我已经阅读了lss的文章, 写的蛮详细的,晚上我会来实验一下。谢谢lss
lss的做法是修改某一个插件的代码来达到“默认启用”
最好是能在“外挂列表”上可以钩选某一个外挂是否“默认启用”, 不过这个改动会蛮大, 我先考虑考虑, 再动手去做
any other suggestions/comments?
已記錄

我的blog:
               http://maomaode.bokeland.com
Blog搬家/同步
               http://banjia.bokeland.com
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #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="" />&nbsp;{$authimage->show()}</div>
{/if}
已記錄
bibicall
LifeType 中文發展團隊
超級會員
*****
文章: 640


我是豬老大


檢視個人資料 個人網站
« 回覆文章 #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
一般會員
***
文章: 115


檢視個人資料
« 回覆文章 #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 » 已記錄

我的blog:
               http://maomaode.bokeland.com
Blog搬家/同步
               http://banjia.bokeland.com
頁: [1] 2
LifeType 中文開發論壇  |  開發  |  外掛程式  |  默认启用外挂? « 上篇主題 下篇主題 »
    前往: