2012-09-17 147 views
0

我在我的網站前端創建了一個表單,允許註冊成員發佈帖子而不需要訪問管理CP但是我想隱藏特定的表單元素輸出。使用ExpressionEngine safecracker隱藏表單字段

我們想要隱藏的元素是一個tickbox,它允許一個只有管理員才能看到的項目。這可能使用自動化表單輸出嗎?我已經使用了以下的防盜代碼:

{global_errors}{error}{/global_errors} 

<label for="title">Title</label> 
<input type="text" name="title" id="title" value="{title}" size="50" maxlength="100"   onkeyup="liveUrlTitle();"> 

{status_menu} 
    <label for="status">Status</label> 
    <select name="status" id="status"> 
    {select_options} 
    </select> 
{/status_menu} 

{custom_fields} 

    <p><label for="{field_name}">{if required}* {/if}{field_label}</label> 
    {field_instructions} 
    {formatting_buttons} 

    {if error} 
    <span class="error">{error}</span> 
    {/if} 
    {if textarea} 
    <textarea id="{field_name}" name="{field_name}" dir="{text_direction}" rows="{rows}">{field_data}</textarea> 
    {/if} 
    {if text} 
    <input type="text" dir="{text_direction}" id="{field_name}" name="{field_name}" value="{field_data}" maxlength="{maxlength}" size="50"> 
    {/if} 
    {if select} 
    <select id="{field_name}" name="{field_name}"> 
     {options}<option value="{option_value}"{selected}>{option_name}</option>{/options} 
    </select> 
    {/if} 
    {if date} 
    <input type="text" id="{field_name}" name="{field_name}" value="{field_data}" size="50"> 
    {/if} 
    {if checkbox} 
    {options} 
     <label class="checkbox">{option_value} 
     <input type="checkbox" id="{field_name}" name="{field_name}[]" value="{option_value}"{checked}> 
     </label> 
    {/options} 
    {/if} 
    {if radio} 
    {options} 
     <label class="checkbox">{option_value} 
     <input type="radio" id="{field_name}" name="{field_name}" value="{option_value}" {checked}> 
     </label> 
    {/options} 
    {/if} 
    {if safecracker_file} 
    {display_field} 
    {/if} 
    {if relationship} 
    <select id="{field_name}" name="{field_name}"> 
     {options} 
     <option value="{option_value}"{selected}>{option_name}</option> 
     {/options} 
    </select> 
    {/if} 
    {if multiselect} 
    <select id="{field_name}" name="{field_name}[]" multiple="multiple"> 
     {options} 
     <option value="{option_value}"{selected}>{option_name}</option> 
     {/options} 
    </select> 
    {/if} 
    {if rte} 
    <textarea id="{field_name}" class="rte" name="{field_name}" dir="{text_direction}" rows="{rows}">{field_data}</textarea> 
    {/if} 
</p> 
{/custom_fields} 
<input type="submit" name="submit" value="Submit"> 

回答

3

您可能會丟失{custom_fields}循環並硬編碼所有字段。

或者你可以@ unexplainedBacn計劃擴大並增加一個測試爲field_name,以及member_group - 否則你隱藏所有複選框。

{if checkbox} 
    {if field_name == 'field_to_hide' && logged_in_group_id == 1} 
    {options} 
     <label class="checkbox">{option_value} 
     <input type="checkbox" id="{field_name}" name="{field_name}[]" value="{option_value}"{checked}> 
     </label> 
    {/options} 
    {if:elseif field_name != 'field_to_hide'} 
    {options} 
     <label class="checkbox">{option_value} 
     <input type="checkbox" id="{field_name}" name="{field_name}[]" value="{option_value}"{checked}> 
     </label> 
    {/options} 
    {/if} 
{/if} 
0

我不相信那是你自己可以做的事情。

你可以包裝的複選框在有條件的,檢查組管理員組的ID(或組):

{if logged_in_group_id == 1} 
    <input type="checkbox" [...] /> 
{/if} 

或者類似的東西,如果你有兩個「管理員」組中的以下內容:

{if logged_in_group_id == 1 || logged_in_group_id == 7} 
    <input type="checkbox" [...] /> 
{/if} 

的具體值將取決於用戶組的ID號(成員>成員組在CP)。