2011-03-30 93 views
0

假設我的網站銷售汽車和其他交通工具。我有一個名爲Product的內容類型,它被分類爲分類,例如。汽車,Bicyces,小船,直升機。只顯示現場數據時暴露的過濾器

Product內容類型有一些CCK字段來描述產品的基本功能,例如horsepower,number_of_wheelstop_speed

我使用視圖來覆蓋分類術語頁面,並顯示一些暴露的過濾器,以便用戶縮小選擇範圍。

我的問題是,我查看某些術語時,某些暴露的過濾器並不適用。例如,如果我正在查看自行車術語,我不希望能夠通過horsepower進行過濾!或者,如果我正在查看小船,我不希望能夠通過number_of_wheels進行過濾(因爲我的小船都沒有輪子)。

那麼,如果視圖中沒有行包含該字段中的數據,是否有方法可以隱藏某個字段的公開過濾器?

回答

0

只有一種內容類型「產品」雖然簡單,但最終會導致冗餘和問題,比如您現在遇到的問題。添加單獨的內容類型要好得多。汽車,自行車,船和設置領域獨特的。通過這種方式,您可以在視圖中輕鬆創建內容類型的過濾器。

如果你是在mysql中創建表,你會只有一個表產品?我希望不是。 ;-)

+0

是的,我明白你的意思,謝謝你的評論加里。我試圖讓它變得靈活以允許(用我的例子)一個混合動力汽車船產品很好地存在。我想我只需要將其吸收並分成不同的內容類型。再次感謝! – derpal 2011-03-31 01:06:18

+0

「混合動力車船」聽起來不錯,我想要一個!無論如何,對於這種情況,我會再次創建一個新的內容類型以顯示「水陸兩用車」 - Drupal中的優點是您不必一遍又一遍地創建字段,您可以在新內容中重新使用它們類型(只需從CCK的下拉菜單中選擇)。您有字段和字段實例。因此,例如,您可以使用通用字段名稱「title」,並將其附加到多種內容類型中。對於您的情況,請從「cars」內容類型中選擇字段,這樣可以更輕鬆地在CCK中創建。一旦完成,你將來不用擔心。 – 2011-03-31 08:50:12

0

如果你不能像Gary Green所建議的那樣分支你的內容類型,那麼你可以使用hook_form_alter來檢查默認值與您的產品類型(自行車,船隻等)相對應的分類學字段,然後通過將這些字段的#access設置爲FALSE來刪除字段。

如果你不習慣使用hook_form_alter,你也可以設置這些顯示:none with jQuery(不要刪除它們,否則表單在提交時不會通過安全/完整性測試)。不幸的是,你不能用簡單的css來做到這一點,因爲至少在D6中,CCK過濾器輸入元素沒有足夠特定的id或類來允許簡單的css操作。

這假設您爲每個分類法確定的產品類型都有單獨的視圖頁面;您的描述聽起來像是這種類型的設置。

+0

感謝您的回覆James,我感謝您的意見。我從來沒有玩過#access字段,所以你鼓勵我爲未來的目的進行研究。最終對於這個問題,我認爲對我來說最有效的選擇是分支內容類型並犧牲少量的靈活性。再次感謝! – derpal 2011-03-31 01:14:25

+0

謝謝,derpal。我同意爲了這個目的,分支內容類型聽起來更有意義。請注意,有一個CCK打包的模塊可以激活(「內容複製」或類似這樣的名稱),這將允許您創建一個包含所有各種屬性的內容類型,然後您可以「克隆」爲新的內容類型,然後刪除你不想要的各個領域。這將爲您節省時間並防止您的產品內容類型的一致性錯誤。 – James 2011-04-01 12:30:25

相關問題