2013-12-11 3 views
1

Movable Type 플랫폼을 사용하는 회사의 연락처 양식을 쓰려고합니다. 내가 사용할 페이지 템플릿을 만드는 중입니다. 나는 나의 PHP 코드와 HTML이 테이블에 대해 정확하고 서로를 참조한다는 것을 95 % 확신한다. 이것은 문제의 원인이 아니다. 그러나 MT는 자동으로 PHP를 렌더링하지 않습니다. 대신 모든 PHP 텍스트의 거대한 블록을 얻습니다. html로 렌더링하면됩니다. MT가 PHP를 인식하도록하는 방법을 잘 모르겠습니다. 이 문제를 직접적으로 해결하는 설정이나 아무것도 찾을 수 없습니다. 가장 가까운 MT 도움말/FAQ 영역에서 찾을 수 있습니다 here입니다. 하지만 그들이 제공하는 코드를 사용하여 시도했습니다 <$MTEntryText encode_php="here"$>하지만 그것은 페이지가 렌더링하는 방법에 대해 전혀 바뀌지 않습니다. 아래는 내가 사용하려고하는 PHP이지만, 문제의 원인이라고 생각하지 않습니다. 나는 그것을 대비해서 포함시켜야한다고 생각했다. MT에 대한 태그를 어떻게 지정해야하는지 요점을 놓치고 있습니까? 저는 처음으로 Movable Type 플랫폼에서 작업하고 있으며, 제 3의 ish 시간 동안 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

Movable Type은 그에 따라 처리되는 MT 템플릿 태그를 제외하고는 그대로 텍스트를 템플릿에 출력합니다. 예를 들어

, 당신은 단지 코드가 포함 된 인덱스 템플릿이있는 경우 :

<?php 
<a href="http://blogurl.com">My Blog</a> 
?> 
: 그것은 텍스트를 포함하는 인덱스 템플릿 설정 게시 경로에 파일을 생성합니다

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

게시 된 파일이 일반적으로 .php 파일과 같이 PHP 파서를 통해 실행되는 유형 인 경우 PHP는 사용자 요청시 웹 서버에서만 구문 분석합니다. Movable Type은 게시 할 때 PHP 코드를 건드리지 않으며 MT 템플릿 태그 이외의 다른 코드도 건드리지 않습니다. 나머지는 그대로 출력됩니다.

귀하의 질문에 따르면 위의 코드를 MT 페이지 본문에 넣으려는 것일 수 있으며 페이지 템플릿에 <$MTEntryText encode_php="here"$>과 같은 MT 태그를 사용하고있는 것으로 보입니다. 코드를 입력 할 때 결과 페이지에 나타나는 코드를 설명합니다. 예상대로 나에게 들립니다. 나는 당신이 .html로 끝나는 페이지에서이 PHP를 출력하고있을 가능성이 있습니다. 따라서 PHP가 파싱을하지 않기 때문에 위의 코드를 어디에 입력하는지 정확히 알지 못하고 결과를 생성하는 템플릿의 게시 경로 파일이 있습니다.

이 경우 템플릿 게시 경로의 확장자를 .php으로 변경하면 문제를 해결할 수 있습니다. 또는 템플릿에서 자동으로 시스템 확장 프로그램을 사용하는 경우 블로그 설정 '일반 설정'페이지로 이동하여 '보관 설정'아래의 '파일 확장자'를 php으로 변경해야 할 수 있습니다.

FYI의 encode_php 수정자는 문서 예제 : $the_title = '<$MTEntryTitle encode_php="q"$>'; 에서처럼 PHP 코드에 데이터를 연결할 때 사용하기위한 것입니다. 이것은 실행하려는 코드의 일반적인 출력을 위해 PageBody 또는 EntryBody 태그에 사용하려는 것이 아니며 페이지에 입력 한 코드에서 여러 가지를 벗어날 수 있습니다.

+0

당신은 PHP와 .html 파일 확장자를 넣는 위치를 정확하게 추측했습니다. 나는 일을 그만두려고하지만, 내일은 일을 먼저 시도하고 어떤 일이 일어나는지 살펴볼 것입니다. – ulalu

관련 문제