Добавить динамический контент в шаблон в коде воспламенителя - PullRequest
2 голосов
/ 29 марта 2011

Я пытаюсь преобразовать файл HTML / CSS в шаблон.Я попросил помощи, но я не получил никаких предложений в этом посте, но попытался найти способ создать шаблон.У меня мало глюков при этом.В моем контроллере есть файл main.php, который является главной страницей веб-сайта, и я зарегистрировался там, где верхний и нижний колонтитулы и остальные элементы остались прежними, за исключением того, что основной контент изменяется при загрузке страницы.

У меня есть следующеешаблон в папке представлений:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
   <title><?= $title ?></title>

   <style type="text/css"  >
       @import url('<?=base_url()?>/includes/front.css');
       @import url('<?=base_url()?>/images/');
   </style>

</head>
<body>
   <div id="container">
       <div id="header">
            <?= $logo ?> <!--This is an image tag to display the image on the template -->
            <?= $topnav ?>
       </div>

       <div id="menubar">
            <?= $menulist ?>
       </div>

       <div id="maincontent">
           <?= $flashcontent ?>
           <?= $resources ?>
           <?= $registerForm ?>
       </div>

       <div id="footer">
           <div>
               <?= $footertable1 ?>
           </div>
       </div>
   </div>
</body>
</html>

В

div id = maincontent

Это тег div, который будет изменяться присайт загружается.В свой шаблон я включил <</p>

<?= $flashcontent ?> <?= $resource ?> and  <?= registerForm ?>

. Предполагается, что flashcontent и ресурсы находятся на главной странице, а registerForm должен отображаться, когда я нажимаю на register на главной странице.Я читал руководство пользователя шаблона в воспламенителе кода, но не могу понять, как сделать это динамичным.Пожалуйста, помогите мне решить эту проблему.

Это файл template.php в папке конфигурации.

$template['active_group'] = 'default';
$template['default']['template'] = 'template.php';
$template['default']['regions'] = array(
   'title',
   'logo' => array(
        'content' => array(''),
        'name' => 'Logo',
        'wrapper' => '<img>',
        'attributes' => array('id' => 'logo')
    ),
    'topnav' => array(
        'content' => array(),
        'name' => 'Topnav',
        'wrapper' => '<div>',
        'attributes' => array('id' => 'topnav', 'class' => 'topnav')
    ),
    'menulist' => array(
        'content' => array('<li>
                            <a href="#"> Home </a>
                            <a href="#"> Generator </a>
                            <a href="#"> News </a>
                            <a href="#"> Forum </a>
                            <a href="#"> About </a>
                            <a href="#"> Feedback </a>
                            </li>'),
        'name' => 'Menulist',
        'wrapper' => '<ul>',
        'attributes' => array('class' => 'menulist')
    ),
   'flashcontent' => array(
       'content' => array(''),
       'name' => 'Flashcontent',
       'wrapper' => '<div>',
       'attributes' => array('id' => 'flashcontent')
   ),
    'resources' => array(
       'content' => array(''),
       'name' => 'Resources',
       'wrapper' => '<div>',
       'attributes' => array('id' => 'resources')
   ),
    'registerForm' => array(
      'content' => array(),
        'name' => 'Registerform',
        'wrapper' => '<div>',
        'attributes' => array('id' => 'registerForm')
    ),
   'footertable1' => array(
       'content' => array('<ul> 
                            <li> <a href="../main">Home</a>
                            <a href="#">News & Events</a>
                            <a href="#">Forum</a>
                            <a href="#">About us</a>
                            <a href="#">Contact us</a>
                            <a href="#">Terms of use</a>
                            <a href="#">Privacy policy</a>
                            <a href="#">Site map</a>
                            </li>
                           </ul>'),
       'name' => '',
       'wrapper' => '<div>',
       'attributes' => array('id' => 'footertable1')
   )
);
$template['default']['parser'] = 'parser';
$template['default']['parser_method'] = 'parse';
$template['default']['parse_template'] = FALSE;

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 29 марта 2011

Вы используете CMS или пользовательскую базу данных? Откуда берутся динамические элементы?

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

Над вашим html:

<?php
$logosrc="mylogo.gif";
?>

Тогда в вашем html:

<img src='<? echo $logosrc;?>' />
2 голосов
/ 29 марта 2011

Похоже, вы работаете с Библиотека шаблонов Колина Уильямса .

Я не слишком много смотрел на это, но прочитал @ http://williamsconcepts.com/ci/codeigniter/libraries/template/reference.html#manipulation

$this->template->add_region($name, $settings = array())

Метод add_region () позволяет динамически добавлять регионы для пишу. Как минимум, $ name должно быть поставляется для определения региона. При желании массив $ settings может быть передается для предоставления содержимого по умолчанию, обертки и атрибуты.

$this->template->add_region('flash');
$this->template->write_view('flash', 'some_flash');    
$this->template->add_region('login');
$this->template->write_view('login', 'some_login');

Редактировать

(Опять же, если вы используете библиотеку шаблонов, я так думаю),

В вашем шаблоне есть регион content. У вас есть представление под названием registerForm, которое содержит только форму.

В вашем controller method для регистрации вы просто должны сделать:

$this->template->write_view('content', 'registerForm');

Библиотека загрузит содержимое представления registerForm в область content.

Очевидно, что у вас может быть столько регионов, сколько вам нужно, но библиотека шаблонов позволяет вам определить область (регион), в которой вы хотите показывать любой контент, а затем выводить HTML или представления непосредственно в регион.

Либо я неправильно понимаю, но не думаю, что смогу объяснить это намного проще, чем это. Документы тоже неплохие.

Редактировать второй

Вот пример метода из проекта, который я делал недавно, используя эту библиотеку.

class Welcome extends Controller {

    function __construct()
    {
        parent::__construct();
        $this->template->set_template('my_template'); 
        // as defined in config/template.php    
    }

    function index()
    {
        $this->template->write('title', 'This is my $title region');

            // here I am writing some views to my regions $content and $sidebar
        // content/home-page-view is just a view containing text.

        $this->template->write_view('content', 'content/home-page-view');
        $this->template->write_view('sidebar', 'sidebar/home-page-sidebar');

        // lets go..
        $this->template->render();
    }

теперь, когда я получаю доступ к mysite.com/welcome/index, мой HTML-шаблон будет отображаться с содержимым, которое я написал в методе.

Мой HTML-шаблон выглядит примерно так:

<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<?php echo $content; ?>

<?php echo $sidebar; ?>
</body>
</html>

Мой файл config / template.php выглядит так:

$template['default']['template'] = 'template/master';
$template['default']['regions'] = array(
    'title',
    'content',
    'sidebar'
    );
$template['default']['parser'] = 'parser';
$template['default']['parser_method'] = 'parse';
$template['default']['parse_template'] = FALSE;

template/master относится к файлу в моей папке представлений (template / master.php), который содержит мой макет (как указано выше).

0 голосов
/ 29 марта 2011
  1. Используйте uri_segment для управления динамическим контентом.
    В вашем main.php:

    <?php
    //...
    $template['registerForm'] = '';
    if($this->uri->segment(1) === false) {
        $template['registerForm'] = $this->load->view('form/registration');
    }
    //...
    ?>
    
  2. Используйте JavaScript для загрузки новой страницы, когдащелкнул.Создайте простую функцию в main.php просто для загрузки этого шаблона формы и показа этой формы через ajax.

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