Рендеринг другого макета внутри index.php

#php

#php

Вопрос:

Я перехожу по этой ссылке, чтобы понять базовую структуру веб-приложения PHP, но я не могу понять, как я могу переключаться между различными макетами (статьи, портфолио) через панель навигации?

Ответ №1:

Все разные макеты должны быть похожи index.php .

Изображение, которое у вас есть articles.php и portfolio.php . Там содержимое будет похоже:

Articles.php:

 <?php    
// load up your config file
require_once("/path/to/resources/config.php");

require_once(TEMPLATES_PATH . "/header.php");
?>
<div id="container">
<div id="content">
    <!-- Your article content here!!! -->
</div>
<?php
    require_once(TEMPLATES_PATH . "/rightPanel.php");
?>
</div>
<?php
    require_once(TEMPLATES_PATH . "/footer.php");
?>
  

и portfolio.php:

 <?php    
// load up your config file
require_once("/path/to/resources/config.php");

require_once(TEMPLATES_PATH . "/header.php");
?>
<div id="container">
<div id="content">
    <!-- Your portfolio content here!!! -->
</div>
<?php
    require_once(TEMPLATES_PATH . "/rightPanel.php");
?>
</div>
<?php
    require_once(TEMPLATES_PATH . "/footer.php");
?>
  

Но каждый раз, когда вы добавляете новую страницу, вы должны обновлять свой header.php:

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Simple Site</title>
</head>

<body>
<div id="header">
    <h1>Simple Site</h1>
    <ul class="nav global">
        <li><a href="path_to_index.php">Home</a></li>
        <li><a href="path_to_article.php">Articles</a></li>
        <li><a href="path_to_portfolio.php">Portfolio</a></li>
        <li><a href="path_to_any_other_page.php">Any other page</a></li>
    </ul>

</div>
  

Комментарии:

1. Разве мы не можем просто вызвать index.php при каждой навигации нажимайте и передавайте любую переменную из них (из статьи, portfolio.php ) к индексу, чтобы он мог отображать макет в соответствии с переменной, которую он получает?

2. используя php, вы могли бы. Вы меняете свою ссылку следующим образом: <li><a href=»path_to_index.php?page=article»>Статья</a></li> и на вашей индексной странице: <div id=»content»> if(//страница = статья){//содержимое статьи}else {//содержимое индекса} </div>

Ответ №2:

Это то, чего на самом деле я хотел достичь

 <nav>
    <ul>
        <li><a href="index.php?page=home">Home</a></li>
        <li><a href="index.php?page=projects">Projects</a></li>
        <li><a href="index.php?page=calculator">Calculator</a></li>
        <li><a href="index.php?page=blog">Blog</a></li>
        <li><a href="index.php?page=About">About</a></li>
    </ul>
</nav>
  

Я отправляю переменную страницы в индекс, а затем она соответствующим образом отображает макет таким образом.

 if (isset($_GET["page"])){
    $page=$_GET["page"];
}
else { 
    $page = "home";
}

renderLayoutWithContentFile($page .".php", $variables);