Какова лучшая практика замены заполнителей на HTML-странице без использования smarty и т. Д.? - PullRequest
0 голосов
/ 05 октября 2010

Ниже приведен базовый пример того, что я сделал.

Получение HTML-шаблона

$template = file_get_contents("skins/".CSS_URL."/layouts/homepage.html");

Создание массива элементов для поиска

$search = array("|{THUMB_FEATURED_IMAGE}|", "|{LARGE_FEATURED_IMAGE}|", "|{PAGE_CONTENT}|");

Создание массиваэлементов для замены искомого на

$replace = array($featured_image, $featured_image_l, $content);

Выполнить фактическую замену

$output = preg_replace($search, $replace, $template);

Затем повторить вывод.

Это плохая практика и / или есть лилучший способ без необходимости переписывать всю мою CMS с помощью Smarty?

Ответы [ 3 ]

2 голосов
/ 05 октября 2010

Я бы сказал, что это не очень страшно, хотя это не очень благоприятно для ресурсов, потому что вы эффективно вытягиваете контент дважды.

Было бы просто иметь теги PHP внутри шаблона <?php echo $featured_image; ?> и включать файл шаблона с использованием include(), не намного ли намного проще?

0 голосов
/ 20 апреля 2018

Это старая тема, но для тех, кто может увидеть это. Хотя я не уверен, что это лучший метод, я всегда возвращал заполнители include и анализировал их через массив.

<?php //page.php
$html = "<html>
              <head>
                  <title>{PageTitle}<title>
              </head>
             ...
        </html>";
return $html;

тогда просто

  function parseHTML($pageContents, $placeholders){
        foreach($placeholders as $placeholder=>$value){
             str_replace("\{{$placeholder}\}",$value,$pageContents);
        }
        return $pageContents;
  }


$placeholders = ['PageTitle'=>'This is my page title'];

$pageContents = include "page.php";

$parsedHTML = parseHTML($pageContents, $placeholder);

вывод будет выглядеть как

        <html>
              <head>
                  <title>This is my page title<title>
              </head>
             ...
        </html>

Как я уже сказал, я не на 100% уверен, насколько это эффективно. Я использую его, потому что большинство моих проектов довольно маленькие.

0 голосов
/ 05 октября 2010

Я думаю, что лучший ответ - использовать переменные PHP. Затем вы просто включаете свой «шаблонный» файл, и в нем есть обычные переменные.

Если вы действительно хотите попробовать то, что делаете. Вам лучше использовать реальный HTML-парсер. Это, вероятно, будет быстрее и намного менее подвержено ошибкам. Хотя для его реализации, вероятно, потребуется столько же времени, сколько и для внедрения Smarty.

...