歡迎光臨, 訪客. 請先 登入註冊一個帳號.
五月 02, 2024, 02:47:14 上午
19595 文章 在 3865 主題 由 4580 會員
最新註冊會員: aa123aa1
LifeType 中文開發論壇  |  開發  |  模版設計  |  [請益]smarty的技巧(關於文章彙整) « 上篇主題 下篇主題 »
頁: [1]
作者 主題: [請益]smarty的技巧(關於文章彙整)  (閱讀 27836 次)
hsuzy
新手見習
*
文章: 41


檢視個人資料
« 於: 二月 09, 2006, 07:48:35 下午 »

程式碼:
<ul>
{foreach from=$archives item=month}
    <li><a href="{$month->getUrl()}">{$month->getName()}</a> [{$month->getNumArticles()}]</li>
    {/foreach}
 </ul>
上面這段會產生
. 八月 2005 [9]
. 四月 2005 [1]
. 十一月 2004 [2]
. 八月 2004 [1]
. 四月 2004 [1]
--
因為如果月份太多, 會拉很長, 但是我又不喜歡下拉式的
我想做的是像
2005
已記錄
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #1 於: 二月 09, 2006, 08:26:59 下午 »

hi hsuzy:

很抱歉,可能要讓你失望了 傷心

月份彙整的部份,在 LT 裡面是以 MyLinkArchiveLink 類別(繼承自 MyLink 類別,多了紀錄該月文章數的屬性)實作,所以樣版檔裡的 $archives 是相當於 $linkcategory->getLinks() 一樣,是一個 MyLinkArchiveLink 物件的陣列,而不是以年度、月份分類的物件陣列。簡單的說,你提供的樣版代碼裡面的 $month ,是跟我的連結部份的 $link 物件是一樣相似的,而 $month->getName() ,已經被固定為 「二月2006」 的格式了。

你可以看看 class/view/blogview.class.php 裡面的 _getArchives() 函式。

如果要達成你的要求,一是改上述的程式,另一是寫個 plugin 來提供你要的功能。

lss
« 最後編輯時間: 二月 10, 2006, 09:36:02 上午 由 lss » 已記錄

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



檢視個人資料 個人網站
« 回覆文章 #2 於: 二月 09, 2006, 11:54:43 下午 »

hi hsuzy:

我有實作一個 hack ,一個修改版的 blogview.class.php ,配合模版的修改,可以達成如附圖的效果。月份沒有接在同一行是因為 CSS 的關係。

不過,使用這個 hack 的話,會有幾個後遺症,先講清楚:
1.所有的模版都要配合修改,如果你的 LT 站是多人使用的話,要考慮一下囉!
2.未來 LT 更新版本,hack 極可能(99%以上)要重新修補才能繼續使用。
如果你不怕麻煩,仍舊有興趣的話,回應一下吧!

另外,如果有人路過覺得這個不錯也回應一下,若很多人有興趣,我就試試回報到臭蟲追蹤系統,看看能不能被加入 1.1 版。若被加入,未來升級 1.1 時,那是所有模版都要改才能用了。

lss
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
james
版主
超級會員
*****
文章: 823


哼!!你不說,誰會知道你做過那些修改呢!? (丟滑鼠~~)


檢視個人資料 個人網站
« 回覆文章 #3 於: 二月 10, 2006, 12:02:38 上午 »

hi hsuzy:

我有實作一個 hack ,一個修改版的 blogview.class.php ,配合模版的修改,可以達成如附圖的效果。月份沒有接在同一行是因為 CSS 的關係。

不過,使用這個 hack 的話,會有幾個後遺症,先講清楚:
1.所有的模版都要配合修改,如果你的 LT 站是多人使用的話,要考慮一下囉!
2.未來 LT 更新版本,hack 極可能(99%以上)要重新修補才能繼續使用。
如果你不怕麻煩,仍舊有興趣的話,回應一下吧!

另外,如果有人路過覺得這個不錯也回應一下,若很多人有興趣,我就試試回報到臭蟲追蹤系統,看看能不能被加入 1.1 版。若被加入,未來升級 1.1 時,那是所有模版都要改才能用了。

lss
我~~我~~我~~超有興趣的 微笑 不過想到模版要更改,又有點矛盾。
不過我還是感興趣啦 ^_^
我還有另一個想法是,只秀出當年的月份,其它的就只秀年份的連結(點了後在秀出該年的月份)
這應該可以用 lss的hack在加上javascript來達成 微笑
我也來研究看看囉 ^^

James.
已記錄

記得發問前,先使用搜尋功能找找看有沒相關的解答。
如果找不到,請依照如何在LifeType論壇發問來提問喔。
hsuzy
新手見習
*
文章: 41


檢視個人資料
« 回覆文章 #4 於: 二月 10, 2006, 01:14:01 上午 »

感謝 lss的說明, 看到沒辦法使用現成的變數, 小弟用粗淺的smarty功力硬幹了
程式碼:
                	<ul>
                        {assign var="archivesYear" value=3000}
                        <li>
                {foreach from=$archives item=month}
                            {assign var="archivesYearTemp" value=$month->getName()|regex_replace:"/[ 一二三四五六七八九十月]/":""}
                            {if $archivesYear neq $archivesYearTemp}
                                {assign var="archivesYear" value=$archivesYearTemp}
                                </li>
                                <li>{$archivesYear}</li>
                                <li>
                            {else}
                                ,
                            {/if}
                    <a title="{$month->getUrl()}" href="{$month->getUrl()}">{$month->getName()|regex_replace:"/[ 1234567890]/":""} [{$month->getNumArticles()}]</a>
                {/foreach}
              </ul>
已記錄
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #5 於: 二月 10, 2006, 08:39:10 上午 »

hi hsuzy:

你太謙虛了,會這樣用 smarty 設計模版,怎可說是“粗淺“呢 眨眼睛

建議一下,還可以再“精鋉“一下,改成如下:
引用
<ul>
{assign var="archivesYear" value=3000}
   <li>
   {foreach from=$archives item=month}
      {assign var="archivesYearTemp" value=$month->getName()|regex_replace:"/[^ 1234567890]/":""}
      {if $archivesYear neq $archivesYearTemp}
         {assign var="archivesYear" value=$archivesYearTemp}
         {$archivesYear}</li><li>
      {else}
         ,
      {/if}
      <a title="{$month->getUrl()}" href="{$month->getUrl()}">
         {$month->getName()|regex_replace:"/[ 1234567890]/":""} [{$month->getNumArticles()}]
      </a>
   {/foreach}
   </li>
</ul>
紅色部份,可以減少一對冗餘的 <li></li> 標籤,而藍色的部份,則可讓其他語系也能適用。
當然,這只能適用於月份彙整的標題一定是用「非數字月份」加上「數字年」的格式。根據 blogview.class.php 裡的程式碼,這個格式是可以設定的,只是沒有加入管理介面而已。

hi james:
既然你也有興趣了,我整理一下再發佈,大家來玩玩看吧!

lss
已記錄

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



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

hi all:

我把文章整理出來了,請看 兩層式的文章月份彙整

因為是修改核心做出來的,所以同步發佈在 核心補強 版的這裡了。

lss
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
Nyserq
新手見習
*
文章: 29


檢視個人資料 個人網站
« 回覆文章 #7 於: 五月 17, 2006, 09:47:51 下午 »

之前沒看到這串討論,昨天也是想半天,結果想出幾乎一樣的做法...
差別在於regular expression的取法
程式碼:
{assign var="name" value=$month->getName()}
{assign var="year" value=$name|regex_replace:"/.+ /":""}
{assign var="monthString" value=$name|regex_replace:"/ .+/":""}
前提是彙整標題必需是 月份在前年份在後,中間用空格分開的寫法。

另外我想再請教另一個關於彙整頁的問題
我想在每一個分類頁或按月彙整頁的上方顯示該分類名稱(或描述)或月份名稱
不過除了可以用$showAll這個變數來判斷是不是在分類或日期彙整頁之外
好像沒辦法知道是在哪一個分類或月份

不知道我講的清不清楚,請問有辦法可以做到嗎?
已記錄

http://blogoncinema.dyndns.org/
LifeType 1.2.5
Apache 1.3.39(Unix), PHP 5.2.4, MySQL 5.0.45-community
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #8 於: 五月 17, 2006, 10:47:51 下午 »

年 => $Year (數字)
月 => $Month (數字)
文章類別名稱 => $category->getName()

搭配 $showAll 應該夠用了吧。

你可以來我的 blog 看看效果是不是你要的。  微笑

lss
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
Nyserq
新手見習
*
文章: 29


檢視個人資料 個人網站
« 回覆文章 #9 於: 五月 17, 2006, 11:04:23 下午 »

年 => $Year (數字)
月 => $Month (數字)
文章類別名稱 => $category->getName()

搭配 $showAll 應該夠用了吧。

你可以來我的 blog 看看效果是不是你要的。  微笑

lss

改好了,感謝.... 微笑
請問這些物件有文件可查嗎?
已記錄

http://blogoncinema.dyndns.org/
LifeType 1.2.5
Apache 1.3.39(Unix), PHP 5.2.4, MySQL 5.0.45-community
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #10 於: 五月 17, 2006, 11:28:47 下午 »

改好了,感謝.... 微笑
請問這些物件有文件可查嗎?
那個~~~這個~~~

好像沒有耶  害羞

我是追原始碼找到的。你可以看看 class/action/defaultaction.class.php 。

LifeType 的 MVC 架構與實作,不是三言兩語可以講完的  傷心

lss
已記錄

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


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #11 於: 五月 18, 2006, 10:38:23 上午 »

目前唯一的 物件文件,可能要到 API 去看: http://api.lifetype.org.tw

或是 wiki http://wiki.lifetype.org.tw

Mark
已記錄

頁: [1]
LifeType 中文開發論壇  |  開發  |  模版設計  |  [請益]smarty的技巧(關於文章彙整) « 上篇主題 下篇主題 »
    前往: