Şablon dosyaları da dahil olmak üzere ve dinamik içlerindeki değişkenleri değiştirerek

5 Cevap php

Hayat kendim için biraz daha kolay hale getirmek için benim projeleri için çok basit bir şablon motoru kurmak istiyorum. Aklımdaki şey ben onları istediğiniz zaman PHP kullanarak bir sayfaya dahil olsun bir dizindeki. Html dosyaları sahip oldu. Yani tipik bir index.php bu gibi görünecektir:

<?php

IncludeHeader("This is the title of the page");
IncludeBody("This is some body content");
IncludeFooter();

?>

Bu satırlar boyunca bir şey, ve sonra benim şablon dosyalarında I olurdu:

<html>
<head>
    <title>{PAGE_TITLE}</title>
</head>
<body>

Ama nasıl işe yapamayacağınız bir şey işlevlerine geçirilen parametre almak ve onunla {PAGE_TITLE} değiştirin.

Herkes bir çözüm ya da bunu yapmak için belki de daha iyi bir yolu var mı? Teşekkürler.

5 Cevap

Şeyleri basit tutmak çıkarları, neden sadece kullanmak değil. Php shorttags ile dosyaları yerine {PAGE_TITLE} veya benzeri?

<html>
<head>
    <title><?=$PAGE_TITLE?></title>
</head>
<body>

Ardından, değişken alanı izole etmek, bu gibi çalışır bir şablon yükleme işlevi oluşturabilirsiniz:

function load_template($path, $vars) {
    extract($vars);
    include($path);
}

$ Değişken isimleri eşit tuşları ve değişken değerlere eşit değerlere sahip bir ilişkisel dizidir vars nerede.

Neden sadece php kullanmak değil?

<html>
<head>
    <title><?=$pageTitle; ?></title>
</head>
<body>

Yapılacak basit şey, bu gibi bir şeydir:

<?php
function IncludeHeader($title)
{
    echo str_replace('{PAGE_TITLE}', $title, file_get_contents('header.html'));
}
?>

Anlasınlar gibi, PHP bir şablon motoru, kendisidir. Söyleniyor, sizin tarif ettiğiniz çiftleşmiş türünü eklemek çeşitli projeler vardır. Eğer araştırmak isteyebilirsiniz biridir Smarty Templates. Ayrıca article SitePoint, genel olarak çiftleşmiş motorları anlatan yayınlanan kontrol etmek isteyebilirsiniz.

Bu bazı çerçeveler kullanmak gördüm hiledir:

// Your function call
myTemplate('header',
    array('pageTitle' => 'My Favorite Page',
          'email' => 'joe@bob.com',
    )
);

// the function
function myTemplate($filename, $variables) {
    extract($variables);
    include($filename);
}

// the template:
<html>
<head>
    <title><?=$pageTitle?></title>
</head>
<body>
    Email me here<a href="mailto:<?=$email?>"><?=$email?></a>
</body>
</html>