У меня вопрос по поводу шаблона HTML. Я создал функцию шаблона, которая заменяет маркеры в шаблоне HTML содержимым из базы данных.
/***********************************************************
* TemplateGenerator will match markers in a defined html
* template and replace them with corresponding data
* i.e. ###MARKER_1### in html template will be replaced
* with data in the ###MARKER_1### array key defined
* in GetMarkers function.
*
* @param string | The html template
* The template can contain all the html the
* layout needs - matched markers will be replaced.
************************************************************/
public static function TemplateGenerator($template) {
/* Get content from the html template */
$data = file_get_contents($template);
if(isset(self::$newmarkers)) {
/**************************************************
* Match each key in $this->markers array
* and replace with the correct value
***************************************************/
foreach(self::$newmarkers as $key => $value) {
if(preg_match("/". preg_quote($key) ."/", $data, $matches)) {
$data = str_replace($key, $value, $data);
} else {
$data = $data;
}
}
return $data;
} else {
if(!empty($data)) {
echo $data;
} else {
die("Der er sket en fejl med genereringen af siden");
}
}
}
Я использую эту функцию в phpприложение для рассылки новостей ... Это работает почти идеально, но когда я создал приложение, я не учел возможность редактирования письма (почему, я не знаю).
У меня есть шаблон HTML (standard.html) с полями ввода для создания новостной рассылки.
<h1 style="background-image: url(gfx/icons/new.png); background-position: left; background-repeat: no-repeat;">Opret nyhedsbrev - ###THETMP###</h1>
<form action="index.php?page=create" method="post" enctype="multipart/form-data">
<label for="letter_headline">Overskrift:</label> <input type="text" name="letter_headline" id="letter_headline" value="" /><br />
<label>Modtagere: </label> <select name="recievers[]" multiple="multiple" size="5">###RECS###</select><br />
<label>Billede</label> <input type="file" name="letter_image[0]" id="letter_image" value="" /><br />
<label for="letter_content">Indhold</label> <textarea name="letter_content" id="letter_content" cols="50" rows="15"></textarea><br />
<label for="letter_link">Link</label> <input type="text" name="letter_link" id="letter_link" value="" /><br />
<label for="letter_link_txt">Linktekst</label> <input type="text" name="letter_link_txt" id="letter_link_txt" value="" /><br />
<input type="hidden" name="template_to_use" value="standard.html" />
<input type="submit" value="Opret nyhedsbrev" name="create" />
</form>
Когда я выбираю, что хочу создать стандартную новостную рассылку, функция TemplateGenerator выведет этот шаблон с т. е. списком получателей в маркере ###RECS ###.
У меня есть таблица с именем newsletter_fields, в которой есть следующие столбцы:
field_uid |поле_имя |field_content
где field_name будет содержать имя поля ввода, т. е. letter_headline, а field_content будет иметь содержимое, которое было записано в поле ввода при создании письма, т.е. «Это заголовок».
У меня вопрос, могу ли я использовать тот же HTML-файл в функции editletter, который заменит только value=""
в полях ввода, например, value="This is a headline"
во вводе letter_headline.