您在這裡

細節頁面要怎麼製作?

tky's 的頭像
tky 在 2006-11-14 (二) 20:30 發表

各位好,TKY再次求教:

一直很順利的搭建網站中,做到一半碰到一個問題。

TKY大量的運用VIEWS來做出各類內容的table列表,內容標題都會設定成連結,點選連結就會跳到內容頁面。不過跳到內容頁面之後,就跟原來的table失去了聯繫,只能按「上一頁」按鈕跳回去。Breadcrumb也不會顯示。

比如說TKY做了一個「各類公告一覽」的views table,按下好比說屬於「新聞」類的內容標題「XXX商場下午發生大火」,就會跳到「XXX商場下午發生大火」結點內容。可是網址就會從new變成node/12之類的,Breadcrumb也就沒了階層的顯示;這樣瀏覽者就失去回原table的線索,只能按上一頁跳回去(當然別提TKY目前還不會在內容頁面中放一個「上一頁」的連結)。

TKY想要弄出的效果是:從特定類別table連結到的內容細節頁面,能隸屬在同樣的網址與類別下。TKY想說VIEWS應該就可以辦到這點,但是TKY不曉得要怎麼設定(用arguement嗎?)

另外,就內容頁面來說,TKY很想知道本站討論區內容頁面下方那種「下一筆」、「上一筆」的效果是怎麼做的?還是要用哪種模組?

請版上老手們幫幫TKY吧!

恩,改善這個瀏覽介面的親切度,是一個很好的作法。

這跟分類好的內容文章、討論主題...等,一旦進入full node之後,就會變成node/12之類的,如此「區塊」、「上、下筆」...關係的控制就有一些難度。

例如,限制「區塊」在特定分類或其他blog之類的時候,點進 node 就失控囉 ~

沒試過,不過也覺得是個問題
一種方式是自己寫module,根據上一面的request來加上麵包屑

另一種可能的方式,我想可以試試用path auto,把該node type的path都改寫為views path的子層,應該就會加上麵包屑..

--
from open mind to open source~

謝謝jimmy 的回應。
不過path auto是什麼啊?模組嗎?
還是指每次新增一個node的時後,都可以自己改變它的URL的那個選項?
如果是後者的話,要怎麼設定讓同類型的node都隸屬在某個url下面呢?

TKY

tky

有一個 node,它的 node id 是 100,它的 node type 是 blog,然後它同時又隸屬於 v1 和 v2 這兩個 views 做出來的 page view。在接下來的情況下:

1. 瀏覽到 blog 的頁面(url 假設是 http://ooxx/blog/1),然後這時點選這個 node,應該是會希望它的 breadcrumb 類似「Home -> asdf's blog」,然後那個 asdf's blog 的 link 是指到 http://ooxx/blog/1

2. 瀏覽到 v1 的頁面(url 假設是 http://ooxx/v1),然後這時點選這個 node,應該是會希望它的 breadcrumb 類似「Home -> v1」,然後那個 v1 的 link 是指到 http://ooxx/v1

3. 同理,瀏覽到 v2 的頁面(url 假設是 http://ooxx/v2),然後這時點選這個 node,應該是會希望它的 breadcrumb 類似「Home -> v2」,然後那個 v1 的 link 是指到 http://ooxx/v2

4. 現在如果是透過 google,然後連到 http://ooxx/node/100 的話,這個時候它的 breadcrumb 應該是什麼呢? 可能就直接是「Home」吧。

更進一步的話,可能會希望在 v1 這個 page view 底下是,每個 node 的 url 是類似 http://ooxx/v1/100(這個 100 是某個 id,或者就是原 node id),這樣可能會更好一點。更貪心的話(或者你可以說,因為你希望作好 SEO),可以希望在 v1 底下的 node 的 url 是類似 http://ooxx/v1/asdf(asdf 是一個有那麼點意義的 term)。

不曉得這次有沒有誤解原發問者的意思?

對!沒錯!DrakeGuan完全理解TKY的問題!以實際的例子來說就是這樣!
就是希望瀏覽者看到最終的內容細節頁面時,能夠有線索讓他能夠知道自己在哪個階層下面,並且能夠有一個友善的介面讓他知道怎麼返回上一層、不需要一直按「回上一頁」。

嗯,既然DrakeGuan完全理解TKY的問題,不會剛好已經有解決之道了吧?如果有的話,麻煩DrakeGuan指點一下TKY囉!

苦惱中的
TKY

tky

我還沒有想到比較完善的作法,前三點可以透過修改 theme 中的 node.tpl.php(或是 node.tpl)來做到;第四點的話,drupal 預設的 breadcrumb 應該是都 ok 的。

另外,如果想要做到第五點(就是 http://ooxx/v1/100),只要在那個 page view 裏頭新增一個 node id 的 argument,然後再把那個 argument 的 default 的值設成 show all values 就行了。不過我發覺這樣還沒有完全解決問題,它只是讓 http://ooxx/v1/100 有東西秀出來,但秀出來的樣子取決於這個 page view 的 display 方式(ex, table view, list view, teaser view),並無法讓 http://ooxx/v1/100http://ooxx/node/100 秀出來的樣子一模一樣就是了,關於這我還在想別的作法。

另外,修改 node.tpl.php 時,得同時修改 node 的 title link 與 links…細節還真多 = =

DrakeGuan已經成功作到了一部份囉?
關於修改node.tpl.php,恐怕要勞煩DrakeGuan把細節多說一點。因為TKY雖然有改過node.tpl.php排版方式的經驗,但是對於如何修改title link好讓它能夠正確顯示分類階層網址與breadcrumb,TKY可是完全沒概念。

對於第五點,TKY好奇說,page view 的 display 方式除了DrakeGuan所稱的那幾種之外,不是還有一個叫full node的方式嗎?用這個會不會有用呢?

期待DrakeGuan能夠把詳細的作法早日寫成教學手冊。

TKY

tky

謝謝DrakeGuan提供的解答。不過TKY到[quote=DrakeGuan]
Display full Breadcrumb in node[/quote]這個連結去後,按照步驟一步一步完成修改,上傳之後,卻發現沒有任何的改變。也就是說,透過view page table連結過去的node頁面,不管是網址還是breadcrumb,都沒有隨著node的分類而改變。

TKY索性把教學上的原始碼整個複製、然後貼到自己的node.pal.php裡頭。但是上傳之後,一樣沒有任何的變化。

想必是哪裡有問題?

TKY的table頁面與其子頁面都是用tabs的方式顯示在一個頁面裡,所以table頁面的breadcrumb,除了「首頁」之外沒有次一層的連結。但是node都是經過分類的啊,按理點進去就應該會有相應於分類或者view網址的breadcrumb才對。搞不太懂到底問題在哪裡。

不曉得有沒有人開發類似的模組說......

TKY

tky

原來是這樣啊!
不過這樣一來就有點麻煩了,因為tky的page view不只一個,而是很多耶!(可能TKY有分類狂吧?)

比如說有http://ooxx/event、還有http://ooxx/news,諸如此類一堆不同類型的頁面與網址。如果是很多網址的情況下,要怎麼修改一開頭的 if(arg(0) == 'taxonomy') 呢?是用else if之類的函數加上條件句,還是有一個網址就得在最前頭加上一次完整修改過的指令碼呢?

還請DrakeGuan幫忙。:p

TKY

tky

用全文(full variables?)的話,就不會有 深入閱讀/閱讀全文(read more)這個玩意兒了。

我想要的呈現方式,應該是在 views 下和 views/node_id 兩個呈現方式要不同,這樣比較接近原來的 node 和 node/node_id 。昨天我 k 了一下 views 的文件,只要自己提供 themable functions 就行了,而且昨天看的結果,發現到一件事,原來要玩 views 得會玩 themable functions,不然無法完全發揮到它的威力。

TKY研究了一下views的「full node」顯示模式,發覺它可以顯示出node的全文,如果在pager那裡設定一次顯示一頁的話,就可以一筆一筆的跳下去看。同時又有breadcrumb會正確顯示上一層的連結。

這已經蠻符合TKY的要求了。

問題只是說,TKY不曉得要怎麼讓table中本來會連結到node/node_id的標題連結,連結到這個以full node模式顯示的內容頁面。

TKY的作法是:做一個url為「event」的活動列表views table,另再做一個url為「event/detail」、一頁只有一個node的views full node。然後想辦法讓views table的連結,可以按照node id跳到views full node。可能會用到jimmy 提到的theme wizard或者header方面的程式碼吧?不過TKY目前還搞不定。

另外一個問題就是views以full node模式顯示出來的全文,標題和分類連結仍是各自為政,分別連到/node/node_id和/taxonomy/term_id去。理想狀況裡應該是讓它們不要產生連結,或產生的連結應該還是在/event下面。

修改theme function,有沒有比較清楚的教學步驟呢?themable functions documentation 講得實在很抽象耶。

TKY

tky

我有一個類似的問題想請教,假設我有兩個 View,叫做 v1 跟 v2,這兩個 View 都是 Table View 有提供 Page 來顯示,URL 分別是 view/v1 跟 view/v2。
我想讓 Table 中的 Node Title 連結,在 v1 的時候顯示 view/v1/[nid] ,在 v2 的時候顯示 view/v2/[nid],請問一下該如何做?

這個問題有點複雜~
簡單的說好了,URL 會跟 Block 的顯示與否有關,會跟 Breadcrumb 顯示的連結有關。
客戶希望呈現的東西是有階層概念的,但又不希望 Content Type 太多~
總之,動態改寫 node 的 URL 這樣的需求是存在的。

OK
目前這個案子是將一個舊的網站的資料(非Drupal架構)移轉到新的網站系統(使用Drupal)中。
內容類型的種類不多,但是文章的分類卻有多個面向。
第一個面向是 Site Map 的階層分類。
第二個面向是 某個 CCK 欄位的選項。
第三個面向是主要與幾個次要的領域。
其中第二個面向與第三個面向是一體的兩面,因為領域的名稱即為該 CCK 欄位的選項,差異只在次要領域需要組合另外的 Menu 與 Content(Page)來形成導覽連結的 Block。

我用 Taxonomy Menu 解決了第一個面向的問題。
第二個面向使用 CCK 而不用另外一個 Taxonomy,主要是因為 Views 篩選條件時只能針對一個 Taxonomy 的關係。
第三個面向的導覽連結的 Block,我有設定其顯示條件,僅會在某個合乎條件的 URL 下顯示。

而問題在於第三個面向中有一個用 Views 做出來的 Table,裡面每一列的 Node 的連結還是 /node/xxxx 這樣的形式,造成點選連結後,會由次要領域回到主要領域中。
P.S. 領域的概念其實就是看 Breadcrumb,也就是跟 URL 有關。

奇怪,有點給他沒看懂
快速骯髒的方法,在template.php裡頭試試看 drupal_get_breadcrumb / drupal_set_breadcrumb
也可以試試看pathauto搭配?
--
from open mind to open source~

--
from open mind to open source~

ha.. 我建議妳把問題整個敘述一次看大家有沒有辦法
結果都沒有人回應, 真是抱歉啊
不過我也看不太懂你的問題, 太多面向了有點複雜.
可能我對 Drupal 也還不夠熟悉也有關吧

懂了... 要針對不同類型或term的node時,display相應的block
你是用block,可以直接插code在block的顯示限制裡頭(最下面)

if(arg(0) == 'node' && is_numeric(arg(1))){
$n = node_load(arg(1));
if($n->type == 'xxx'){
return 1;
}
}
return 0;

--
from open mind to open source~

--
from open mind to open source~

雖然這篇年代久遠,不知道再問會不會被打..

 

我跟你遇到一樣的問題.. 這是我的網站 http://www.hopeandlove.url.tw/picked-dognothern

假設現在路徑是首頁 » 拾獲毛孩 » ♥狗狗Dog,然後我點第一張照片進去看內容

照理說應該要出現首頁 » 拾獲毛孩 » ♥狗狗Dog » (node標題)

可是點進去卻只剩 首頁
 

你們上面討論的我完全看不懂T^T 不知道大大有沒有解決你自已這方面的問題?