2013-12-11 3 views
1

Я пытаюсь написать контактную форму для компании, использующей платформу Movable Type. Я в процессе создания шаблонов страниц для них. Я на 95% уверен, что мой PHP-код и мой html верны для таблицы и ссылаются друг на друга - это не является источником проблемы. Однако MT не автоматически обрабатывает php. Вместо этого я получаю огромный блок всего моего php-текста. HTML-код просто отлично. Я не уверен, как заставить MT распознавать php. Я не могу найти настройки или что-то, что непосредственно решает эту проблему. Самый близкий, который я могу найти в области помощи/области MT, - here. Но я пробовал использовать код, который они предоставляют <$MTEntryText encode_php="here"$>, но он абсолютно ничего не меняет о том, как отображается страница. Ниже приведен php, который я пытаюсь использовать, но я не думаю, что это источник проблемы. Я подумал, что я должен включить его на всякий случай. Я просто не могу понять, как мне нужно пометить вещи для MT? Я впервые работаю над платформой Movable Type, и с php для третьего времени, поэтому, пожалуйста, не стесняйтесь говорить со мной, как будто я младенец, когда объясняю, что мне не хватает.php-код в шаблонах страниц подвижного типа

<?php 

if(isset($_POST['email'])) {  

    // EDIT THE 2 LINES BELOW AS REQUIRED 

    $email_to = "[email protected]"; 

    $email_subject = "Web Contact Response"; 

    function died($error) { 

     echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
    } 


    // validation expected data exists 

    if(!isset($_POST['name']) || 
     !isset($_POST['email']) || 
     !isset($_POST['telephone']) || 
     !isset($_POST['comments'])) { 

     died('We are sorry, but there appears to be a problem with the form you submitted.');  
    } 

    $name = $_POST['name']; // required 
    $email_from = $_POST['email']; // required 
    $telephone = $_POST['telephone']; // not required 
    $comments = $_POST['comments']; // not required 



    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    if(!preg_match($email_exp,$email_from)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 

    $string_exp = "/^[A-Za-z .'-]+$/"; 
    if(!preg_match($string_exp,$first_name)) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 

    if(!preg_match($string_exp,$last_name)) { 
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 
    } 

    if(strlen($comments) < 2) { 
    $error_message .= 'The Comments you entered do not appear to be valid.<br />'; 
    } 

    if(strlen($error_message) > 0) { 
    died($error_message); 
    } 

    $email_message = "Form details below.\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

    $email_message .= "Name: ".clean_string($name)."\n"; 
    $email_message .= "Email: ".clean_string($email_from)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
    $email_message .= "Comments: ".clean_string($comments)."\n"; 

// create email headers 
$headers = 'From: '.$email_from."\r\n". 
'Reply-To: '.$email_from."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers); 
?> 

Thank you for contacting us. We will be in touch with you very soon. 
<?php 
} 
?> 

ответ

3

Подвижный тип выводит текст в шаблонах дословно, за исключением тегов шаблонов MT, которые обрабатываются соответствующим образом.

Например, если у вас есть индексной шаблон, который содержит только код:

<?php 
<a href="<$mt:BlogURL$>"><$mt:BlogName$></a> 
?> 

Он будет генерировать файл на пути издательского набора для этого шаблона индекса, содержащего текст:

<?php 
<a href="http://blogurl.com">My Blog</a> 
?> 

PHP будет обрабатываться только веб-сервером по запросу пользователя файла, если опубликованный файл является типом, который обычно запускается через парсер PHP, например файл .php. Movable Type не касается какого-либо кода PHP при его публикации и не затрагивает ничего, кроме тэгов шаблонов MT. Остальное просто выводится как есть.

Основываясь на вашем вопросе, кажется, вы пытаетесь поместить свой выше код в тело MT-страницы и используете тег MT, например <$MTEntryText encode_php="here"$>, на шаблоне страницы. Вы описываете код как появляющийся на результирующей странице, когда вы ввели его, что звучит для меня, как ожидалось. Я предполагаю, что вы можете выводить этот PHP на странице, которая заканчивается на .html, и поэтому PHP не разбирается, но я не могу быть уверен, не зная, где именно вы вводите вышеуказанный код, и каков путь публикации шаблона, который генерирует результат файл есть.

Если это так, вы можете решить проблему, просто изменив расширение пути публикации шаблона до .php. Или, если ваши шаблоны автоматически используют расширение системы, вам может потребоваться перейти на страницу настроек «Общие настройки» блога и изменить «Расширение файла» в разделе «Настройки архива» на php.

Just FYI, модификатор encode_php предназначен для использования при подключении данных к PHP-коду, как показано на примере документации: $the_title = '<$MTEntryTitle encode_php="q"$>';. Это не предназначено для использования в теге PageBody или EntryBody для общего вывода кода, который вы собираетесь запускать, так как это может закончиться тем, что вы можете избежать различных вещей в коде, введенном вами на странице.

+0

Вы правильно поняли, где я размещаю php, и расширение файла .html. Я собираюсь оставить работу, но завтра я попытаюсь исправить первое, и посмотрим, что произойдет. – ulalu