Processwire - Template from Scratch: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 2: Zeile 2:
  
 
== Links ==
 
== Links ==
http://modules.processwire.com/
+
* Module: http://modules.processwire.com/
 +
* Cheatsheet für Variablen: http://www.processwire.com/api/cheatsheet
 +
* Variablen erklärt: http://processwire.com/api/variables/
  
 
[[ProcessWire - Snippets]]
 
[[ProcessWire - Snippets]]
Zeile 57: Zeile 59:
  
 
Hinweis: Processwire kann alle möglichen Seiten ausgeben, also auch JSON oder XML
 
Hinweis: Processwire kann alle möglichen Seiten ausgeben, also auch JSON oder XML
=== Seitentemplates - fortgeschrittene Variante ===
+
=== Seitentemplates - delayed output ===
 +
Hierbei werden die Templateinhalte in Einzelschritten geladen:
 +
_init.php -> myTemplate.php -> _main.php
 +
myTemplate.php enthält den spezifischen Seiteninhalt, speichert diesen in Variablen und übergibt das Ganze an _main.php
 +
 
 +
Beispiel:
 +
 
 +
basic-page.php:
 +
<syntaxhighlight lang="php">
 +
<?php
 +
    $content = $page->body . $page->video;
 +
?>
 +
</syntaxhighlight>
 +
_main.php:
 +
<syntaxhighlight lang="php">
 +
<?php
 +
    include("./head.inc");
 +
?>
 +
 +
<div id="page">
 +
    <header class="">
 +
        <a id="logo" href="<?php echo $pages->get('/')->url; ?>">
 +
            <h1>
 +
                <?php echo $pages->get('/')->title; ?>
 +
            </h1>
 +
        </a>
 +
    </header>
 +
    <aside>
 +
        <nav>
 +
            <?php
 +
                // echo nav links
 +
                $children = $pages->get('/')->children;
 +
                foreach($children as $child){     
 +
                    echo '<a name="'.$child->title.'" class="ajax-link'.$class.'" href="'. $child->url .'">'. $child->title .'</a>';
 +
                }
 +
            ?>
 +
        </nav>
 +
    </aside>
 +
    <div class="content-container cf">
 +
        <div class="content current-content">
 +
            <?php
 +
                // add content to page from template file
 +
                echo $content;
 +
            ?>
 +
        </div>
 +
    </div>
 +
<?php
 +
    include("./foot.inc");
 +
?>
 +
</syntaxhighlight>

Version vom 14. Februar 2017, 17:16 Uhr

Wir erstellt man in Processwire ein Template ? So gehts.

Links

ProcessWire - Snippets

Tipp: Module lassen sich unter Module > Neu direkt importieren wenn man den Modulklassennamen angibt.

Processwire installieren

  • Install
    • Installer laufen lassen, als Option Blank Template wählen.
    • Backend Template
      • Reno Modul installieren (ist schon drin, muss nur aktiviert werden)
    • Language Support
      • Language Support Module installieren
      • Language in Setup anlegen (German)
      • Language Pack für Core hochladen

Wichtige Module installieren

  • Markup Simple Navigation Modul installieren (Klassenname: MarkupSimpleNavigation)

Template / Theme erstellen

Basisstruktur im Templateordner

Diese ist schon angelegt, wenn man das blank Template am Anfang auswählt.

/scripts
/styles
/errors 
home.php
basic-page.php 
admin.php

Seitentemplates anlegen - einfache Variante

Ein Template kann z.b. so aussehen:

basic-page.php

<?php include('./head.inc'); // include header markup ?>
<h1><?php echo $page->title; ?></h1>
<?php include('./foot.inc'); // include footer markup ?>

head.inc

<!DOCTYPE html>
<html lang="en">
<head>
    <title><?php echo $page->title; ?></title>
</head>
<body>

foot.inc

</body>
</html>

Im Backend kann man unter Setup > Templates neue Templates anlegen, die man dann wiederum Seiten zuweisen kann. Processwire sucht dann im Templatesverzeichnis nach dem passenden Dateinamen.

Hinweis: Processwire kann alle möglichen Seiten ausgeben, also auch JSON oder XML

Seitentemplates - delayed output

Hierbei werden die Templateinhalte in Einzelschritten geladen:

_init.php -> myTemplate.php -> _main.php

myTemplate.php enthält den spezifischen Seiteninhalt, speichert diesen in Variablen und übergibt das Ganze an _main.php

Beispiel:

basic-page.php:

<?php
    $content = $page->body . $page->video;
?>

_main.php:

<?php
    include("./head.inc");
?>
 
<div id="page">
    <header class="">
        <a id="logo" href="<?php echo $pages->get('/')->url; ?>">
            <h1>
                <?php echo $pages->get('/')->title; ?>
            </h1>
        </a>
    </header>
    <aside>
        <nav>
            <?php
                // echo nav links
                $children = $pages->get('/')->children;
                foreach($children as $child){       
                    echo '<a name="'.$child->title.'" class="ajax-link'.$class.'" href="'. $child->url .'">'. $child->title .'</a>';
                }
            ?>
        </nav>
    </aside>
    <div class="content-container cf">
        <div class="content current-content">
            <?php
                // add content to page from template file
                echo $content;
            ?>
        </div>
    </div>
<?php
    include("./foot.inc");
?>