schau doch einfach ob dein menucode im richtigen container liegt....
die slideouts sind aber zu sehen oder?
schau doch einfach ob dein menucode im richtigen container liegt....
die slideouts sind aber zu sehen oder?
ja, das stimmt soweit schon:
<body>
<!-- ###DOKUMENT### begin -->
<table width="900" border="0" cellspacing="1" bordercolor="#999999" cellpadding="1" height="100%" align="center" bgcolor="#999999">
<tr>
<td bgcolor="#F1F2FE" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="900" height="100%">
<tr>
<td colspan="2" height="25" bgcolor="#28416f">
<div id="menucontainer">###MENU_MAIN###</div>
</td>
</tr>etc...
Das Menü wird auch angezeigt! allerdings sehr "zerschossen".. also es wird von jeder zeile nur ein bruchteil angezeigt... das liegt aber an der css body einstellung, wenn ich die auskommentiere isses wieder normal!
am besten du schaust es dir selbst mal an. seite befindet sich im aufbau unter
http://www.metzingen-best.de/index.php
Falls mal jemand Probleme mit dem ypMenu und XHTML strict validem Code haben sollte, gibt es hier eine Lösung :
#2416016
jenses
Hallo,
ich versuch schon den ganzen Tag das menu testweise zum Laufen zu bringen.
Da sich jetzt in dem Thread so viele verschiedene Codeschnipsel angesammelt haben würde ich mich freuen wenn irgendein gluecklicher hier nochmal eine funktionierende Zusammenfassung reinsetzt:
- der code für das HTML-Template
- der Typo-Script Code
- der evt. zusaetzliche PHP-Code
wenn man folgende Dateien für den Rest zum Testen benutzt:
die .css und .js dateien von der meade-webpage
alternativ natürlich auch gerne eigenen css und js code.
Hauptsache man bekommt es erstmal zum Laufen (auf Typo3 3.7, Linux). Würde vielen hier (und mir ) sicherlich weiterhelfen.
Vielen Dank!
gruß, mh84
Beispiel www.sci-worx.com
TSSetup:
# include ypMenu script
page.includeLibs.ypMenu = fileadmin/template/res/ypMenu.php
temp.slideoutmenu.special = directory
temp.slideoutmenu.special.value = 4
#temp.menu_1.entryLevel = 2
#temp.menu_1 >
temp.slideoutmenu = HMENU
temp.slideoutmenu.1 = GMENU
temp.slideoutmenu.1 {
IProcFunc = user_menu->firstLevel
expAll = 1
wrap = |
IFSUB = 1
IFSUB {
wrap = |
#button grösse
XY = 177, 67
#transparentBackground = 1
backColor = #011D65 || #004A85 || #015BA2 || #88A6C3
50 = TEXT
50 {
text.field = title
fontSize = 15
fontFile = fileadmin/fonts/Arial.ttf
#fontFile = fileadmin/fonts/55HelveNeuRom.PFB
fontColor = #ffffff
align = center
offset = 0,36
niceText = 1
}
100 = || IMAGE
100.file = fileadmin/template/images/spacer.gif
}
#für Mausover
NO {
wrap = |
#button grösse
XY = 177, 67
#transparentBackground = 1
backColor = #011D65 || #004A85 || #015BA2 || #88A6C3
50 = TEXT
50 {
text.field = title
fontSize = 15
fontFile = fileadmin/fonts/Arial.ttf
#fontFile = fileadmin/fonts/55HelveNeuRom.PFB
fontColor = #ffffff
align = center
offset = 0,36
#offset = -[50.w] + 90,36
niceText = 1
}
#Menu Balken bei mouseover am fuss vom Buttom
99 = IMAGE
99.file = GIFBUILDER
99.file {
XY = 400, 67
90 = IMAGE
90.file = fileadmin/template/images/line_menu.gif
90.offset = 0, 64
transparentBackground = 1
}
100 = || IMAGE
100.file = fileadmin/template/images/spacer.gif
}
RO < temp.slideoutmenu.1.NO
RO = 1
RO {
XY = 177, 67
#transparentBackground = 1
backColor = #011D65 || #004A85 || #015BA2 || #88A6C3
50 = TEXT
50 {
text.field = title
fontSize = 15
fontFile = fileadmin/fonts/Arial.ttf
#fontFile = fileadmin/fonts/55HelveNeuRom.PFB
fontColor = #ffffff
align = center
offset = 0,36
niceText = 1
}
#Menu Balken bei mouseover am fuss vom Button
99 = IMAGE
99.file = GIFBUILDER
99.file {
XY = 400, 67
90 = IMAGE
90.file = fileadmin/template/images/line_menu.gif
90.offset = 0, 64
transparentBackground = 1
}
}
IFSUBRO < temp.slideoutmenu.1.NO
IFSUBRO = 1
IFSUBRO {
XY = 177, 67
#transparentBackground = 1
backColor = #011D65 || #004A85 || #015BA2 || #88A6C3
50 = TEXT
50 {
text.field = title
fontSize = 15
fontFile = fileadmin/fonts/Arial.ttf
#fontFile = fileadmin/fonts/55HelveNeuRom.PFB
fontColor = #ffffff
align = center
offset = 0,36
niceText = 1
}
}
}
temp.slideoutmenu.2 = TMENU
temp.slideoutmenu.2 {
IProcFunc = user_menu->secondLevel
expAll = 1
NO.linkWrap = <li>|</li>
}
temp.slideoutmenu.3 = TMENU
temp.slideoutmenu.3 {
IProcFunc = user_menu->thirdLevel
expAll = 2
NO.linkWrap = <li>|</li>
}
temp.slideoutmenu.4 = TMENU
temp.slideoutmenu.4 {
IProcFunc = user_menu->fourthLevel
expAll = 1
NO.linkWrap = <li>|</li>
}
# append Menu JS to page
#page.11 = USER
#page.11.userFunc = user_menu->menuEnd
temp.slideoutmenucode = USER
temp.slideoutmenucode.userFunc = user_menu->menuEnd
PHP:
<?php
/***************************************************************
* Copyright notice
*
* (c) 2003 Andreas Tschirpke (tschirpke@at-mediendesign.de)
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* User class to build Javascript Menu (www.xyz.de)
*
* @author Andreas Tschirpke <tschirpke@at-mediendesign.de>
*
* Modified by Alex.Elsner <alex.elsner@cms-medien-design.de>
*/
#$GLOBALS['TSFE']->set_no_cache(); // wird nicht mehr gebraucht :)
class user_menu {
var $offsetY = 68; // inital offset values for the first level elements
var $offsetX = 230;
var $sublevelWidth = 177; // width and height values for sublevel items
var $sublevelHeight = 22;
var $padding = 5;
var $fontSize = 10;
var $breakpoint = 28; // recalculate width of text after x characters
var $secPadding = 12; // 16 padding inc. border
var $fontFile = 'fileadmin/fonts/verdana.ttf'; // font file needed to calculate linebreaks
var $transBg = 'fileadmin/template/images/menu_bg.png'; // transparent PNG file - needed to fix a transparency bug in Mac IE 5 (wird nicht mehr gebraucht)
/**
* Dummy function to pass values to buildIndex
*
* @param array Menu array including all needed menu items (created by TMENU)
* @param array Configuration array
* @return array returns modified $I array
* @access private
*/
function firstLevel($I,$conf) {
return $this->buildIndex($I, $conf, 1);
}
/**
* Dummy function to pass values to buildIndex
*
* @param array Menu array including all needed menu items (created by TMENU)
* @param array Configuration array
* @return array returns modified $I array
* @access private
*/
function secondLevel($I,$conf) {
return $this->buildIndex($I, $conf, 2);
}
/**
* Dummy function to pass values to buildIndex
*
* @param array Menu array including all needed menu items (created by TMENU)
* @param array Configuration array
* @return array returns modified $I array
* @access private
*/
function thirdLevel($I,$conf) {
return $this->buildIndex($I, $conf, 3);
}
/**
* Dummy function to pass values to buildIndex
*
* @param array Menu array including all needed menu items (created by TMENU)
* @param array Configuration array
* @return array returns modified $I array
* @access private
*/
function fourthLevel($I, $conf) {
return $this->buildIndex($I, $conf, 4);
}
/**
* Returns true if there is a submenu with items for the page id, $uid
* Used by the item states "IFSUB" and "ACTIFSUB" to check if there is a submenu
*
* @param integer Page uid for which to search for a submenu
* @return boolean Returns true if there was a submenu with items found
* @access private
*/
// copy from tslib_menu
function isSubMenu($uid) {
// Looking for a mount-pid for this UID since if that exists we should look for a subpages THERE and not in the input $uid;
$mount_info = $GLOBALS['TSFE']->sys_page->getMountPointInfo($uid);
if (is_array($mount_info)) {
$uid = $mount_info['mount_pid'];
}
$recs = $GLOBALS['TSFE']->sys_page->getMenu($uid,'uid,pid,doktype,mount_pid,mount_pid_ol');
foreach($recs as $theRec) {
if (!t3lib_div::inList('5,6',$theRec['doktype']) && !$theRec['nav_hide']) { // If a menu item seems to be another type than 'Not in menu', then return true (there were items!)
return TRUE;
}
}
}
/**
* Breaks textarea text into lines of specified width in order to feed Gifbuilder (see function makeTextImage)
*
* @param string $text: input text
* @param integer $size: specified font size
* @param string $font: absolute path to specified font file
* @param integer $width: specified width of the image box
* @return array array of lines of text
*/
// copy from sr_sendcard
// thanks and credits go to Peter Bowyer <peter@sendcard.org>
function text_to_lines($text, $size, $font, $width) {
$words = t3lib_div::trimExplode(' ', str_replace("
", ' <br> ', str_replace("
", ' <br> ', str_replace("|", ' <br> ', $text))), 0);
$p = 0;
$lines = array();
$lines[0] = '';
for($i = 0; $i < count($words); $i++) {
($lines[$p] ) ? $test = $lines[$p].' '.$words[$i] : $test = $words[$i];
$bbox = imagettfbbox($size, 0, $font, $test);
if ($words[$i] == '<br>') {
$p++;
$lines[$p] = '';
} elseif (($bbox[4] - $bbox[6]) > $width ) {
$p++;
$lines[$p] = $words[$i];
} else {
$lines[$p] = $test;
}
}
return count($lines);
}
/**
* Collects all needed information (width, height, x, y, level etc.) and structural information for the ypMenu.
* Information are stored in $GLOBALS['TSFE']->applicationData['ypMenus']
*
* @param array $I: Array created by TMENU including all menu elements for the current level
* @param integer $conf: Configuration array
* @param integer $level: hierarchical depth
* @return array $I: modified $I array
*/
function buildIndex($I, $conf, $level) {
// fix IE 5.0 on windows
// no longer necessarily
$clientAdjust = 0;
# $clientinfo = t3lib_div::clientInfo();
# if($clientinfo['SYSTEM'] == 'win' AND $clientinfo['BROWSER'] == 'msie' AND $clientinfo['VERSION'] < 5.5) {
# $clientAdjust = 2;
# }
switch($level) {
case "1":
// only wrap in ypSlide Action if submenu is present
if($this->isSubMenu($I['uid'])) {
// JS actions
$onmouseover = "ypSlideOutMenu.showMenu('menu" .$I['uid']. "'); over('" .$I['theName']. "');";
$onmouseout = "ypSlideOutMenu.hideMenu('menu" .$I['uid']. "'); out('" .$I['theName']. "');";
// collect data for correct positions
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['level'] = $level;
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['uid'] = $I['uid'];
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['imgwidth'] = $I['val']['output_w'];
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['imgheight'] = $I['val']['output_h'];
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['width'] = $this->sublevelWidth;
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['height'] = $this->sublevelHeight;
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['dir'] = 'down';
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['top'] = $this->offsetY;
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['left'] = $GLOBALS['TSFE']->applicationData['ypTemp']['x'] + $this->offsetX;
// build ypMenu JS
$GLOBALS['TSFE']->applicationData['ypTemp']['js'] .= "
menu". $I['uid'] .".onactivate = new Function("document.images['" .$I['theName']. "'].src = " .$I['theName']. "_h.src");
menu". $I['uid'] .".ondeactivate = new Function("document.images['" .$I['theName']. "'].src = " .$I['theName']. "_n.src");
";
} else { // no ypMenu needed
$onmouseover = "over('" .$I['theName']. "');";
$onmouseout = "out('" .$I['theName']. "'); ";
}
// move right
$GLOBALS['TSFE']->applicationData['ypTemp']['x'] += $I['val']['output_w'];
$I['parts']['ATag_begin'] = '<a href="' .$I['linkHREF']['HREF']. '" onfocus="' . $I['linkHREF']['onFocus']. '" onmouseover="'. $onmouseover .'" onmouseout="'. $onmouseout .'" id="act'. $I['uid'] .'">';
$I['parts']['ATag_end'] = '</a>';
// Mod for XHTML strict
# $I['parts']['image'] = str_replace("name", "id", $I['parts']['image']);
# $I['parts']['image'] = str_replace("border="0"", "", $I['parts']['image']);
break;
default: // every other level (TMENU)
$title = $I['title'];
// count lines if more than $this->breakpoint chars
if(strlen($title) > $this->breakpoint) {
$lines = $this->text_to_lines($I['title'], t3lib_div::freetypeDpiComp($this->fontSize), $this->fontFile, ($this->sublevelWidth - 2*$this->padding));
} else {
$lines = 1;
}
// if another submenu is present wrap link with JS actions an collect data
if($this->isSubMenu($I['uid'])) {
$href = $I['linkHREF']['HREF'];
$onmouseover = "ypSlideOutMenu.showMenu('menu" .$I['uid']. "');";
$onmouseout = "ypSlideOutMenu.hideMenu('menu" .$I['uid']. "');";
$link = sprintf('<a href="%s" onmouseover="%s" onmouseout="%s" class="submenu">%s</a>',$href, $onmouseover, $onmouseout, $title);
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['level'] = $level;
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['uid'] = $I['uid'];
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['width'] = $this->sublevelWidth;
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['height'] = $this->sublevelHeight;
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['dir'] = 'right';
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['top'] = intval($GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['top']) + (($I['key']) * $this->sublevelHeight);
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['left'] = intval($GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['left']) + intval($GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['width']);
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['uid']]['parentId'] = $I['pid'];
} else { // nothing to be done here :)
$link = $I['parts']['ATag_begin']. $title .$I['parts']['ATag_end'];
}
// move down
if($I['key'] == 0) {
$GLOBALS['TSFE']->applicationData['ypTemp'][$I['pid']]['y'] = intval($GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['top']);
} else {
$GLOBALS['TSFE']->applicationData['ypTemp'][$I['pid']]['y'] += $this->sublevelHeight + ($this->secPadding * ($lines-1)) + $clientAdjust;
}
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['items'][$I['uid']]['link'] = $link;
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['items'][$I['uid']]['height'] = $this->sublevelHeight + ($this->secPadding * ($lines-1));
$GLOBALS['TSFE']->applicationData['ypMenus'][$I['pid']]['items'][$I['uid']]['top'] = $GLOBALS['TSFE']->applicationData['ypTemp'][$I['pid']]['y'] - ($this->secPadding * ($lines-1));
// save link in output array
$I['parts']['ATag_begin'] = '
<a href="' .$I['linkHREF']['HREF']. '"
onfocus="' . $I['linkHREF']['onFocus']. '"
onMouseOver="ypSlideOutMenu.showMenu('menu'.$I['uid'].'');"
onMouseOut="ypSlideOutMenu.hideMenu('menu'.$I['uid'].'');"
id="level1id'.$I['uid'].'">';
//$GLOBALS['TSFE']->applicationData['ypMenu'][$level][$I['pid']]['parts']['items'][] = implode('', $I['parts']);
$I['parts'] = array();
break;
}
return $I;
}
/**
* Builds all HTML/JS Code to initialize all ypMenu layers. Must be writen at the end of the document
*
* @return string html/js code
*/
function menuEnd() {
// all relevant data stored in applicationData['ypMenus'];
if(is_array($GLOBALS["TSFE"]->applicationData['ypMenus'])) {
// fix differnet browser bugs to get a transparency effect
$clientinfo = t3lib_div::clientInfo();
$pngimg = false;
$pngbg = false;
$filter = false;
$appendix = '';
$bg = false;
// no longer necessarily, all browser get same code
// ie >= 5.5 on win and mozilla can render transparency by css
if(($clientinfo['SYSTEM'] == 'win' AND $clientinfo['BROWSER'] == 'msie' AND $clientinfo['VERSION'] >= 5.5) OR ($clientinfo['SYSTEM'] == 'win' AND $clientinfo['BROWSER'] == 'net')) {
# $filter = true;
# $style = 'style="-moz-opacity:.9; filter:alpha(opacity=90); background-color: #E1EDFD"';
// Mr. IE on Mac needs a special treatment - a transparent png in a img tag in the background
} elseif($clientinfo['SYSTEM'] == 'mac' AND ($clientinfo['BROWSER'] == 'msie')) {
# $pngimg = true;
# $style = 'style="background-color: transparent"';
// Opera and Mozilla on Mac can handle transparent pngs
} elseif(($clientinfo['SYSTEM'] == 'mac' AND $clientinfo['BROWSER'] == 'net') OR ($clientinfo['BROWSER'] == 'opera')){
# $pngbg = true;
# $style = 'style="background-image: url(''. $this->transBg .'');"';
// no transparency for the rest - go get firefox!
} else {
# $bg = true;
# $style = 'style="background-color: transparent"';
# $appendix = 'b';
}
// loop through all collected data (buildIndex) and render js
foreach($GLOBALS["TSFE"]->applicationData['ypMenus'] as $menu) {
$uid = $menu['uid'];
$level = $menu['level'];
$dir = $menu['dir'];
$parentId = ($menu['parentId']) ? '"menu'.$menu['parentId'].'"' : 'null';
$x = $menu['left'];
$y = ($menu['parentId']) ? $GLOBALS['TSFE']->applicationData['ypMenus'][$menu['parentId']]['items'][$uid]['top'] : $this->offsetY;
$width = $menu['width'];
$items = '';
$wholeHeight = 0;
if(is_array($menu['items'])) {
$itemcount = count($menu['items']);
foreach($menu['items'] as $item) {
// modifited
# $items .= '<li>'. $item['link'] ."</li>
";
$items .= '<div class="mmlink">'. $item['link'] ."</div>
";
$wholeHeight = $wholeHeight + $item['height'];
}
}
// no longer necessarily
# if($clientinfo['SYSTEM'] == 'win' AND $clientinfo['BROWSER'] == 'msie' AND $clientinfo['VERSION'] < 5.5) {
# $wholeHeight = $wholeHeight + 2 * $itemcount;
# }
$height = ($menu['height']) * count($menu['items']);
$output[] = sprintf('<div id="menu%dContainer" class="mmContainer"><div id="menu%dContent" class="mmContent%s" %s>', $uid, $uid, $appendix, $style); // L%d / $level
// ul to div!!!
# $output[] = sprintf('<ul class="mmLevel%d">%s</ul>', $level, $items);
$output[] = sprintf('<div class="mmLevel%d">%s</div>', $level, $items);
// no longer necessarily
// trick Mac IE to display our transparent PNG
# if($pngimg) {
# $output[] = '<img src="' . $this->transBg .'" width="'. $width .'" height="'. $wholeHeight .'" class="menuBackground">';
# }
$output[] = '</div></div>';
$menus[] = sprintf('menu%d = new ypSlideOutMenu("menu%d", "%s", %d, %d, %d, %d, %s)', $uid, $uid, $dir, $x, $y, $width, $wholeHeight, $parentId);
}
}
if(is_array($output) && is_array($menus)) {
$output = implode("
", $output);
$output .= "
<script type="text/javascript">
"
. implode("
", $menus) ."
ypSlideOutMenu.writeCSS();
". $GLOBALS['TSFE']->applicationData['ypTemp']['js'] ."
</script>
";
return $output;
}
}
}
?>
CSS:
/*
*CSS-Style to build slideoutmenu by Alex.Elsner <alexander.elsner@sci-worx.com>
*/
.mmContent DIV A {
font-size: 9px; font-family: Verdana, Arial, Helvetica, Geneva, SunSans-Regular;
font-weight: bold;
line-height: 11px;
padding: 5px;
text-decoration: none;
display: block;
color: #011D65;
background: #DEF2FE;
margin: 0px 0px 0px 0px;
border-bottom: solid 1px #011D65;
}
.mmContent DIV A:active {
background: #DEF2FE;
color: #011D65;
}
.mmContent DIV A:visited {
background: #DEF2FE;
color: #011D65;
}
/* für IE >5 */
* html .mmContent DIV A {
width: 177px;
width: 177px; /* für IE 6 */
-moz-opacity:.9; /* für IE 5.5+ */
filter:alpha(opacity=90); /* für IE 5.5+ */
}
.mmContent DIV.mmlink A.submenu {
background: #DEF2FE url(/fileadmin/template/images/menu_sub.gif) top left no-repeat;
color: #011D65;
}
.mmContent DIV.mmlink A.submenu:hover {
background: #ffffff url(/fileadmin/template/images/menu_sub.gif) bottom left no-repeat;
color: #011D65;
}
.mmContent[id] DIV.mmlink A.submenu {
background: url(/fileadmin/template/images/menu_sub.png) top left no-repeat;
color: #011D65;
}
.mmContent[id] DIV.mmlink A.submenu:hover {
background: url(/fileadmin/template/images/menu_sub.png) bottom left no-repeat;
color: #011D65;
}
.mmContent DIV.mmlink A:hover {
background: #ffffff;
color: #011D65;
}
/* folgende anweisung wird nicht vom ie interpretiert */
.mmContent[id] DIV.mmlink A {
background: url(/fileadmin/template/images/menu.png) top left no-repeat;
}
.mmContent[id] DIV.mmlink A:hover {
background: url(/fileadmin/template/images/menu.png) bottom left no-repeat;
}
Bilder für das menu:
GIF für IE
http://www.sci-worx.com/fileadmin/template/images/menu_sub.gif
PNG für die anderen Browser:
http://www.sci-worx.com/fileadmin/template/images/menu_sub.png
&
http://www.sci-worx.com/fileadmin/template/images/menu.png
Java:
http://www.sci-worx.com/fileadmin/template/res/jslib.js
http://www.sci-worx.com/fileadmin/template/res/ypSlideOutMenus.js
Guss liberation
hi ihrs,
ist n toller thread hier. Leider tut bei mir was anderes nicht...
hab diesen Thread nun von anfang bis ende durchgelesen, das ypMenu.php durchforstet und ich krieg iimer folgende Fehlermeldung:
Parse error: parse error, unexpected T_STRING in /home/mxnet/public_html/test/fileadmin/scripts/ypMenu.php on line 380
Line 380 ist folgende:
$GLOBALS['TSFE']->applicationData['ypTemp']['js'] .= "menu". $I['uid'] .".onactivate = new Function("document.images['" .$I['theName']. "'].src = " .$I['theName']. "_h.src"); menu". $I['uid'] .".ondeactivate = new Function("document.images['" .$I['theName']. "'].src = " .$I['theName']. "_n.src"); ";
irgendwie hab seh ich da den fehler nicht.
das ypMenu.php ist mit denen die hier gepostet wurden identisch...
kann mir da jemand weiterhelfen??
gruss
spacecube
Hi,
Spacecube schriebParse error: parse error, unexpected T_STRING in /home/mxnet/public_html/test/fileadmin/scripts/ypMenu.php on line 380
Hatte das Problem beim Nachbau des Menüs auch. Im Übrigen nicht nur in dieser Zeile, sondern noch bei einigen weiteren, sind Hochkommas bzw. "Gänsefüßchen" nicht richtig escaped - oder im Forum nicht richtig dargestellt - oder neuere Php-Versionen sind nicht mehr so tolerant, aber das sind nur Vermutungen.
Hier mal die Änderungen zur Version von liberation, die bei mir nötig waren, damit kein Php-Fehler mehr kommt:
196,197c196,198
< menu". $I['uid'] .".onactivate = new Function("document.images['" .$I['theName']. "'].src = " .$I['theName']. "_h.src");
< menu". $I['uid'] .".ondeactivate = new Function("document.images['" .$I['theName']. "'].src = " .$I['theName']. "_n.src");
---
> menu". $I['uid'] .".onactivate = new Function(\"document.images['" .$I['theName']. "'].src = " .$I['theName']. "_h.src\");
> menu". $I['uid'] .".ondeactivate = new Function(\"document.images['" .$I['theName']. "'].src = " .$I['theName']. "_n.src\");
>
258,259c259,260
< onMouseOver="ypSlideOutMenu.showMenu('menu'.$I['uid'].'');"
< onMouseOut="ypSlideOutMenu.hideMenu('menu'.$I['uid'].'');"
---
> onMouseOver="ypSlideOutMenu.showMenu(\'menu'.$I['uid'].'\');"
> onMouseOut="ypSlideOutMenu.hideMenu(\'menu'.$I['uid'].'\');"
320,322c321
< # $items .= '<li>'. $item['link'] ."</li>
< ";
< $items .= '<div class="mmlink">'. $item['link'] ."</div>
---
> $items .= "<li>". $item['link'] ."</li>
323a323,324
> # $items .= "<div class=\"mmlink\">". $item['link'] ."</div>
> #";
330a332
>
344c346
< $menus[] = sprintf('menu%d = new ypSlideOutMenu("menu%d", "%s", %d, %d, %d, %d, %s)', $uid, $uid, $dir, $x, $y, $width, $wholeHeight, $parentId);
---
> $menus[] = sprintf('menu%d = new ypSlideOutMenu("menu%d", "%s", %d, %d, %d, %d, %s);', $uid, $uid, $dir, $x, $y, $width, $wholeHeight, $parentId);
352c354
< <script type="text/javascript">
---
> <script type=\"text/javascript\">
Bei Bedarf kann ich auch die komplette Datei nachliefern.
EDIT: auch meine diff-Zeilen wurden beim Speichern des Beitrags verändert - ab und zu stand mal
beim " zusätzlich ein & quot ; drin - vielleicht ähnliche Veränderungen beim Php-Code von liberation?
Nun noch was Anderes: leider sieht man sämtliche Menüeinträge über die ganze Seite verteilt, sobald js abgeschaltet wird - es gibt aber sicher Umgebungen, wo js standardmäßig aus ist.
Läßt sich das nicht irgendwie abfragen, so dass das Menü nur ausgegeben wird, wenn js am Client verfügbar ist?
Das Phänomen läßt sich bei abgeschaltetem js auch bei sci-works, audioarts und meade beobachten, allerdings kann man bei letzterem ohne js nichtmal mehr nach unten blättern, so dass man die Menüeinträge nur sieht, wenn man sehr weit herauszoomt (getestet
mit ff/opera).
lulatsch
Hallo!
Muss echt sagen ein super Thread hier...
Habe auch versucht das Menü nachzubasteln aber irgendwie hagelt es nur noch Fehlermeldungen und ich seh den Wald vor lauter Bäumen nicht mehr. #angry#
@Liberation:
Kannst Du evt. ein Archiv mit allen benötigten Dateien schnüren und es online stellen?
Eine kleines HTML-Template wäre auch nett.
Vielen Dank!
Gruss, Sven
Hi,
habe eben noch mal den code von mir oben im Post gecheckt.
Irgendwie verschluckt das forum ab und an zeichen?? "\" z.B.
Ich werde die Dateien mal einzippen und dann online stellen.
Dringende schen am besten per icq.
Gruss
Liberation schriebHi,
habe eben noch mal den code von mir oben im Post gecheckt.Irgendwie verschluckt das forum ab und an zeichen?? "\" z.B.
Ich werde die Dateien mal einzippen und dann online stellen.
Dringende schen am besten per icq.
Gruss
Hi, erstmal danke für die schnelle Reaktion!
So dringend ist es nicht, ich kann warten bist Du dafür Zeit hast.
Vielleicht ist ja ein Tutorial hier auf der Website unter "FAQs & Tutorials" wert, da ja doch großes Interesse an dem Menü besteht.
Gruss, Sven
Hallo clicks,
ich habe mir die Seite meade.de grade angesehen und bin begeistert.
clicks schriebZur Händlersuche: Ja die Sache läuft über Längen- und Breitengrade. Eine entsprechende Extension werde ich bei Gelegenheit auch fertigstellen. Momentan ist die Ext noch zu "spezifisch". Falls es wichtig ist -> PN.
ich bin zur Zeit ebenfalls auf der Suche nach einer Möglichkeit nach einer PLZ Umkreissuche. Ich hab vom opengeodb-Projekt gehört, daß sowas ermöglichen soll, habe mich da aber noch nicht weiter einarbeiten können. Das ganze soll wohl auch noch nicht als T3-Extension anständig laufen. Deswegen möchte ich auf diesem Wege bei Dir nachfragen, ob Du Deine Extension für die PLZ-Suche inzwischen freigegeben hast oder ob das noch in Planung ist.
Viel Anklang würde die Freigabe der Extension bestimmt bringen.
viele Grüße aus Flensburg
Frank
imo kann man mit dem neuen forum das code reinstellen längerer php dateien etc. total vergessen. ersten werden zeichen einfach verschluckt. und zweitens geht die richtige formatierung vollends verloren.
wer übrigens sehr gut auf seiner webseite codereinstellt, dh. funktionaler als ein screenshot vom visual studio oä.: jweiland.net
😃
und wieso ich eigentlich poste: hat jemand die ypmenu.php zum download oder so? am liebsten wäre mir die von sci-worx. da scheint der positioning bug beseitigt worden zu sein.
Hallo,
habe es mal gezippt und hoch geschoben:
http://www.sci-worx.com/slideoutmenu.zip
bitte... bei fragen einfach melden 8-)
Hallo,
danke für die zip-Datei. Ich verfolge dieses Thema schon lange, habe es aber noch nicht richtig umsetzen können.
Was ich jetzt noch suche ist ein einfaches HTML-Template, wo die WRAPS positioniert sind (Ich weiss, viel lesen und ausprobieren, aber mir fehlt im Moment die Zeit).
Danke für eure Hilfe.
Hat jemand schon mal das Menü umgeschrieben, so daß es vertikal funktioniert?
Ich hab das PHP-Skript mal ergänzt, so daß es auch vertikal funktioniert. Bei interesse kann ichs ja mal posten.
ja, hi --
ich hätte interesse an dem vertikalen Menu--
bitte poste das doch mal..
gruß alex
Hallo zusammen
Erst mal, klasse Arbeit, das Menu sieht echt genial aus. Ich hab's soweit auch hingekriegt, bin jetzt noch am suchen wie man das Ding auch unter Opera zum laufen kriegt. So wie's aussieht, liegt das Problem in diesem Abschnitt
<script type="text/javascript">
/*<![CDATA[*/
<!--
if (version == "n3") {
img11_7c2c_0_n=new Image(); img11_7c2c_0_n.src = "typo3temp/m_6b20ada56b.png";
img11_7c2c_0_h=new Image(); img11_7c2c_0_h.src = "typo3temp/m_6de9977470.png";
img2_7c2c_1_n=new Image(); img2_7c2c_1_n.src = "typo3temp/m_74afefd045.png";
img2_7c2c_1_h=new Image(); img2_7c2c_1_h.src = "typo3temp/m_e076d622aa.png";
img7_7c2c_2_n=new Image(); img7_7c2c_2_n.src = "typo3temp/m_da29a64fb9.png";
img7_7c2c_2_h=new Image(); img7_7c2c_2_h.src = "typo3temp/m_9817ec0f3e.png";
img10_7c2c_3_n=new Image(); img10_7c2c_3_n.src = "typo3temp/m_f62c5ae4e5.png";
img10_7c2c_3_h=new Image(); img10_7c2c_3_h.src = "typo3temp/m_fb30ff5f3f.png";
img15_7c2c_4_n=new Image(); img15_7c2c_4_n.src = "typo3temp/m_ad1c752468.png";
img15_7c2c_4_h=new Image(); img15_7c2c_4_h.src = "typo3temp/m_bda0da2ec6.png";
}
// -->
/*]]>*/
</script>
namentlich am if-statement (wenn ich manuell das if-statement lösche, funktionniert es auch unter opera). Irgendwie bin ich allerdings zu blöd um herauszufinden, wo dieser Teil generiert wird. Hat da jemand einen Ahnung?
KaeptnOvi schriebnoch am suchen wie man das Ding auch unter Opera zum laufen kriegt. So wie's aussieht, liegt das Problem in diesem Abschnitt
<script type="text/javascript"> /*<![CDATA[*/ <!-- if (version == "n3") { ...namentlich am if-statement (wenn ich manuell das if-statement lösche, funktionniert es auch unter opera). Irgendwie bin ich allerdings zu blöd um herauszufinden, wo dieser Teil generiert wird. Hat da jemand einen Ahnung?
1. Such' mal nach "removeDefaultJS" (z. B. links oben)
2. setze page.config.removeDefaultJS = external
3. Schau z. B. in den Quelltext der Seite, wo du
das gesetzt hast, und such die Stelle, wo
"typo3temp/javascript_(viele Buchstaben und Zahlen).js" aufgerufen wird; die Datei schaust du dir an und findest ff. Quelltext:
browserName = navigator.appName;
browserVer = parseInt(navigator.appVersion);
var msie4 = (browserName == "Microsoft Internet Explorer" && browserVer >= 4);
if ((browserName == "Netscape" && browserVer >= 3) || msie4 || browserName=="Konqueror") {version = "n3";} else {version = "n2";}
// Blurring links:
function blurLink(theObject) { //
if (msie4) {theObject.blur();}
}
Dann setzt du page.config.removeDefaultJS = true,
baust den Quellcode in eine eigene js-Datei
und passt ihn entsprechend an.
lulatsch
Hallo nochmal,
zu ff. Problem
lulatsch schriebNun noch was Anderes: leider sieht man sämtliche Menüeinträge über die ganze Seite verteilt, sobald js abgeschaltet wird - es gibt aber sicher Umgebungen, wo js standardmäßig aus ist.
Läßt sich das nicht irgendwie abfragen, so dass das Menü nur ausgegeben wird, wenn js am Client verfügbar ist?
mal ein Workaround:
- ccscreenres installiert und eingebunden
- slideoutmenü ab Ebene 2 ausgeblendet für den Fall,
dass kein JS erkannt wurde:
[userFunc= tx_ccscreenres_match(>0)]
temp.slideoutmenu.2 = TMENU
temp.slideoutmenu.2 {
IProcFunc = user_menu->secondLevel
expAll = 1
NO.linkWrap = <li>|</li>
}
temp.slideoutmenu.3 = TMENU
temp.slideoutmenu.3 {
IProcFunc = user_menu->thirdLevel
expAll = 2
NO.linkWrap = <li>|</li>
}
temp.slideoutmenu.4 = TMENU
temp.slideoutmenu.4 {
IProcFunc = user_menu->fourthLevel
expAll = 1
NO.linkWrap = <li>|</li>
}
temp.slideoutmenucode = USER
temp.slideoutmenucode.userFunc = user_menu->menuEnd
[global]
...
[userFunc= tx_ccscreenres_match(0)]
page.100 < plugin.tx_ccscreenres_pi1
[userFunc= tx_ccscreenres_match(>0)]
page.100 >
[global]
Das funktioniert wie folgt:
- Browser ohne JS: nur Ebene 1 vom Menü wird angezeigt,
da ccscreenres ohne JS keine Bildschirmauflösung erkennt
- Browser mit JS: beim 1. Seitenaufruf wird zwar auch
nur Ebene 1 angezeigt, aber screenres setzt einen
cookie, so dass bei jedem weiteren Seitenaufruf
das slideoutmenü verfügbar ist
lulatsch