2010-08-04 69 views
0

是否可以使用CCK向圖像附加模塊表單添加條件除非我選擇了用於內容節點的圖像,否則某些字段不可見?只有當圖像附加圖像時,纔可以使字段可見

目前我沒有任何操作可用於我的內容類型定義中的圖像附加字段,其中configure和remove適用於所有其他字段。

回答

1

這對您的主題來說非常簡單,例如節點foo.tpl.php的內容類型FOO,具有現場「視頻」

<?php if(!empty($field_video[0]['view'])): ?> 
    <div class="block video"> 
    <?php print $field_video[0]['view'] ?> 
    </div> 
    <?php print $field_some_other[0]['view'] ?> 
    <?php print $field_the_other_one[0]['view'] ?> 
<?php endif; ?> 

風格上的一些注意事項和最佳做法:

我喜歡的if/endif模板,其他更喜歡if(){}。技術上差別不大,我認爲elseif;在HTML中更具可讀性。

從技術上講,僅僅打印一個值是不正確的,但應該使用drupal_render()。我個人更喜歡印刷,因爲它的透明度和簡單性。但是,Drupal_render()會註冊它已「渲染」的內容,並允許您在最後使用drupal_render($ node)來渲染所有未渲染的字段;如果您稍後決定添加字段,則無需在每次更改整個模板時使用。 Drupal_render在tpl.php中不可用,但是在預處理中:就像說的那樣,透明度稍差,稍微複雜一些。

不!永遠!打印$ field_foo [0] ['value'],總是['view']部分:第一個是未轉義的,可能(將!)包含XSS注入等。

奇怪的嵌套數組($ field_foo [0] ['value'])是Drupal中多字段選項的結果。一個更好的方法是總是迭代每個字段,而不是隻渲染硬編碼的第一個([0])項。但是,出於可讀性,簡單性和透明性的原因,我更願意在我的模板中對索引進行硬編碼。其他人(理所當然)不同意我的看法。

+0

恕我直言,只要您有把握確保該字段在可預見的將來是單一值,那麼對第一個([0])項進行硬編碼沒有任何問題。用foreach來包裝它會是不成熟的優化(這當然是所有惡意的根源:-))。 – marcvangend 2010-08-05 08:43:05

+0

「,只要你可以合理確信」確實很好。但是,您的網站不應該中斷(例如:trow警告,錯誤,打開sec.holes):) – berkes 2010-08-05 09:32:26