Создание шаблонов для Coffee CMS

В этой статье рассмотрены 3 способа создания шаблонов. От самого простого, до самого гибкого. Если у вас на сайте все страницы одинаковы, то выбирайте первый. Если есть несколько типов страниц, но они не сильно разнятся - второй. Если требуется полностью индивидуализировать каждый тип страниц - третий.

Самый простой шаблон

1. В папке .cms создайте папку с названием вашего шаблона MyTemplate1.

2. В папке MyTemplate1 создайте файл html.php:

<html>
    <head>
        <meta charset=utf-8>
    </head>

    <body>
        <?php echo $cms["page"]["text"]; ?>
    </body>
</html>

С несколькими подшаблонами

1. В папке .cms создайте папку с названием вашего шаблона MyTemplate2.

2. В папке MyTemplate2 создайте основной файл шаблона html.php:

<html>
    <head>
        <meta charset=utf-8>
    </head>

    <body>
        <?php include( "html-" . $cms["page"]["tpl"] . ".php" ); ?>
    </body>
</html>

3. В папке MyTemplate2 создайте файл подшаблона html-page.php:

<?php echo $cms["page"]["text"]; ?>

4. В папке MyTemplate2 создайте файл следующего подшаблона html-page2.php:

<?php echo $cms["page"]["text"]; ?>

Создание шаблона с максимальной гибкостью

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

1. В папке .cms создайте папку с названием вашего шаблона MyTemplate3.

2. В папке MyTemplate3 создайте основной файл шаблона html.php:

<?php 
    $f = __DIR__ . "/html-" . $cms["page"]["tpl"] . ".php";
    if ( file_exists( $f ) ) include( $f );
?>

3. В папке MyTemplate3 создайте файлы подшаблонов html-page.php и html-page2.php

<html>
    <head>
        <meta charset=utf-8>
    </head>

    <body>
        <?php echo $cms["page"]["text"]; ?>
    </body>
</html>

Теперь вы можете индивидуализировать каждый подшаблон целиком, до неузнаваемости меняя вид сайта на разных страницах. Это может пригодиться когда вы делаете лендинги и хотите убрать все лишнее.

Вывод переменных

Для того, чтобы вывести в шаблоне заголовок страницы (title), описание страницы (description) и т.д., используйте заготовки кода расположенного ниже.

Язык

<html lang="<?php echo $cms["config"]["lang"]; ?>">

Title (SEO Title)

<title><?php if ( ! empty( $cms["page"]["seo_title"] ) ) { print $cms["page"]["seo_title"]; } else { print $cms["page"]["title"]; } ?></title>

Description

<?php if ( ! empty( $cms["page"]["description"] ) ) { echo '<meta name="description" content="' . htmlspecialchars( $cms["page"]["description"] ) . '">'; } ?>

Canonical

<link rel="canonical" href="<?php print $cms["url"]["scheme"] . "://" . $cms["url"]["host"] . $cms["page"]["url"]; ?>">

Встроить стили прямо в страницу

<style type="text/css"><?php include( __DIR__ . "/style.css" ); ?></style>

Вывод заголовка страницы

<h1><?php echo $cms["page"]["title"]; ?></h1>

Вывод содержимого страницы

<?php echo $cms["page"]["text"]; ?>

Счётчики в подвале сайта

<?php echo $cms["config"]["template.mod.php"]["scripts"]; ?>

Дата создания страницы

<?php echo date( "d.m.Y H:i", strtotime( $cms["page"]["created"] ) ); ?>

Дата изменения страницы

<?php echo date( "d.m.Y H:i", (int) $cms["page"]["modified"] ); ?>

Ошибка 404. Вместо простого echo $cms["page"]["text"]; поставьте следующее:

<?php
    if ( $cms["status"] == 404 ) {
        if ( ! empty( $cms["page"]["text"] ) && is_admin() ) {
            echo $cms["page"]["text"];
        } else {
            echo "<h1>404 Not found</h1>";
        }
    } else {
		echo $cms["page"]["text"];
    }
?>

Вывод и регистрация меню

Вывод меню зарегистрированных в области header, aside, footer.

<?php echo menu( "header" ); ?>
<?php echo menu( "aside" ); ?>
<?php echo menu( "footer" ); ?>

Вы можете зарегистрировать свои собственные области меню. Для этого создайте файл settings.php в папке шаблона:

<?php
$cms["menu_areas"]["header"]   = array( "title" => "Верхнее" );
$cms["menu_areas"]["footer"]   = array( "title" => "Нижнее" );
$cms["menu_areas"]["side"]     = array( "title" => "Боковое" );

Более сложные примеры можно подсмотреть в шаблоне mini, который идет в стандартной поставке.

Комментировать