LifeType 中文開發論壇

開發 => 外掛程式 => 主題作者是: lss 於 五月 16, 2005, 05:39:54 下午



主題: [plugin]置頂文章外掛程式
作者: lss五月 16, 2005, 05:39:54 下午
經過十多天的努力,非常痛苦的 pLog MVC 架構煎熬,終於把文章置頂外掛 port 到 1.0 。

這個置頂文章外掛是根據 mark 的 pluginstickyposts for 0.32 加上我先前做的貼心小改版 port 到 1.0 的。目前還算是 beta 版,因為:

   1. 語系部份,除繁體中文外,其它我還沒試過,甚至 locale_es_ES.php 只是英文版的 copy 。我那會翻譯!
   2. 我實在不擅長模版,所以 readme.txt 裡的範例模版很糟糕,我的 blog 站正使用這個醜得要命的模版測試中,希望那位仁兄提供個漂亮的模版當範例。

第一次實作 1.0 的 plugin ,不免錯誤百出,請不吝回報,以茲改進。

我已經把目前的 beta 版放到 bugs.lifetype.net 的這裡 (http://bugs.lifetype.net/view.php?id=38)了。要加入測試的人請自行下載。

Mark 說的沒錯,pLog 的 MVC 架構寫程式很方便,因為架構非常有彈性,所以像 plugin 這種外加功能很容易便可以整合進 pLog 。但是要寫的程式變多。最痛苦的是去瞭解隱藏在 pLog MVC 架構裡的物件系統。實在佩服 Oscar、Francisc、Mark 、Mistrel 以及其他開發團隊的成員,實在辛苦了。


主題: [plugin]置頂文章外掛程式
作者: james五月 16, 2005, 07:38:28 下午
真是辛苦了 ^^
不過至少你已經搞懂了plog的MCV架構了。
我可是連啥是MCV都看不懂呢 :-D

先下載來試看看囉
再次說聲謝謝!!


主題: [plugin]置頂文章外掛程式
作者: lss五月 16, 2005, 11:21:04 下午
james 你太客氣了。

我可是非常羡慕你以及諸位提供好看又好用的模版的美工高手呢!

羡慕的不得了。


主題: [plugin]置頂文章外掛程式
作者: markwu五月 17, 2005, 12:09:10 下午
引用自: james
真是辛苦了 ^^
不過至少你已經搞懂了plog的MCV架構了。
我可是連啥是MCV都看不懂呢 :-D

先下載來試看看囉
再次說聲謝謝!!


James:

Porting template 是很厲害的。呵呵!我跟 LSS 都自嘆不如阿!

Mark


主題: Re: [plugin]置頂文章外掛程式
作者: markwu五月 17, 2005, 12:10:31 下午
引用自: lss

Mark 說的沒錯,pLog 的 MVC 架構寫程式很方便,因為架構非常有彈性,所以像 plugin 這種外加功能很容易便可以整合進 pLog 。但是要寫的程式變多。最痛苦的是去瞭解隱藏在 pLog MVC 架構裡的物件系統。

Hi lss:

但是經過這一段時間,我終於瞭解之前我們公司 RD 所追求的事情。架構真的很重要,當你熟悉,其實寫起來是很暢快的。

Mark


主題: [plugin]置頂文章外掛程式
作者: lss五月 17, 2005, 12:39:36 下午
hi all:

我在 http://wiki.lifetype.org.tw/index.php/PLog_1.0/Plugins/stickyposts 把 StickyPosts Plugin 的中文說明補上了,
請享用,並請隨意將她修的更美好。 :-)


主題: 請問一下
作者: fragileness五月 17, 2005, 02:11:43 下午
這個外掛有可能做到「置頂或公告的文章只會在首頁出現」嗎?
還是說有什麼變數可以讓我檢查現在是不是「正在顯示首頁」(如果有的話,就可以寫一個 if 把顯示置頂的code包起來)?

不知道這個問題會不會很白癡...orz


主題: Re: 請問一下
作者: lss五月 17, 2005, 03:06:22 下午
引用自: fragileness
這個外掛有可能做到「置頂或公告的文章只會在首頁出現」嗎?
還是說有什麼變數可以讓我檢查現在是不是「正在顯示首頁」(如果有的話,就可以寫一個 if 把顯示置頂的code包起來)?

不知道這個問題會不會很白癡...orz

請問你使用過這個 plugin 了嗎?
我在樣版檔的範例裡(使用 blueish)只修改了 main.template 所以它只會出現在首頁沒錯。

這是要配合修改樣版使用的。


主題: Re: 請問一下
作者: fragileness五月 17, 2005, 03:15:17 下午
引用自: lss
引用自: fragileness
這個外掛有可能做到「置頂或公告的文章只會在首頁出現」嗎?
還是說有什麼變數可以讓我檢查現在是不是「正在顯示首頁」(如果有的話,就可以寫一個 if 把顯示置頂的code包起來)?

不知道這個問題會不會很白癡...orz

請問你使用過這個 plugin 了嗎?
我在樣版檔的範例裡(使用 blueish)只修改了 main.template 所以它只會出現在首頁沒錯。

這是要配合修改樣版使用的。


現在正在測試~

其實main.template並不只會影響首頁,也會影響「列出某個分類下所有文章」的頁面,至少我這邊是這樣的情況。


主題: [plugin]置頂文章外掛程式
作者: lss五月 17, 2005, 03:23:59 下午
啊!抱歉!太久沒有去點文章分類了 :-P 不只文章分類,文章彙整也會。

因為它們是共用同一個樣版檔,這可能得請教樣版高手了。

你可以以考 reic 的這篇「pLog 0.3.2 正式版釋出了 與 試用心得 (http://reic.twbbs.org/post/1/106)」裡面新功能試用心得的第二點說明,配合 $showAll 變數處理應該可以做到。

若實做出來,請與大家分享哦!


主題: [plugin]置頂文章外掛程式
作者: fragileness五月 17, 2005, 03:45:46 下午
引用自: lss
啊!抱歉!太久沒有去點文章分類了 :-P 不只文章分類,文章彙整也會。

因為它們是共用同一個樣版檔,這可能得請教樣版高手了。

你可以以考 reic 的這篇「pLog 0.3.2 正式版釋出了 與 試用心得 (http://reic.twbbs.org/post/1/106)」裡面新功能試用心得的第二點說明,配合 $showAll 變數處理應該可以做到。

若實做出來,請與大家分享哦!


謝謝!我好像弄出來了 :-D

我整理一下就把心得貼出來(因為其實我動的手腳不只是「置頂文章只在首頁出現」這一點...我這麼奇怪的作法大家可能不會有機會用到,不過我等一下還是會貼出來 :-P )


主題: [plugin]置頂文章外掛程式
作者: fragileness五月 17, 2005, 04:00:51 下午
我先貼一下我測試這個外掛的blog網址:

http://music.ee.ntu.edu.tw/plog/jcmg

大家如果點進去看的話,會發現它比較像一個網站而非一個一般的個人網誌。

首頁上方有文章標題為「測試公告」,而下方有文章標題為「首頁」,乍看之下應該上面那一篇是藉由「設定為公告文章」做出來的,而下面那篇是設定在一個「會顯示在首頁的分類」裡的文章。

不過其實真實狀況剛好反過來。我這樣做的目的是讓系統產生的RSS,會針對那篇「測試公告」而非那篇「首頁」去產生(因為系統產生的RSS好像是抓首頁顯示的文章...我不知道要怎麼設定它去抓其他文章)。也就是實際的狀況是:上面那篇「測試公告」是一篇正常顯示在首頁的文章,而下面那篇標題為「首頁」的文章,實際上是被設定為「置頂文章」,不過我把置頂文章出現在main.template的位置換到下面去,所以看起來比較像「置底文章」... (H)

另外,我也用lss前面提到的$showAll變數,來實做「只有首頁顯示置頂文章」(在我這裡的case是置「底」文章...)。我自己弄好之後,看文章分類裡確實不會顯示置頂文章,不過我在panel.template裡把隨時間彙整的連結拿掉了,所以沒有檢查隨時間彙整的頁面是不是也看不到置頂文章。

下面是我的main.template(原本是從mtplog修改過來的,但是在加入外掛之前我已經改過別的東西,所以忘記它跟原本mtplog的main.template有什麼差別了...orz)

-----------------------------------------------------------------------------

{include file="$blogtemplate/header.template"}
<div id="content">
{foreach from=$posts item=post}
{include file="$blogtemplate/post.template"}
<div class="pagetop"><a class="aposted" href="#top">回頁首▲</a></div>
{/foreach}

{if $showAll}
{else}
{if $stickyposts->isEnabled()}
{assign var=stickys value=$stickyposts->getArticles('sticky')}
{foreach from=$stickys item=stickypost}
{assign var="stickysDate" value=$stickypost->getDateObject()}
{assign var="stickysOwner" value=$stickypost->getUserInfo()}

<div class="blog">
<h2 class="date">{$locale->formatDate($stickysDate,"%B %d, %Y, %H:%M")} </h2>
<div class="blogbody">
<h3 class="title">{$stickypost->getTopic()}</h3>
{$stickypost->getText()}
</div>
</div>
{/foreach}
<div class="pagetop"><a class="aposted" href="#top">回頁首▲</a></div>
{/if}
{/if}

<br/>
</div>
{include file="$blogtemplate/panel.template"}
{include file="$blogtemplate/footer.template"}

----------------------------------------------------------------------------------


主題: [plugin]置頂文章外掛程式
作者: lss五月 17, 2005, 04:14:50 下午
哇!fragileness:

能這麼玩,你也是個高手,欽佩!


主題: [plugin]置頂文章外掛程式
作者: markwu五月 17, 2005, 10:48:20 下午
引用自: fragileness

{if $showAll}


 (Y)

我才剛要跟你說可以用 $showAll 來判斷, $showAll 是在 彙整(日期或是文章分類)才會出現的物件。所以可以透過他來判斷現在是否在首頁。

另外,你可以用 empty() 來判斷這物件是否存在頁面。所以這一斷模版可以改寫成

程式碼:
{if empty($showAll)} 
....
{/if}


這樣會比

程式碼:
{if $showAll}
{else}
...
{/if}


來的好瞭解!

Mark


主題: 奇怪的結果
作者: rainlan五月 18, 2005, 08:38:23 上午
我的想法是,在首頁上不同的區域分別呈現不同類別的文章,
所以我在main.template檔上,插入這樣的程式碼
引用

<div id="content">
{assign var=postCategory value=$post->getCategory()}
{assign var="postDate" value=$post->getDateObject()}
{assign var="postOwner" value=$post->getUserInfo()}
{assign var=stickys value=$stickyposts->getArticles(29)}
{assign var=stickyCategory value=$stickyposts->getCategory(29)}
  <h2>Sticky Posts</h2>
  {foreach from=$stickys item=post}
  <table border="0" width="400" id="table4" cellspacing="0" cellpadding="0">
   <tr>
      <td width="20"><img src="{$url->getTemplateFile("images/titlelist.gif")}"</td>
      <td width="180"><a href="{$url->postPermalink($post)}"><font size="2">{$post->getTopic()}</font></td>
      <td width="80" align="left">
      <a href="{$url->categoryLink($postCategory)}"><font size="2">| {$postCategory->getName()}</font></a></td>
      <td width="60" align="center">
      <img alt="迴響" src="{$url->getTemplateFile("bubble.gif")}" width="11" height="11" style="border: 0px" align="absbottom" /> <a href="{$url->postPermalink($post)}"><font size="2">|  ({$post->getTotalComments()})</font></a></td>
      <td width="60" align="center">
      <img alt="引用" src="{$url->getTemplateFile("trackback.gif")}" width="16" height="11" style="border: 0px" /> <a href="{$url->postTrackbackStatsLink($post)}"><font size="2">| ({$post->getNumTrackbacks()})</font></a></td>
   </tr>
  </table>
  {/foreach}
  <h4><a href="{$url->categoryLink($stickyCategory)}">more sticky posts</a></h4>
</div>

其中getArticles(29),是我的文章分類的代號,
但是會有以下的錯誤的訊息,
Fatal error: Call to a member function on a non-object in /var/www/html/ilan/tmp/21/%%737^%%737864322^main.template.php on line 71
但是很神奇的,
我如果把上面的程式碼放在一個檔案中,如title29.template
然後在main.template改為,
{foreach from=$posts item=post}
{include file="blueish/title29.template"}
{/foreach}
就可以將文章列出來耶
如圖(http://140.111.150.151/no135/images/stickyerror1.gif)
當然,這還不是我要的結果,
而且它會一直重複10次列出分類文章!
還不曉得是什麼原因說...[/quote]


主題: [plugin]置頂文章外掛程式
作者: lss五月 18, 2005, 10:02:45 上午
hi rainlan:
你試試改成下面這樣:
程式碼:
<div id="content">
{assign var=stickys value=$stickyposts->getArticles(29)}
{assign var=stickyCategory value=$stickyposts->getCategory(29)}
<h2>Sticky Posts</h2>
{foreach from=$stickys item=post}
{assign var=postCategory value=$post->getCategory()}
{assign var=postDate value=$post->getDateObject()}
{assign var=postOwner value=$post->getUserInfo()}
<table border="0" width="400" id="table4" cellspacing="0" cellpadding="0">
<tr>
<td width="20"><img src="{$url->getTemplateFile("images/titlelist.gif")}"</td>
<td width="180"><a href="{$url->postPermalink($post)}"><font size="2">{$post->getTopic()}</font></td>
<td width="80" align="left">
<a href="{$url->categoryLink($postCategory)}"><font size="2">| {$postCategory->getName()}</font></a></td>
<td width="60" align="center">
<img alt="迴響" src="{$url->getTemplateFile("bubble.gif")}" width="11" height="11" style="border: 0px" align="absbottom" /> <a href="{$url->postPermalink($post)}"><font size="2">| ({$post->getTotalComments()})</font></a></td>
<td width="60" align="center">
<img alt="引用" src="{$url->getTemplateFile("trackback.gif")}" width="16" height="11" style="border: 0px" /> <a href="{$url->postTrackbackStatsLink($post)}"><font size="2">| ({$post->getNumTrackbacks()})</font></a></td>
</tr>
</table>
{/foreach}
<h4><a href="{$url->categoryLink($stickyCategory)}">more sticky posts</a></h4>
</div>

應該就可以了,就是把前面的三個{assign=....}搬到第一個{foreach...}的後面。
因為前三個assign用到了$post物件,但是$post物件要等到{foreach...}之後才產生。

其實你沒用到postDate和postOwner物件,三個{assign...}只要保留第一個即可。

我在我的 blog 試過了,應該沒問題。


主題: 真的可以耶
作者: rainlan五月 18, 2005, 04:32:57 下午
謝謝lss
真的可以耶
不過因為明天網站要發表
所以先用原本的方式,
等之後再修改.....
改模板真的是快要瘋掉囉.....


主題: Re: 真的可以耶
作者: lss五月 18, 2005, 04:49:19 下午
引用自: rainlan
改模板真的是快要瘋掉囉.....

所以我向來佩服 port 及製作模版的高手們。

由衷地!


主題: 草稿的會列出來
作者: rainlan五月 26, 2005, 03:00:28 下午
回報一下
用至頂文章,會把文章狀態是草稿的、未正式刪除的(站長為清空)列出來說


主題: 草稿的會列出來
作者: rainlan五月 26, 2005, 03:00:53 下午
回報一下
用至頂文章,會把文章狀態是草稿的、未正式刪除的(站長為清空)列出來說

謝謝....


主題: Re: 草稿的會列出來
作者: lss五月 26, 2005, 08:17:02 下午
引用自: rainlan
回報一下
用至頂文章,會把文章狀態是草稿的、未正式刪除的(站長為清空)列出來說

謝謝....

hi rainlan:

謝謝你發現這個 bug。

問題應該在 pluginstickyposts.class.php 裡 第 76 行:
引用
$ret_articles = $articles->getBlogArticles( $blogId, -1, $maxpost, $catId, 'published' );


這裡的 'published' 應該用常數 POST_STATUS_PUBLISHED 才對。

很抱歉,我目前無法測試,你可以先試試看。我明天會做確認和回報臭蟲的動作。


主題: Re: 草稿的會列出來
作者: lss五月 27, 2005, 03:30:21 下午
引用自: lss
問題應該在 pluginstickyposts.class.php 裡 第 76 行:
引用
$ret_articles = $articles->getBlogArticles( $blogId, -1, $maxpost, $catId, 'published' );


這裡的 'published' 應該用常數 POST_STATUS_PUBLISHED 才對。

很抱歉,我目前無法測試,你可以先試試看。我明天會做確認和回報臭蟲的動作。

已經確認過了,接下來我會去 Mantis 回報,應該最近 plugin 下載就會同步更新了。

請先手動把 ./tmp/{blogId}/ 下的檔案手動清除,重新瀏灠頁面時才會生效。或是重新修改文章的狀態,讓 pLog 產生新的 cache。


主題: Re: 草稿的會列出來
作者: markwu五月 30, 2005, 01:07:07 下午
引用自: lss
引用自: lss
問題應該在 pluginstickyposts.class.php 裡 第 76 行:
引用
$ret_articles = $articles->getBlogArticles( $blogId, -1, $maxpost, $catId, 'published' );


這裡的 'published' 應該用常數 POST_STATUS_PUBLISHED 才對。

很抱歉,我目前無法測試,你可以先試試看。我明天會做確認和回報臭蟲的動作。

已經確認過了,接下來我會去 Mantis 回報,應該最近 plugin 下載就會同步更新了。

請先手動把 ./tmp/{blogId}/ 下的檔案手動清除,重新瀏灠頁面時才會生效。或是重新修改文章的狀態,讓 pLog 產生新的 cache。


忘了跟你說,我一開始也是犯了這個錯 :( 。呵呵。

Mark


主題: [plugin]置頂文章外掛程式
作者: andywang六月 01, 2005, 09:28:19 上午
hi  lss
你给的地址我去下载的时候需要用户名和密码,你还在别的地方放置了吗?


主題: [plugin]置頂文章外掛程式
作者: lss六月 01, 2005, 04:46:21 下午
引用自: andywang
hi  lss
你给的地址我去下载的时候需要用户名和密码,你还在别的地方放置了吗?

andywang:

抱歉!我忘了給你什麼地址下載什麼東西了?! :-P 這個討論串也沒看到你的名字出現在前面,所以我猜你是要新的 stickyposts plugin 吧!如果是這個,官方下載已經更新過了,請重新下載官方版本更新一下就行了。

在這裡 (http://prdownloads.sourceforge.net/plog/stickyposts.zip?download)下載。


主題: [plugin]置頂文章外掛程式
作者: andywang六月 02, 2005, 12:53:01 下午
是的,我要的是“置頂文章外掛程式”最新版本


主題: [plugin]置頂文章外掛程式
作者: andywang六月 02, 2005, 01:34:20 下午
下载了这个插件,但是readme-zh_TW.txt为繁体字,我这里没有看繁体字的工具,所以看不明白什么意思


主題: [plugin]置頂文章外掛程式
作者: lss六月 02, 2005, 04:02:49 下午
引用自: andywang
下载了这个插件,但是readme-zh_TW.txt为繁体字,我这里没有看繁体字的工具,所以看不明白什么意思

這個檔的內容,其實就是stickyposts plugin 的第一版 wiki 說明(有更新過哦) (http://wiki.lifetype.org.tw/index.php/PLog_1.0/Plugins/stickyposts)。

不過,簡繁轉換的軟體應該不少吧!convertZ、同文堂、Dr Eye、甚至用 word 也可以啊!


主題: [plugin]置頂文章外掛程式
作者: andywang六月 02, 2005, 04:40:01 下午
lss 你能否把你完整的main.template这个文件贴到这里,我怎么做不成功!或者哪位做成功的清完整贴出来,谢谢啦!


主題: [plugin]置頂文章外掛程式
作者: lss六月 02, 2005, 04:58:59 下午
引用自: andywang
lss 你能否把你完整的main.template这个文件贴到这里,我怎么做不成功!或者哪位做成功的清完整贴出来,谢谢啦!

在wiki裡的範例就是完整的 main.template (bluish 模版)。你一定要我貼的話,就貼給你看吧:
程式碼:
{include file="$blogtemplate/header.template"}
<div id="content">
{if $stickyposts->isEnabled()}
  <h2>Sticky Posts</h2>
  {assign var=stickys value=$stickyposts->getArticles('sticky')}
  {foreach from=$stickys item=post}
      <h2 class="title"><a href="{$url->postPermalink($post)}">{$post->getTopic()}</a></h2>
  {/foreach}
  {assign var=stickyCategory value=$stickyposts->getCategory('sticky')}
  <h4><a href="{$url->categoryLink($stickyCategory)}">more sticky posts</a></h4>
 
  <h2>Announce Posts</h2>
  {assign var=stickys value=$stickyposts->getArticles('announce')}
  {foreach from=$stickys item=post}
      <h2 class="title"><a href="{$url->postPermalink($post)}">{$post->getTopic()}</a></h2>
  {/foreach}
  {assign var=announceCategory value=$stickyposts->getCategory('announce')}
  <h4><a href="{$url->categoryLink($announceCategory)}">more announce posts</a></h4>
{/if}  
  {foreach from=$posts item=post}
    {include file="$blogtemplate/post.template"}
  {/foreach}
</div>
{include file="$blogtemplate/panel.template"}
{include file="$blogtemplate/footer.template"}

我倒是覺得,不如你把你用的模版和修改後的 main.template 長什麼模樣貼出來,大家才好幫你。

你只說你做不成功,誰知道能怎麼幫你?


主題: [plugin]置頂文章外掛程式
作者: andywang六月 03, 2005, 08:52:15 上午
谢谢lss看来我还是很粗心,我在钻研一下,有问题再请教! :-)


主題: [plugin]置頂文章外掛程式
作者: andywang六月 03, 2005, 10:36:05 上午
请问该插件装上后怎么翻译页面"Sticky Posts"和“Announce Posts”的中文含义?


主題: [plugin]置頂文章外掛程式
作者: lss六月 03, 2005, 11:07:30 上午
引用自: andywang
请问该插件装上后怎么翻译页面"Sticky Posts"和“Announce Posts”的中文含义?

我目前並沒有在語系檔裡加上這兩個詞的翻譯,我現在是用分類名稱來顯示這兩個部份。

例如我有「置頂」分類(category),並在 plugin 裡設定使用這個分類放置頂文章,則可以用下面的樣版代碼來取得「置頂」分類的名稱。

程式碼:
{assign var=stickyCategory value=$stickyposts->getCategory('sticky')}
{$stickyCategory->getName()}

我覺得這樣做的彈性更大,不必受限於 plugin 的語系檔。

甚至,也沒人規定一定要把它們用來當做置頂或公告的功能,要當「精華區」也可以啊! :-D


主題: [plugin]置頂文章外掛程式
作者: andywang六月 03, 2005, 12:57:33 下午
lss 我觉得对置顶文章管理还是不方便,首先要让blog自己决定该把哪篇置顶,可是我在 “置顶及公告文章设定 ”中只看到文章数目设置,那么作为一个普通的blog他如何设置自己的文章id为精华,我看你们有讨论说把id写入main.templete里面,可是这个模板文件只有管理员才能上传,普通的blog既不知道如何改由不知道如何上传,所以我不知道这方面如何考虑的?请有空答复以下。谢谢


主題: [plugin]置頂文章外掛程式
作者: fragileness六月 03, 2005, 01:18:26 下午
引用自: andywang
lss 我觉得对置顶文章管理还是不方便,首先要让blog自己决定该把哪篇置顶,可是我在 “置顶及公告文章设定 ”中只看到文章数目设置,


不是有

 顯示置頂文章數目  *
 置頂文章顯示數量

 顯示置頂文章的分類 *
 選擇置頂文章的分類

 顯示公告文章數目 *
 公告文章顯示數量

 顯示公告文章的分類 *
 選擇公告文章的分類

這四個選項嗎?不止文章數目設置吧。

引用自: andywang

那么作为一个普通的blog他如何设置自己的文章id为精华,我看你们有讨论说把id写入main.templete里面,可是这个模板文件只有管理员才能上传,普通的blog既不知道如何改由不知道如何上传,所以我不知道这方面如何考虑的?请有空答复以下。谢谢


安裝template editor這個plugin,並在「全部站台監控」的「模版編輯器設定中」將「允許網誌使用者使用模版編輯器」打勾,普通的blog使用者就可以上傳。

不然的話,管理員也可以事先幫使用者把顯示置頂文章的語法放在模版裡啊(請參見範例 (http://wiki.lifetype.org.tw/index.php/PLog_1.0/Plugins/stickyposts))。在寫語法的時候並不需要事先知道置頂文章目錄的id為何,用$stickyposts->getArticles( 'sticky' ) 就可以傳回置頂文章的 article 陣列,$stickyposts->getCategory( 'sticky' ) 則傳回用於置頂文章的 category 物件。


主題: [plugin]置頂文章外掛程式
作者: lss六月 03, 2005, 01:55:01 下午
引用自: andywang
lss 我觉得对置顶文章管理还是不方便,首先要让blog自己决定该把哪篇置顶,可是我在 “置顶及公告文章设定 ”中只看到文章数目设置,那么作为一个普通的blog他如何设置自己的文章id为精华,我看你们有讨论说把id写入main.templete里面,可是这个模板文件只有管理员才能上传,普通的blog既不知道如何改由不知道如何上传,所以我不知道这方面如何考虑的?请有空答复以下。谢谢

hi andywang:

我想你是還沒弄清楚 stickyposts plugin 的應用原理吧!也許怪我沒在 wiki 裡寫清楚。

進入正題,stickyposts 的原理很簡單,把文章加到設定為 sticky/announce  的文章分類裡,再由 plugin 將該分類裡的文章以 article 陣列的方式傳給樣版使用。所以 bloggr 要設定某篇文章為 置頂/公告 ,只要把該文章加入 置頂/公告 的分類裡即可。pLog 1.0 版開始加上了文章的多重分類功能,這個應用更方便了。

做為 blog hosting ,我自己不希望 blogger 能自己改模版,因為我假設我的 blogger 是只會用瀏覽器、word 等級的使用者,所以模版的部份要由 admin 處理。當然,你也可以開放給 blogger 。不過我覺得 blogger 能自己決定要不要使用 plugin 的功能已經足夠了。

最早 mark 釋出這個 plugin 的原始版本時,就是要自己改模版,加 categoryId 才能用,後來我搶先在忙碌的 mark 之前做了改版,在後台加上由 blogger 自己選擇 category 的功能(參考這裡)。後來在將這個 plugin port 到1.0時,為了兼顧彈性,給 power blogger 更多應用的可能,我把指定 categoryId 的功能和由後台指定文章分類的功能一起保留下來。

對 blogger 而言,他只要知道把文章加入指定為 sticky/annouonce 的分類就可以了,這樣不夠方便嗎?!


主題: [plugin]置頂文章外掛程式
作者: andywang六月 03, 2005, 02:58:48 下午
谢谢lss,您讲的很清楚,我现在明白了,刚才和mark交流了一下,看来我还是想的太复杂了,那我把这个插件先用上去,再加入帮助我想bloger应该就明白怎么做了,真的非常感谢lss如此不厌其烦,耐心的给我解决问题,太谢谢了!


主題: [plugin]置頂文章外掛程式
作者: lss六月 03, 2005, 03:27:16 下午
哈哈!別客氣了!

我倒是覺得我有點心煩、不太有耐心。 :-P

我的修養和溝通能力還很有待修煉呢!


主題: Re: [plugin]置頂文章外掛程式
作者: maomaode一月 01, 2006, 02:08:45 下午
One small snag in readme.txt
引用
  {foreach from=$posts item=post}
    {include file="$blogtemplate/post.template"}
  {/foreach}
{/if} 

should be changed to
引用
{/if} 
  {foreach from=$posts item=post}
    {include file="$blogtemplate/post.template"}
  {/foreach}


主題: Re: [plugin]置頂文章外掛程式
作者: lss一月 01, 2006, 09:34:18 下午
thank you!

I'll update the readme.txt

lss


主題: Re: [plugin]置頂文章外掛程式
作者: maomaode一月 03, 2006, 08:28:53 下午
大家好, 我将置頂文章外掛程式已经上传到我的站点http://www.bokeland.com
反响很激烈, 下面我贴一个网友的文章, 大概是批评的意见, 我对这个文章做出了一些comments, 如果有时间请大家看看这篇文章, 篇幅还蛮长的。这篇文章的题目是“给置顶功能泼点冷水” http://left.bokeland.com/blog/21/42/2006/01/03/4196


主題: Re: [plugin]置頂文章外掛程式
作者: lss一月 03, 2006, 08:51:32 下午
hi maomaode:

謝謝你貼上這個連結,我看過了。

基本上,我做這個 plugin 時,完全圖方便,能達到置頂的要求就好,並沒特別考慮到使用者的習慣。這裡我要替開發團隊澄清一下,當初 Oscar 也問我為什麼不簡單用 checkbox 勾選要置頂就好?很簡單,當時我不知道要如何實作。我做這個,是因為我覺得當時我需要,用我知道的方法簡單的實作出來。我也覺得也許有人想用,所以就放出來。

自由軟體的最大特色是什麼?就是你有使用上的自由。覺得不好的地方,大可按自己的想法修改。如果願意,把成果分享出來。我是基於這樣的想法在玩 LT 。

我承認文章置頂是一個很不成熟的外掛,他是我第一個在 pLog 1.0 架構上的外掛作品。目前我的興趣在 LT 的其他方面,使這個外掛變的更成熟好用並不是我目前最想做的事。但是歡迎有人把他修改的更好,甚至重寫一個更好的來取代他。

mark 說的一句話沒錯:
引用
BTW,不要加上太多的 plugins,以目前 plugin 那麼高的自由度,任何地方都可以加。如果你沒自行調整過,保證眼花撩亂!

因為 plugin 作者跟你的想法絕對不一樣。

就這樣。

lss


主題: Re: [plugin]置頂文章外掛程式
作者: markwu一月 03, 2006, 08:58:08 下午
其實這個外掛程式當初有兩個作法,一個是用 category 一個是用 custom field。我已經做出 用 custom field 的方式,不過程式大概已經找不到了,因為 lss 做出來,我就沒發佈了。而 lss是 porting 原有 0.32 的外掛程式(這個程式的原始 idea,好像也是我,我真是罪過啊  :-P )。

使用者『喜不喜歡』,我一直強調這是『你』與『你的使用者的問題』,呵呵。因為他們是你的衣食父母啊!

以這個情況來看兩種作法有利有弊:
1. Custom Field:
使用者可以依據每篇文章來設定要不要置頂。看起來不錯。但是麻煩的事,當他要取消置頂的時候他不知道怎麼找文章,所以你得要做個管理介面的置頂列表,讓他來操作。有沒有必要呢?除非你要 ignore 你使用者的看法,否則我保證他們一定會提出。

2. Category:
第一次必須要選一個 category,之後就沒事了。因為你選了 category 同等於置頂。更何況 lifetype 還可以選擇多個分類。

好,那麼你要選哪一個?

如果你是 BSP,那麼選 1 來實做是比較好的,但是你必須要自己來做。實在是不能怪『外國人』跟你思維不同。應該要思考你在開放你的網站前,怎麼沒先把整個 UI 的思路看清楚,做過『blind testing』與『修改』才開放。把這過錯推到『外國人』,似乎不是好的思考方式。呵呵!大家都希望能『速成』,這真的是很難的事。

如果只是給自己的社群經營使用,那麼怎麼『經營社群』才是重點,這個應該是枝微末節了。

Anyway,這是很有趣的話題,其實可以試試 wordpress-mu 或 b2evolution,做一下對照實驗。

我一直建議你看一下 MySinaBlog,他們其實改了不少東西,但是都是在 UI 『行為』上,因為他必須要符合他們的風格與之前網站的行為。你可以看一下他們『拿掉』多少東西,而不是『加上』多少東西。

最後針對 Left 朋友的批評,滿有道理的。但是你預備怎麼做呢?把他改成用 Custom Fied,然後把 plugin 貢獻回 LifeType 社群?呵呵,這是我最希望的方式啦!

加油啊!使用者是最難搞的,但是搞定了,你就成功了。

Mark


主題: Re: [plugin]置頂文章外掛程式
作者: markwu一月 03, 2006, 09:04:36 下午
BTW, 要以 cutom field 來做這個plugin,mmm .... 你可能要參考

1. secret, karma plugin 來瞭解如何使用 custom field.
2. 參考 contentfilter plugin 來瞭解如何透過 pipe line 來你想要的置頂文章放到所有文章的最前面。

可能會有一些複雜,我當初也是想了好一會。但是應該是不難。 :-)

Mark


主題: Re: [plugin]置頂文章外掛程式
作者: lss一月 03, 2006, 09:20:03 下午
mark 提到 custom field ,讓我想起來了。當初我也考慮過用 custom field 實作,但是當時的 api 沒有提供(或者是我沒找到)使用 custum field 直接取得文章的方法。所以在當時我有兩個選擇:

1.自己寫 sql 複雜的查詢語句來取得置頂文章。但是修改別人的系統,我習慣使用現成的 api 以求跟未來相容。這樣做我會犧牲向上相容的特性。
2.先取得文章,再一一判斷是否置頂。這是很沒有效率的做法。要麼,plugin 要寫的很難看,要麼,樣版代碼不會比 php 程式簡單寫。

所以我才選擇了繼續使用文章分類來處理。當然,現在方法應該簡單多了,mark 也把思路方法都指明了。有興趣的人自己出列吧!現在的我,覺得網址才是好玩的東西。

lss


主題: Re: [plugin]置頂文章外掛程式
作者: maomaode一月 04, 2006, 08:45:19 上午
Hi Mark:

我完全同意你的看法, 其实Lss的这个方案, 应该是最简单不过的做法了, 而且我觉得也是make sense的, 因为在我看来, 所有需要置顶的文章, 他们都有一个共同的属性,这个属性是区别于其他文章的, 也就是他们都需要放到页面的顶部优先被显示出来,而category的用处不就是把具有共同属性的文章规类到一起吗? 所以我个人觉得lss的这个方案是可行的。
lss这个方案唯一的缺憾就是在一开始的时候,我们可能需要新建两个category来完成文章置顶和公告, 这个我已经改成了一个文章置顶category, 去掉了公告category。并且对css做了些调整, 可以在http://bokeland.bokeland.com看到。
用custom field的方式我觉得就是开发人员会比较辛苦, 修改的地方会比较多, 用户使用起来可能会稍微方便点吧,如果我有时间, 我来做一个吧。暂时还是采用lss的方案了。


主題: Re: [plugin]置頂文章外掛程式
作者: dekuo二月 02, 2006, 06:31:07 下午
引用自: fragileness
{if $showAll}

 (Y)

我才剛要跟你說可以用 $showAll 來判斷, $showAll 是在 彙整(日期或是文章分類)才會出現的物件。所以可以透過他來判斷現在是否在首頁。

另外,你可以用 empty() 來判斷這物件是否存在頁面。所以這一斷模版可以改寫成

程式碼:
{if empty($showAll)} 
....
{/if}

這樣會比

程式碼:
{if $showAll}
{else}
...
{/if}

來的好瞭解!

Mark

謝謝 Mark 及 Lss !
我已經照你們前面的討論修改完畢了 ... 這個 Plugin 真是太好用了!


主題: Re: [plugin]置頂文章外掛程式
作者: nhiteo五月 11, 2006, 12:45:37 上午
我也裝好了,我在網站模板上的實做方式像這樣:
http://husan.freebsd.idv.tw

右上角的最新公告

初次見面,獻醜了


主題: Re: [plugin]置頂文章外掛程式
作者: ted九月 17, 2006, 02:26:29 下午
這幾天升級到 LT 1.1後, 發現 sidebar 上使用的置頂文章出不來 :-(
不知有沒有人已解決此相容性問題?

謝謝


主題: Re: [plugin]置頂文章外掛程式
作者: panying十月 29, 2006, 08:52:16 下午
這幾天升級到 LT 1.1後, 發現 sidebar 上使用的置頂文章出不來 :-(
不知有沒有人已解決此相容性問題?

謝謝


我把它修改到1.1能用了,请察看 http://www.pactofshadow.com/lifetype/2/articleperma/40.html


主題: Re: [plugin]置頂文章外掛程式
作者: ted十一月 09, 2006, 08:02:42 上午
謝謝 panying :-D


主題: Re: [plugin]置頂文章外掛程式
作者: zpingw十一月 27, 2006, 12:44:15 下午
不知道1.1的plug-in支援最新的1.1.2嗎?

我嘗試安裝,把plug-in folder upload上server后,去其他管理頁面(内容管理,檔案中心)會出現下列錯誤訊息。

Fatal error: Undefined class name 'menu' in E:\inetpub\vhosts\zpingw.com\subdomains\li\httpdocs\plugins\stickyposts\pluginstickyposts.class.php on line 37



只好再將之移除。


主題: Re: [plugin]置頂文章外掛程式
作者: panying十一月 27, 2006, 03:38:35 下午

include_once( PLOG_CLASS_PATH."class/dao/articles.class.php" );
下面添加句
 include_once( PLOG_CLASS_PATH."class/template/menu/menu.class.php" );
看看


主題: Re: [plugin]置頂文章外掛程式
作者: zpingw十一月 27, 2006, 07:29:09 下午

include_once( PLOG_CLASS_PATH."class/dao/articles.class.php" );
下面句
 include_once( PLOG_CLASS_PATH."class/template/menu/menu.class.php" );
看看


謝謝 panying ,添加后問題已經解決,能夠順利執行。


不過還有另一個問題 (不好意思  :-$)

我依據把説明檔裏的代碼copy進main.template裏
看到其中是有包含了 if empty($showAll) (前面有說到控制只讓stickypost顯示在首頁的變數)

但是我啓動外掛后,stickypost還是會出現在文章分類和文章彙整的頁面。
不知道是什麽問題呢?原始模版是connection,是不是模版的相容問題呢?


下面是我的main.template,我只保留了Announce Posts。
-------------------------------------------------------------------------------------------------------


{include file="$blogtemplate/header.template"}

<div id="content">


{if empty($showAll) && $stickyposts->isEnabled()}
<h2>Announce Posts</h2>
{assign var=stickys value=$stickyposts->getArticles('announce')}
{foreach from=$stickys item=post}
<h3><a href="{$url->postPermalink($post)}">{$post->getTopic()}</a></h3>
{/foreach}
{assign var=announceCategory value=$stickyposts->getCategory('announce')}
<h4><a href="{$url->categoryLink($announceCategory)}">More Announce...</a></h4>
{/if}

<div class="post">
{foreach from=$posts item=post}
{include file="$blogtemplate/post.template"}
{/foreach}

</div>
{pager style="links"}
</div>
{include file="$blogtemplate/panel.template"}
{include file="$blogtemplate/footer.template"}


主題: Re: [plugin]置頂文章外掛程式
作者: panying十一月 28, 2006, 10:23:22 上午
模板方面不太熟悉,我也不能解释...