2017-06-23 55 views
-2

我想讓html的輸出根據用戶可以設置的參數返回兩個可能的標記。參數text_mode將由用戶通過添加basicadvanced來定義。基於函數中的參數的可變內容

現在,$output被設置爲測試以顯示用戶的字符串被包裝在<p>中的基本版本。如果text_mode設置爲高級,則不包裝。

<?php 
function PCHiddenTextBlock($settings = array()) { 

//---- Get Settings ---- 
//The functions default settings will be merged with what's passed in. 

$settingsDefault = array(
    'small_heading' => '', 
    'text' => '', 
    'text_mode' => 'basic', //or advanced 
    'color_scheme' => 'accent4',//accent4 or accent1 
    'container_id' => '', 
    'container_class' => 'x_extraContent', 
); 

$settings = array_merge($settingsDefault, $settings); 


//---- Set Variables ---- 
//These will allow the markup build up to be as clean as possible. 


//If container_id is set, prepare the attribute 
$has_container_id = strlen($settings['container_id']) > 0; 
$possible_container_id_attribute = ($has_container_id) ? " id='{$settings['container_id']}'" : ""; 

//Color scheme variables 
switch($settings['color_scheme']) { 
    case 'accent1': 
     $gcol_color_class = 'bg-color-accent1-C'; 
       $color_accent_class = 'color-accent1-8'; 
       $hover_color_class = 'hover-color-base-4'; 
     break; 

    default: //accent4 
     $gcol_color_class = 'bg-color-accent4-D'; 
       $color_accent_class = 'color-accent4-A'; 
       $hover_color_class = 'hover-color-base-4'; 
} 


//---- Build Output ---- 
//Line by line, concatenating strings with new line and tab characters. 
$output = "\n<!-- Hidden Text Block -->"; 
$output .= "\n<div class='{$settings['container_class']} gcol-1 {$gcol_color_class}'{$possible_container_id_attribute}>"; 
$output .= "\n\t<div class='padbox-standard-content'>"; 
$output .= "\n\t\t<h2 class='small-heading color-accent1-9'>{$settings['small_heading']}</h2>"; 
$output .= "\n\t\t<p>{$settings['text']}</p>"; // basic version 
$output .= "\n\t\t<a href='' class='x_extraContentClose box-close-icon {$color_accent_class} {$hover_color_class}'></a>"; 
$output .= "\n\t</div><!-- padbox-standard-content-->"; 
$output .= "\n</div><!-- Hiddent Text Block -->"; 

//---- Return Output ---- 
    return $output; 
} 
+0

你懂的URL參數是什麼? – gview

+0

@gview這與它有什麼關係?他正在討論'$ settings'數組中的參數。 – Barmar

+0

這是一個微不足道的問題,看起來好像這是其中一個人試圖改變他們沒有寫和不明白的代碼,但我明白了你的觀點。我專注於問題的第一句話。我很難理解某人如何通過一系列設置,在其中顯示帶有switch語句的代碼,但不知道如果其他人是什麼。 – gview

回答

2

只需使用一個if聲明:

if ($settings['text_mode'] == 'basic') { 
    $output .= "\n\t\t<p>{$settings['text']}</p>"; // basic version 
} else { 
    $output .= "\n\t\t{$settings['text']}<"; // advanced version 
} 
+0

我過度思考它。謝謝 –