Templates für unsere auf ProcessWire basierende Vereins-Homepage
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

121 lines
3.5 KiB

<?php namespace ProcessWire;
require_once("./styles/remixicon.php");
/**
* Shared functions used by template files
* This file is included by _init.php
*
* For more information see README.txt
*
*/
function title() {
return page()->get("headline|title");
}
/**
* Given a group of pages, render a simple <ul> navigation
*
* This is here to demonstrate an example of a simple shared function.
* Usage is completely optional.
*
* @param PageArray $items
* @return string
*
*/
function renderNav(PageArray $items) {
// $out is where we store the markup we are creating in this function
$out = '';
// cycle through all the items
foreach($items as $item) {
// render markup for each navigation item as an <li>
if($item->id == wire('page')->id) {
// if current item is the same as the page being viewed, add a "current" class to it
$out .= "<li class='current'>";
} else {
// otherwise just a regular list item
$out .= "<li>";
}
// markup for the link
$out .= "<a href='$item->url'>$item->title</a> ";
// if the item has summary text, include that too
if($item->summary) $out .= "<div class='summary'>$item->summary</div>";
// close the list item
$out .= "</li>";
}
// if output was generated above, wrap it in a <ul>
if($out) $out = "<ul class='nav'>$out</ul>\n";
// return the markup we generated above
return $out;
}
/**
* Given a group of pages, render a <ul> navigation tree
*
* This is here to demonstrate an example of a more intermediate level
* shared function and usage is completely optional. This is very similar to
* the renderNav() function above except that it can output more than one
* level of navigation (recursively) and can include other fields in the output.
*
* @param array|PageArray $items
* @param int $maxDepth How many levels of navigation below current should it go?
* @param string $fieldNames Any extra field names to display (separate multiple fields with a space)
* @param string $class CSS class name for containing <ul>
* @return string
*
*/
function renderNavTree($items, $maxDepth = 0, $fieldNames = '', $class = 'nav') {
// if we were given a single Page rather than a group of them, we'll pretend they
// gave us a group of them (a group/array of 1)
if($items instanceof Page) $items = array($items);
// $out is where we store the markup we are creating in this function
$out = '';
// cycle through all the items
foreach($items as $item) {
// markup for the list item...
// if current item is the same as the page being viewed, add a "current" class to it
$out .= $item->id == wire('page')->id ? "<li class='current'>" : "<li>";
// markup for the link
$out .= "<a href='$item->url'>$item->title</a>";
// if there are extra field names specified, render markup for each one in a <div>
// having a class name the same as the field name
if($fieldNames) foreach(explode(' ', $fieldNames) as $fieldName) {
$value = $item->get($fieldName);
if($value) $out .= " <div class='$fieldName'>$value</div>";
}
// if the item has children and we're allowed to output tree navigation (maxDepth)
// then call this same function again for the item's children
if($item->hasChildren() && $maxDepth) {
if($class == 'nav') $class = 'nav nav-tree';
$out .= renderNavTree($item->children, $maxDepth-1, $fieldNames, $class);
}
// close the list item
$out .= "</li>";
}
// if output was generated above, wrap it in a <ul>
if($out) $out = "<ul class='$class'>$out</ul>\n";
// return the markup we generated above
return $out;
}