Hallo,
vielleicht gibt es sowas ja schon, aber ich habe vor einiger Zeit das Problem gehabt, dass ich statisch auf jeder Seite den Inhalt einer bestimmten versteckten Seite haben wollte. Hatte eine versteckte Page namens "Sidebar", in der ich einen Flash-Musikplayer eingebunden hatte, dann noch einige Sections an Text mit WYSIWYG usw. Habe mir dann eine Funktion geschrieben, der ich den Namen der Seite übergebe und einen Spacer, und dann gibt er mir nach der Reihe alle Sections dieser Seite aus, getrennt mit dem Spacer, vielleicht nützt die ja jemandem was. Mit einem optionalen Array $positions kann man nur spezielle Sections ausgeben, so wie sie in der Reihenfolge im Backend auf der Seite angeordnet sind. Dies geht nicht nach section_id, sondern ausschließlich nach der Position.
Funktion section_content($page_title, [$spacer], [array $positions]), einfügen in frontend.functions.
php
if (!function_exists('section_content')) {
function section_content($page_title, $spacer = '', array $positions = null)
{
global $database;
global $wb;
# Get ID of the page
$id_query = "
SELECT pages.page_id
FROM pages
WHERE pages.page_title = '$page_title';
";
$page_id = $database->get_one($id_query);
# List all sections of the page and fill array with information
$section_query = "
SELECT *
FROM sections
WHERE sections.page_id = '$page_id'
";
$section_array = $database->get_all($section_query);
# Kick out every content which position-number is not in the positionsarray
if ($positions != null)
{
for ($i = 0; $i < count($section_array); $i++)
{
$contains = false;
for ($j = 0; $j < count($positions); $j++)
{
if ($section_array[$j]['position'] == $positions[$i])
{
$contains = true;
}
}
if ($contains == false)
{
unset($section_array[$i]);
$section_array = array_values($section_array);
}
}
}
# Reverses the array, now the it's in the correct order like it is in WB
$section_array = array_reverse($section_array);
# go through the array and execute the view.php file in the module folder
foreach ($section_array as $section)
{
$section_id = $section['section_id'];
# WB_PATH includes \, but we need / -> replace it!
$wb_path_replaced = str_replace("'\'", '/', WB_PATH);
include ($wb_path_replaced . "/modules/{$section['module']}/view.php");
# Spacer between every single section | Default is an empty string ''
echo $spacer;
}
}
}
In dieser Funktion wird eine euch warscheinlich unbekannte Funktion der DB-Klasse aufgerufen, get_all($query). Diese Funktion holt Datensätze aus der Datenbank und hängt sie als Arrays an ein großes Array an, so spart man sich dieses
while ($row = mysql_fetch_assoc($this->result))
. Wäre auch cool, wenn diese oder eine ähnliche Funktion in späteren Veröffentlichungen implementiert werden würde.
Funktion get_all($statement), einfügen in class.database.php als Methode der Database-Klasse:
function get_all($statement)
{
$mysql = new mysql();
$result = $mysql->query($statement);
if ($mysql->error())
{
die ($mysql->error());
}
else
{
$array = array();
while ($row = mysql_fetch_assoc($mysql->result))
{
$array[] = $row;
}
return $array;
}
}
Im Template jetzt nur noch an der bestimmten Stelle wo man die Seite ausgeben will folgendes schreiben:
echo @section_content("Seitenname");
Das @ vor der Funktion soll nur verhindern, dass Im Falle, dass die Seite nicht existiert oder kein Content vorhanden ist, eine Fehlermeldung ausspuckt. So bleibt der Bereich einfach leer.
Schon hat man auf jeder Seite den Inhalt einer speziellen Seite

Wenns Fragen oder Probleme gibt, einfach melden.
Lg