LifeType 中文開發論壇

開發 => 外掛程式 => 主題作者是: oc 於 六月 07, 2006, 11:14:39 下午



主題: 置頂公告外掛可以「加碼繁殖」嗎?
作者: oc六月 07, 2006, 11:14:39 下午
親愛的lss:

我用了你的置頂公告外掛,功能真是棒得沒話說,但是我有一點貪心,我還要更多,我希望有置頂,有公告,有FAQ,有自定區塊(像resnick的用法 (http://forum.lifetype.org.tw/index.php?topic=2212.0)),有……,有可能嗎?我確實有打開你的原始碼瞧一瞧,不過實在看不出所以然,只好上來直接問。

另外,如果要把同站甲部落格的置頂文章顯示到乙部落格的模版上,可行嗎?


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss六月 08, 2006, 07:42:59 上午
親愛的老貓:
親愛的lss:

我用了你的置頂公告外掛,功能真是棒得沒話說,但是我有一點貪心,我還要更多,我希望有置頂,有公告,有FAQ,有自定區塊(像resnick的用法 (http://forum.lifetype.org.tw/index.php?topic=2212.0)),有……,有可能嗎?我確實有打開你的原始碼瞧一瞧,不過實在看不出所以然,只好上來直接問。
這個彈性我在設計之初就想到了,你的要求在手動的方式下完全可以做到。  :-)

1.請先依你的需要建立「置頂、公告、faq、自訂區塊…」等文章分類。

2.在管理界面可以指定「置項、公告」兩個分類。而這兩個分類的文章可以用
程式碼:
$stickyposts->getArticles('sticky')
或是
$stickyposts->getArticles('announce')
來取得。

3.其他的文章分類,請先找出他們的 CategoryId ,例如 FAQ 的 CategoryId 是 21 ,則可以用下面的方法來取得 FAQ 的文章:
程式碼:
$stickyposts->getArticles( 21 )

4.若需要取得文章分類的物件供模版使用,同樣以 3 的 FAQ 為例,可以用:
程式碼:
$stickyposts->getCategory( 21 )
來取得。

這樣,應該很夠您應用了吧  :-)

另外,如果要把同站甲部落格的置頂文章顯示到乙部落格的模版上,可行嗎?
這部份光靠公告置頂外掛是做不到的  :-( 因為 plugin 的架構,只能提供自己 blog 的資源取用。

這要另外寫程式來做了。記得最近才有人在論壇跟 mark 問過,一下子找不到  :-P

lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss六月 08, 2006, 09:49:43 上午
親愛的老貓:

以我 blog 裡的網管實驗室分類(CategoryId=9) 為例,我寫了個範例如下(當然,是配合目前使用的 green_community 模版)
引用
{if ($stickyposts)}
{if ($stickyposts->isEnabled())}
{* begin of FAQ block*}

{assign var=FAQCat value=$stickyposts->getCategory(9)}
{assign var=FAQPosts value=$stickyposts->getArticles(9)}
<h5>{$FAQCat->getName()}</h5>
<ul class="nav">
{foreach from=$FAQPosts item=FAQpost}
<li><a title="{$FAQpost->getIntroText()|strip_tags|truncate:100:"..."}" href="{$url->templatePage("archives")$url->postPermalink($FAQpost)}">{$FAQpost->getTopic()}</a></li>
{/foreach}
</ul>
{* end of FAQ block *}

{* other block here *}
{/if}
{/if}

你應該是不需要這個範例啦,不過可以給需要的人參考看看  :-)

lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: oc六月 08, 2006, 03:51:52 下午
lss,感謝感謝,不過你可太瞧得起我啦,要不是你補了一個實際的模版程式碼,不然我可傷腦筋了。我在自己的模版寫法如下(基本上只有CSS參數略有不同):

程式碼:
{if ($stickyposts)}
{if ($stickyposts->isEnabled())}
{assign var=FAQCat value=$stickyposts->getCategory(6)}
{assign var=FAQPosts value=$stickyposts->getArticles(6)}
<div  class="Sidetitle">{$FAQCat->getName()}</div>
<p class="list">
{foreach from=$FAQPosts item=FAQpost}
<a href="{$url->postPermalink($FAQpost)}">
{$FAQpost->getTopic()}</a></p><p class="list">
{/foreach}</p>
{/if}
{/if}

唯一的差別是第八行:

$url->postPermalink($FAQpost)

前面你的寫法應該是漏了FAQ三個字母。補上以後就成功了。

順便回報一個小bug。在後台「置頂及公告文章設定」那裡,「顯示公告文章數目」的值,無法變更,只能維持預設的五篇(但「顯示置頂文章數目」倒是可以更改)。

最後 :-P,這個新增的FAQ區塊,他的顯示文章數目會如何?跟著置頂篇數的數字走嗎?……寫到這裡,乾脆直接測試。結果是FAQ寫了多少篇就會顯示多少篇,沒有限度。這個倒還好,反正不會寫太多FAQ。 ;-)


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss六月 08, 2006, 06:56:18 下午
...
唯一的差別是第八行:

$url->postPermalink($FAQpost)

前面你的寫法應該是漏了FAQ三個字母。補上以後就成功了。
:-) 筆誤、筆誤,複製貼上後,沒仔細檢查  :-P

順便回報一個小bug。在後台「置頂及公告文章設定」那裡,「顯示公告文章數目」的值,無法變更,只能維持預設的五篇(但「顯示置頂文章數目」倒是可以更改)。

最後 :-P,這個新增的FAQ區塊,他的顯示文章數目會如何?跟著置頂篇數的數字走嗎?……寫到這裡,乾脆直接測試。結果是FAQ寫了多少篇就會顯示多少篇,沒有限度。這個倒還好,反正不會寫太多FAQ。 ;-)
這個 plugin 已經寫了好久了,我再看一下,謝謝啦!  :-)

lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss六月 08, 2006, 07:19:50 下午
親愛的老貓:

關於使用 CategoryId 自訂置頂文章時,會顯示出全部文章的部份。沒錯,當初寫外掛時,就是這樣設計的  :-)

如果要改成外掛裡的設定值的話,你可以修改 pluginstickyposts.class.php 裡面,第 70 行改成如下:
程式碼:
$maxpost = $this->maxAnnounces;
就可以了。

對於這方面的設定,有什麼建議可以比較貼近使用者的感覺嗎?  :-)

lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: oc六月 09, 2006, 04:59:50 上午
沒錯,當初寫外掛時,就是這樣設計的  :-)
了解。
對於這方面的設定,有什麼建議可以比較貼近使用者的感覺嗎?  :-)
這個我倒覺得還好,因為這比較是架站者的功能,純部落格作者應該是不用煩惱這個。個人感覺。



主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: markwu六月 09, 2006, 10:41:24 上午
HI 老貓:

你把 pluginstickyposts.class.php  中的 61-79 行修改成這樣:

        function getArticles( $catId, $maxPostNo = 5 )
        {
if ( 'sticky' == $catId ){
$catId = $this->stickyCategoryId;
$maxpost = $this->maxStickys;
} else if ( 'announce' == $catId ){
$catId = $this->announceCategoryId;
$maxpost = $this->maxAnnounces;
} else if ( is_numeric( $catId ) ){
$maxpost = $maxPostNo;
}else return null;

$blogId = $this->blogInfo->getId();

$articles = new Articles();
$ret_articles = $articles->getBlogArticles( $blogId, -1, $maxpost, $catId, POST_STATUS_PUBLISHED );

return $ret_articles;
        }

那麼,你就可以用 getArticles('6', '10'); 來控制,如何?這代表第六個分類, 10 篇文章。 :-)

Mark


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss六月 09, 2006, 01:12:44 下午
那麼,你就可以用 getArticles('6', '10'); 來控制,如何?這代表第六個分類, 10 篇文章。 :-)
必需使用 getArticle(6,10) 才行,我記得使用字串型態會出事。
  :-$
lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: markwu六月 09, 2006, 01:23:55 下午
ㄟ 我記得是不用字串型態才會出事耶!

Smarty  好像是超過兩個參數(含兩個參數),就必須用字串型態。

你可以試試看嗎?

Mark


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss六月 09, 2006, 01:35:08 下午
ㄟ 我記得是不用字串型態才會出事耶!

Smarty  好像是超過兩個參數(含兩個參數),就必須用字串型態。

你可以試試看嗎?

Mark
你是右邊  :-$

lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: markwu六月 09, 2006, 01:38:19 下午
你是右邊  :-$

這是什麼意思?新的火星文嗎?  :-$

Mark


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss六月 09, 2006, 01:40:24 下午
you are right.

 :-D

lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: markwu六月 09, 2006, 02:07:57 下午
哈哈!學到一招! :-D

Mark


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: oc六月 09, 2006, 06:14:10 下午
哈哈,我昨天才在想,不知能不能像「最近迴響」外掛那樣,
直接在模版碼中,就可以修改顯示篇數。

原來這些都是Mark的祕技啊。


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lisamaus六月 27, 2006, 10:15:39 上午
我是個新手, 在這方面有點問題想請教

因為在外掛configuration的後台, 怎麼樣也只有置頂和公告可以設定. 不管我設成哪個分類, 最多同時我都只能顯示兩個element. 不知道有沒有可能做出後台的後台來設定有幾個區塊可以設定, 而成為真正的自定區塊.

我想可能性不是沒有, 只是整個plugin的架構可能都要變動了. 當我隨便說說就好! :-$


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss六月 27, 2006, 11:44:12 上午
hi lisamaus:

你要的功能有,但是不是在管理界面處理。置頂外掛只能在後台設定「置頂」和「公告」兩個分類,這是寫死的。但是你可以直接在模版裡面使用文章分類Id來替代 'sticky' 和 'announce' 就可以自訂任意多個區塊了。

你把這個討論串再仔細看一遍,老貓想要的跟你一模一樣。

當然,能夠全部在管理界面搞定,那是最好的,你可以自己試試改看看囉  :-P

lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lisamaus六月 28, 2006, 04:05:16 下午
謝謝lss, 我會在仔細爬文. 前天看這篇的時候已經是我這裡凌晨五六點, 有點頭昏眼花了!!


主題: 置頂公告外掛小bug修正
作者: resnick七月 05, 2006, 05:00:10 下午
順便回報一個小bug。在後台「置頂及公告文章設定」那裡,「顯示公告文章數目」的值,無法變更,只能維持預設的五篇(但「顯示置頂文章數目」倒是可以更改)。

這個問題我剛剛查了一下,修正好了。

請打開 pluginstickypostsconfigview.class

引用
$maxAnnounces = $blogSettings->getValue( "plugin_stickyposts_maxAnnounces" );
if ($maxStickys == "") $maxStickys = 5;
if ($maxAnnounce == "") $maxAnnounces = 5;

修正紅色的部分如下:


引用
$maxAnnounces = $blogSettings->getValue( "plugin_stickyposts_maxannounces" );
if ($maxStickys == "") $maxStickys = 5;
if ($maxAnnounces == "") $maxAnnounces = 5;

來回看了程式碼很多次,想不通值怎麼都傳不到,最後一個一個check大小寫,才發現是這個小問題。一開始也沒注意到少了「s」,漏掉那個「s」,就肯定會把數字一直維持在5了。
         


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss七月 06, 2006, 08:36:42 下午
 :-$

竟然.............

 orz

謝謝 resnick

lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lisamaus七月 07, 2006, 01:51:10 上午
我剛才把variable name更正過來, 但是還是沒有解決這個問題 :-(
我想我不太了解plugin後面cache的問題
我已經把外掛拿掉, 重新裝過. 而且之前還把tmp裡的內容清乾淨了.

為什麼當我重新安裝外掛的時候, 上面還是原先的值? 請問我哪裡沒有注意到?
麻煩指點迷津, 謝謝!!


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: markwu七月 08, 2006, 12:45:54 上午
修改後,你在到設定畫面上改一次設定值,然後按更新,這時候新的值才會被更新。 :-)

Mark


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lisamaus七月 08, 2006, 01:12:32 上午
修改後,你在到設定畫面上改一次設定值,然後按更新,這時候新的值才會被更新。 :-)

Mark

就是因為改過設定值, 而且按過更新, 沒反應才試試看重新安裝plugin的.

結果沒想到, 重新安裝過後, 出現的畫面上面已經打了勾勾說我啟動了plugin, 而且原本上面其中(應該是置頂的)可以改動也被我改動的那個值, 並沒有變成初始值, 而是保持在我改動後的那個值.

所以又重新安裝了一次plugin並且把tmp裡的內容清光. 結果不變.

因此在想, 是不是我哪裡沒考慮到.

Mark! 謝謝你的不厭其煩. 因為我自己都覺得我自己挺煩人的


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lss七月 08, 2006, 10:35:47 上午
就是因為改過設定值, 而且按過更新, 沒反應才試試看重新安裝plugin的.

結果沒想到, 重新安裝過後, 出現的畫面上面已經打了勾勾說我啟動了plugin, 而且原本上面其中(應該是置頂的)可以改動也被我改動的那個值, 並沒有變成初始值, 而是保持在我改動後的那個值.

所以又重新安裝了一次plugin並且把tmp裡的內容清光. 結果不變.

因此在想, 是不是我哪裡沒考慮到.

Mark! 謝謝你的不厭其煩. 因為我自己都覺得我自己挺煩人的
plugin 所儲存的設定值是存在資料庫裡的,即使你把 plugin 移除掉,那些設定值仍然還在資料庫裡,所以,你再裝一次 plugin 時,plugin 會去找到你之前的設定值。這是正常現象。

lss


主題: Re: 置頂公告外掛可以「加碼繁殖」嗎?
作者: lisamaus七月 20, 2006, 05:31:38 下午
在有空餘時間下, 又把我之前沒解決的max問題看了一遍, 原來是我眼睛脫窗. 人家應該要改兩個地方, 我自動忽略右上方的紅字, 當然還是有問題.

我現在時沒事加無聊的回報了一下自己的白痴, 不要理我