Php - Как правильно извлечь заголовок / нижний колонтитул из страниц? - PullRequest
2 голосов
/ 02 августа 2011

Будучи новичком в php, я действительно хочу знать, как это достигается.У вас есть верхний и нижний колонтитулы, которые всегда присутствуют на странице, а содержание - это другое.Поэтому, если вы хотите изменить верхний или нижний колонтитул, вам не нужно менять его на каждой странице.

1. include(...)

После прочтения некоторых форумов большинство людей не рекомендуют это и решают эту проблему с помощью шаблонизатора..

2. Template Engines

Я думал, что это будет ответ, но это просто красивый, замаскированный, PHP-код.Я посмотрел, как шаблонизатор может решить начальную проблему;наследование шаблонов.Поэтому после использования шаблонизатора Smarty с наследованием я подумал, что это замечательно, отлично работает и очень легко извлечь код в родительские шаблоны.

Но возникла другая проблема.После написания собственных маленьких фреймворков с помощью smarty я хотел попробовать CodeIgniter и создать приложение.Используемый ими шаблонизатор довольно прост и не рекомендует его.Узнав, что я не могу использовать наследование шаблонов, я решил найти решение проблемы с верхним и нижним колонтитулами, нашел библиотеку, которую можно использовать для достижения наследования, но она построена на уже существующем механизме шаблонов CI, который не предлагаетнеобходимая мне функциональность.

Теперь я застрял и не знаю, что делать.Что вы, ребята, используете, чтобы отделить верхний и нижний колонтитулы от страниц в php?Я, вероятно, написал слишком много, но я хочу знать, как это сделать.Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 02 августа 2011

Если вы используете codeigniter, просто используйте для этого разные представления ..

class Content extends CI_Controller {

   function index()
   {
     $data['title'] = 'This is page one';
     $this->load->view('header', $data);
     $this->load->view('page_one');
     $this->load->view('footer');
   }

   function page_two()
   {
    $data['title'] = 'This is page two';
    $this->load->view('header', $data);
    $this->load->view('page_two');
    $this->load->view('footer');
  }
    //and so on..
}

В header.php вы просто выводите $ title; и вы увидите, что все по-другому, если вы находитесь на первой или второй странице. В любом случае, возможно, вам следует использовать контроллер для каждой страницы, а не метод, как я делал в этом примере, я просто демонстрировал возможность без написания слишком большого количества кода.

Кроме того, вы можете загружать представления внутри представлений, и последние наследуют данные, передаваемые в основное представление. Используя пример выше:

$data['page']['title'] = 'Page one';
$data['foot']['whatever'] = 'Whatever you want';
$this->load->view('page_one', $data);

просмотр page_one.php

  <?php $this->load->view('header', $page); ?>

   <!-- html and php stuff for this page only -->

  <?php $this->load->view('footer', $foot); ?>

В header.php:

<title><?php echo $title; ?></title>

В footer.php:

<p><?php echo $whatever; ?></p>

Header.php и Footer.php - это отдельные «блоки», всего 2 файла, которые вы можете загрузить, где хотите. Это почти так же, как include (), если вы посмотрите на него хорошо. Я знаю, что на самом деле это не шаблонизатор, но иногда шаблонизатор "слишком много" и полезен, если другие непрограммисты портят макеты. Если вы хотели просто разделить части страницы, разбить каждую страницу на блоки, которые вы можете собрать при необходимости, будет проще, чем реализовать Smarty или другие механизмы шаблонов.

0 голосов
/ 05 августа 2011

Code Igniter - как бы вы структурировали этот сайт?

<?php

 class MY_Controller extends CI_Controller {

    function __construct() {
        parent::__construct();
    }

    public function loadView($view) {
        $this->load->view('header');
        $this->load->view($view);
        $this->load->view('footer');
    }
}

и если вам нужно загрузить данные в верхний или нижний колонтитул:

$data["title"] = 'About us';
$this->load->view('header', $data);
0 голосов
/ 02 августа 2011

Может быть, вы можете использовать эту библиотеку шаблонов для Codeigniter . Он немного лучше, чем стандартный движок шаблонов, и действительно прост в использовании . Вы можете установить «регионы» по умолчанию для каждого шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...