Überspringen zu Hauptinhalt
Wir erstellen Ihnen unverbindlich einen Entwurf kontaktieren Sie uns 040 23553741

Superfish Menu in Phpwcms einbinden

Das Superfish-Menü ist eines der beliebtesten JQuery basierten Menü-Skripte. Mit diesem kleinen Frotnend Render Add-On lässt es sich einfach in Phpwcms verwenden.

Superfish unterstützt die beliebtesten und meistgewünschten Menü-Funktionen wie fade-in, Schlag-Schatten etc. und ist vor allem auch Touch-Geräte geeignet. In den meisten Projekten geifen wir daher auf dieses Menü-Skript zurück.

Vorbereitung für die Verwendung in Phpwcms

Um das Superfish-Menü in Phpwcms zu integrieren muss die unten angefügte PHP-Datei heruntergeladen und in den Ordner “template/inc_script/frontend_render” verschoben werden.

Zuätzlich muss die neueste Version von Superfish von der Hersteller-Seite bezogen werden. Das Skript ist kostenlos. Die Skripte müssen in folgende Verzeichnisse eingeordnet werden.

  • template/inc_css/superfish/superfish.css
  • inc_js/superfish/superfish.js

Optional sollten noch folgende Skripte hinzugefügt werden. Die Dateien finden sich ebenfalls auf der Herstellerseite

  • template/inc_js/superfish/hoverIntent.js
    (sorgt dafür, dass das Menü nicht sofort wieder einklappt, wenn man mal kurz mit der Maus nicht drüber hovert)
  • inc_js/superfish/supersubs.js
    (erzeugt automatiche Anpassung der Feldbreite anhand der Textlänge)

Menü einrichten

Um das menü im Template einzurichten muss einfach folgende Replacement-Tag gesetzt werden [anfürendes Leerzeichen bitte entfernen]:
{ SUPERFISH:ID,DEPTH} 

  • ID ist hierbei das Startlevel
  • DEPTH ist die gewünschte Menü-Tiefe. Dieser Wert kann wegelassen werden, er wird dann automatisch auf 100 gesetzt.


// **************************************************************************
// 19.9.2010 SUPERFISH MENU (horizontal drop-down)
// phalancs
//
// http://forum.phpwcms.org/viewtopic.php?f=8&t=20620
// http://www.enym.com
//
// TAG: {SUPERFISH:ID,Level depth}
//
// Location: Put it into the file e.g.:
// /template/inc_script/frontend_render/superfish.php
// Switch in conf.inc.php: $phpwcms['allow_ext_render'] = 1;
// **************************************************************************

// —————————————————————-
// obligate check for phpwcms constants
if (!defined(‘PHPWCMS_ROOT’)) {
die(“You Cannot Access This Script Directly, Have a Nice Day.”);
}
// —————————————————————-

if( ! ( strpos($content[“all”],’SUPERFISH’)==false ) ) {

initJSLib();
$GLOBALS[‘block’][‘css’][‘superfish.css’] = ‘superfish/superfish.css’;
$block[‘custom_htmlhead’][‘hoverIntent.js’] = ‘‘; $block[‘custom_htmlhead’][‘superfish.js’] = ‘‘;
$block[‘custom_htmlhead’][‘supersubs.js’] = ‘‘; $GLOBALS[‘block’][‘custom_htmlhead’][‘superfish_init’] = ‘‘;
//—————
$content[“all”] = str_replace(‘{SUPERFISH}’,'{SUPERFISH:0,100}’,$content[“all”]);
$content[“all”] = preg_replace(‘/{SUPERFISH:(.*?)}/i’,'{SUPERFISH:$1,100}’, $content[“all”]);
$content[“all”] = preg_replace(‘/{SUPERFISH:(.*?),(.*?)}/e’,’buildNavi_horiz1(“$1″,”0″,”$2”-1);’, $content[“all”]);
}

function buildNavi_horiz1($start=0, $counter=0, $depth=0) {
$t = array();
$struct = getStructureChildData($start); // Catch structure
if($counter == 0) {
$last = count($struct) – 1;
} else {
$last = 0;
}
$x = 0;

//======================================================
//start loop
foreach($struct as $value) {

if( isset($GLOBALS[‘LEVEL_KEY’][ $value[‘acat_id’] ]) ) {
$p1 = ‘ current’;
} else {
$s = ”; // Reset $struct
$p1 = ”;
}

// Only if there is a sub level
if($GLOBALS[‘content’][‘cat_id’] == $value[‘acat_id’]) {
$a1 = ‘current’; // If first level is active
$a3 = ”;
} else { // If first level isn´t active
$a1 = $p1;
$a3 = ”;
}

// ==========================

// level depth added

if (($counter) < $depth) {
$s = buildNavi_horiz1($value[‘acat_id’], $counter+1, $depth);
} else {
$s = ”;
}

if($s) {
$g = ”;
$g .= $s;
$g .= LF . str_repeat(‘ ‘, $counter);
//$class = $counter ? (‘ class=”fly_ul ‘.$a1.'”‘) : (‘ class=”drop_ul ‘.$a1.'”‘); // Second level with active category
$class = $counter ? (‘ class=”fly_ul”‘) : (‘ class=”drop_ul ‘.$a1.'”‘);
$close_li = str_repeat(‘ ‘, $counter+1);
} else {
$g = ”;
$class = ‘ class=”sub_no”‘; // If you don´t use the sub_no please change to: $class = ”;
// Only the first level if there is no sub level
// Ausschlieszlich das erste Level wenn kein Sublevel vorhanden ist

if ($counter == 0) {
//ENYM TEST
//$class = ‘ class=”sub_no’.$a1.'”‘; // Set it, it is active or not
$class = ‘ class=”‘.$a1.'”‘; // Set it, it is active or not
}

$close_li = ”;
}

// first li in last block
if( $last && $last == $x ) {
$enclose = ‘ class=”horiz_enclose”‘;
} else if( $x || ($counter == 0 && $x == 0) ) {
$enclose = ”;
} else {
$enclose = ‘ class=”horiz_enclose”‘;
}

// IDs for every li, If you need the ID class, please uncomment/comment
//$l = str_repeat(‘ ‘, $counter+1) . ‘<li’. $class . ‘ id=”cat-id_’ . $value[‘acat_id’] . ‘”>’;
$l = str_repeat(‘ ‘, $counter+1) . ‘<li’. $class . ‘>’;
$l .= get_level_ahref($value[‘acat_id’], $enclose) . html_specialchars($value[‘acat_name’]);
$l .= $g;
$l .= $close_li . ‘

‘;
$t[] = $l;
$x++;

}
//end loop
//======================================================

if($counter) {
$A = LF . str_repeat(‘ ‘, $counter) . ”;
$B = LF . str_repeat(‘ ‘, $counter) . ”;
} else {
$A = ”;
$B = ”;
}

$t = implode(LF, $t);

if($t) {

$t = $A . LF . str_repeat(‘ ‘, $counter) . ‘<ul’.($counter?”:’ class=”sf-menu”‘).’>’ . LF . $t . LF . str_repeat(‘ ‘, $counter) . ‘

‘. $B ;
}

return $t;
}
?>

An den Anfang scrollen