[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Navigation als Tabelle mit 2 Zeilen - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

Navigation als Tabelle mit 2 Zeilen

24. Jul 2005, 18:44

Hallo,

ich würde die Navigation in Redaxo gern als Tabelle mit 2 Zeilen und 3 Spalten haben. :?

Leider kenne ich mich mit PHP nicht aus... :cry
Kann mir da jemand weiterhelfen? :?

Ich hab das Default Template schon soweit umgebaut, dass jede Kategorie in einer Zelle angezeigt wird, doch ich weiss nicht, wie ich mache, dass nach 3 Zellen eine neue Zeile generiert wird :?

Bin für jede Hilfe dankbar!

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

24. Jul 2005, 19:13

Hi,

wie sieht dein aktuelles Nav-Template aus?

Gruß,
Markus

Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

24. Jul 2005, 21:47

Das hier hab ich bisher gemacht...

Code: Alles auswählen

<?

// PFAD AUSLESEN
$cat_id = $this->getValue("category_id");
$path = explode("-",$this->getValue("path"));
$showpath = "/ <a href=index.php?article_id=8 class=white>Home</a>";
$cat1 = current($path)+0;
next($path);
$cat2 = current($path)+0;
next($path);
$cat3 = current($path)+0;

// 2. NAVI

$NAV2 = "";
$cat_id = $cat2;
@include $REX[INCLUDE_PATH]."/generated/categories/$cat_id.list.category";
$NAV = $REX[RECAT][$cat_id];
for ($i=0;$i<count($NAV);$i++)
{
 $id = current($NAV);
 $aid = $REX[CAT][$id][article_id];
 $name = $REX[CAT][$id][name];

 if ($i==0) $NAV2 .= "
			<div class=SubMenu>";
 @include $REX[INCLUDE_PATH]."/generated/articles/$aid.article";
 if ($cat3==$id and $REX[CAT][$id][status]==1)
 {
    $NAV2 .= "
				<div class=SubButtonAktiv>"."<a href=index.php?article_id=$aid><img src=$REX[HTDOCS_PATH]/files/na.gif>$name</a></div>";
 }elseif ($REX[CAT][$id][status]==1)
 {
     if ($name == "")
     {
       $NAV2 .= "
				<div class=SubButtonInaktivLeer>&nbsp;</div>";
     }else
     {
       $NAV2 .= "
				<div class=SubButtonInaktiv><a href=index.php?article_id=$aid><img src=$REX[HTDOCS_PATH]/files/np.gif>$name</a></div>";
      }
 }
 if (($i+1)==count($NAV)) $NAV2 .= "
			</div>";
 next($NAV);
}

// 1. NAVI

$NAV1 = "";
$cat_id = 0;
@include $REX[INCLUDE_PATH]."/generated/categories/$cat_id.list.category";
$NAV = $REX[RECAT][$cat_id];
for ($i=0;$i<count($NAV);$i++)
{
 $id = current($NAV);
 $aid = $REX[CAT][$id][article_id];
 $name = $REX[CAT][$id][name];
 if ($i==0) $NAV1 .= "
	<table class=menu cellspacing=0 cellpadding=0><tr>";
 @include $REX[INCLUDE_PATH]."/generated/articles/$aid.article";
 if ($cat2==$id and $REX[CAT][$id][status]==1)
 {
    $NAV1 .= "
		<td>"."<a href=index.php?article_id=$aid>$name</a></td>";
   if ($NAV2 != "") $NAV1 .= "$NAV2";
 }elseif ($REX[CAT][$id][status]==1)
 {
     if ($name == "")
     {
       $NAV1 .= "
		<td>&nbsp;</td>";
     }else
     {
       $NAV1 .= "
		<td><a href=index.php?article_id=$aid>$name</a></td>";
      }
 }
  
 if (($i+1)==count($NAV)) $NAV1 .= "
	</tr>
	</table>";
 next($NAV);
}
echo $NAV1;
?>
wobei ich an NAV2 nix geändert habe bisher, da ich nur 1 Kategorieebene habe und ich vermutet habe, dass ich dann NAV2 gar nicht brauche...

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

25. Jul 2005, 08:15

Hi,

ich würde es so angehen:

Code: Alles auswählen

// 1. NAVI

$NAV1 = "";
$cat_id = 0;
@include $REX[INCLUDE_PATH]."/generated/categories/$cat_id.list.category";
$NAV = $REX[RECAT][$cat_id];
for ($i=0;$i<count($NAV);$i++)
{
 $id = current($NAV);
 $aid = $REX[CAT][$id][article_id];
 $name = $REX[CAT][$id][name];
 if ($i==0) $NAV1 .= "
   <table class=menu cellspacing=0 cellpadding=0><tr>";
 @include $REX[INCLUDE_PATH]."/generated/articles/$aid.article";
 if ($cat2==$id and $REX[CAT][$id][status]==1)
 {
    $NAV1 .= "
      <td>"."<a href=index.php?article_id=$aid>$name</a></td>";
   if ($NAV2 != "") $NAV1 .= "$NAV2";
 }elseif ($REX[CAT][$id][status]==1)
 {
     if ($name == "")
     {
       $NAV1 .= "
      <td>&nbsp;</td>";
     }else
     {
       $NAV1 .= "
      <td><a href=index.php?article_id=$aid>$name</a></td>";
      }
 }
  // hier %3 da pro Zeile 3 Elemente...
 if ( $i % 3 == 0 && $i != 0) {
   $NAV1 .= "</tr><tr>";
 }
 
 if (($i+1)==count($NAV)) $NAV1 .= "
   </tr>
   </table>";
 next($NAV);
}
echo $NAV1;
?>

Aber "heutzutage" macht man eine Navigation nicht mit Tabellen.

Dazu hier mehr:
http://forum.redaxo.de/viewtopic.php?t=610

Gruß,
Markus
Zuletzt geändert von Markus.Staab am 25. Jul 2005, 11:23, insgesamt 1-mal geändert.

Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

25. Jul 2005, 11:19

Hi Markus,

Danke für Deine Antwort - werd ich gleich probieren :-)

Ja, ich weiss - CSS und DIV ist die Message... :wink:

Ich hab mich bei den letzten Webseiten aber dermassen mit den verschiedenen Browsern und ihren Macken rumgeplagt, dass ich diesmal, weil es auch schnell gehen muss und ein relativ komplexes Layout ist, auf Tabellen ausgewichen bin...

Sollte ich Zeit uns Muse haben, wollte ich das ganze irgendwann in einer ruhigen Minute mal dann doch noch auf Divs umbauen...

Wobei ich sagen muss, dass beim mir im HTML nur nackte Tabellen stehen. Alle styles & layouts kommen aus dem CSS... also immerhin schon was ;-)

***EDIT***
Hmm... mit Deinem Code macht er mir 4 Zellen auf der ersten Zeile und 2 Zellen auf der zweiten Zeile.... :?

.. und gleich noch eine Frage dazu... kann ich in Redaxo auch Seiten anlegen, die nicht in der Navigation erscheinen und trotzdem gelinkt werden können??? :?
**********

bibi
Beiträge: 94
Registriert: 9. Jul 2005, 04:26
Wohnort: Bielefeld

25. Jul 2005, 11:33

:twisted:

<ironie>
... ein kleiner Tipp von mir:

Wenn man 100% der grafischen Browser mit 100% Kompatibilität und NULL Plugins abdecken möchte, schaut man sich am Besten die GD2 Funktionen an. :wink:
Dort kann man die ganze 'Seite' als Bild generieren ;)
</ironie>

Sch(m)erz beiseite, auch wenn CSS erst Gewöhnungssache ist -- es macht einfach eine schlankere und bessere Seite. (schau dir einfach mal Tabellenseiten mit einem Textbrowser wie Lynx oder w3m an ...)

Viel Erfolg,
Carsten

Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

25. Jul 2005, 11:55

bibi hat geschrieben:Sch(m)erz beiseite, auch wenn CSS erst Gewöhnungssache ist -- es macht einfach eine schlankere und bessere Seite.
... wie gesagt, in meiner HTML Seite sind nur die nackten Tabellen - alles gestyle mach ich im CSS - und viele Templates etc. die mit DIVs gemacht wurden, haben nicht wirklich alle style-angaben im CSS, sondern auch teilweise noch in HTML-Seite...

da find ich meine Methode immer noch schlanker ;)

Das mit GD2 kenn ich überhaupt nicht, worum geht's denn da?

bibi
Beiträge: 94
Registriert: 9. Jul 2005, 04:26
Wohnort: Bielefeld

25. Jul 2005, 12:04

Hallo Livia,

das mit der GD war eher als Scherz gedacht ;) Aber wenn du dich darüber informieren möchtest: http://de3.php.net/manual/de/ref.image.php

Hast du eine Testseite die ich mir mal anschauen kann? So als Horizonterweiterung :)

Gruß,
Carsten

Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

25. Jul 2005, 12:11

Hi Carsten,

danke für den Link :)

Testseite gibt's noch keine aber von der Struktur her soll die Seite 3-spaltig, zentriert werden - mit jeweils unterschiedlichem Background links und rechts vom zentrierten Content....

Grad für die Background-Sache sind mir halt als erstes Tables eingefallen, da ich keinen Schimmer habe, wie ich ein "dynamisches Div" erstelle, das immer genauso breit ist, wie der freie Platz neben dem Content-Bereich... und das ganze dann noch auf jedem Browser einwandfrei dargestellt zu kriegen... :?

Wenn Du da natürlich Tipps hast, wie das mit DIVs lösbar ist - gerne her damit :) Ich lerne immer gern dazu ;)

Gruss
Livia

****EDIT****
@Markus:
Ich habe jetzt mal hier

Code: Alles auswählen

// hier %3 da pro Zeile 3 Elemente... 
 if ( $i % 3 == 0 && $i != 0) { 
   $NAV1 .= "</tr><tr>"; 
 } 
statt der 3 eine 2 eingesetzt, dann macht er auf der ersten Zeile 3 Zellen, auf der zweiten Zeile aber seltsamerweise nur 2 Zellen und schreibt die letzte Zelle in eine dritte Zeile :?
************

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

25. Jul 2005, 13:05

Hi

Code: Alles auswählen

// hier %3 da pro Zeile 3 Elemente...
 if (($i+1) % 3 == 0) {
   $NAV1 .= "</tr><tr>";
 }
versuch ma so

Gruß,
Markus

Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

25. Jul 2005, 13:21

Hi Markus,

ich hab das jetzt so eingebaut... Danke :)

Eines ist seltsam...
Wenn ich die Kategorien mit Prio 1 bis 6 anzeigen lasse, funktioniert es - wenn ich aber z.b. die 6 offline nehme und dafür die 7 anzeigen lasse, sieht es wieder aus wie vorher 3 - 2 - 1 :?
Woran kann denn das liegen?

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

25. Jul 2005, 14:08

Hi,

letzter Versuch ;)

Code: Alles auswählen

// 1. NAVI

$NAV1 = "";
$cat_id = 0;
@include $REX[INCLUDE_PATH]."/generated/categories/$cat_id.list.category";
$NAV = $REX[RECAT][$cat_id];
for ($i=0;$i<count($NAV);$i++)
{
 $id = current($NAV);
 $aid = $REX[CAT][$id][article_id];
 $name = $REX[CAT][$id][name];
 if ($i==0) $NAV1 .= "
   <table class=menu cellspacing=0 cellpadding=0><tr>";
 @include $REX[INCLUDE_PATH]."/generated/articles/$aid.article";
 if ( $REX[CAT][$id][status]==1) {
   if ($cat2==$id )
   {
      $NAV1 .= "
        <td>"."<a href=index.php?article_id=$aid>$name</a></td>";
     if ($NAV2 != "") $NAV1 .= "$NAV2";
   }else{
       if ($name == "")
       {
         $NAV1 .= "
        <td>&nbsp;</td>";
       }else
       {
         $NAV1 .= "
        <td><a href=index.php?article_id=$aid>$name</a></td>";
        }
   }
    // hier %3 da pro Zeile 3 Elemente...
   if (($i+1) % 3 == 0) {
     $NAV1 .= "</tr><tr>";
   }
 }
 
 if (($i+1)==count($NAV)) $NAV1 .= "
   </tr>
   </table>";
 next($NAV);
}
echo $NAV1;
?> 

Gruß,
Markus

Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

25. Jul 2005, 15:02

Dankeschööön, aber jetzt muss ich nochmal nerven :(

An sich funzt es, aber halt immer noch nur, wenn ich die Kategorien mit Prio 1 bis 6 online habe und wenn ich z.B. die 5 offline mache und dafür die 7 online, macht er wieder 3 Zeilen mit 3 - 2 - 1 Einträgen :(

Klaro, ich werd halt die Prios dementsprechend ändern, aber interessieren würd's mich schon, wieso er's zerhaut :?

Btw... wie mach ich denn z.B. wenn ich ein Impressum haben möchte, das aber nicht in der Navigation auftaucht... muss ich das dann als Artikel in der obersten Ebene der Struktur einfügen oder wie?? :?

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

25. Jul 2005, 15:13

Livia hat geschrieben: An sich funzt es, aber halt immer noch nur, wenn ich die Kategorien mit Prio 1 bis 6 online habe und wenn ich z.B. die 5 offline mache und dafür die 7 online, macht er wieder 3 Zeilen mit 3 - 2 - 1 Einträgen :(
Bitte mit folgendem nochma versuchen

Code: Alles auswählen

// 1. NAVI

$NAV1 = "";
$cat_id = 0;
@include $REX[INCLUDE_PATH]."/generated/categories/$cat_id.list.category";
$NAV = $REX[RECAT][$cat_id];
$counter = 1;
for ($i=0;$i<count($NAV);$i++)
{
 $id = current($NAV);
 $aid = $REX[CAT][$id][article_id];
 $name = $REX[CAT][$id][name];
 if ($i==0) $NAV1 .= "
   <table class=menu cellspacing=0 cellpadding=0><tr>";
 @include $REX[INCLUDE_PATH]."/generated/articles/$aid.article";
 if ( $REX[CAT][$id][status]==1) {
   if ($cat2==$id )
   {
      $NAV1 .= "
        <td>"."<a href=index.php?article_id=$aid>$name</a></td>";
     if ($NAV2 != "") $NAV1 .= "$NAV2";
   }else{
       if ($name == "")
       {
         $NAV1 .= "
        <td>&nbsp;</td>";
       }else
       {
         $NAV1 .= "
        <td><a href=index.php?article_id=$aid>$name</a></td>";
        }
   }
    // hier %3 da pro Zeile 3 Elemente...
   if ($counter % 3 == 0) {
     $NAV1 .= "</tr><tr>";
   }
   $counter++;
 }
 
 if (($i+1)==count($NAV)) $NAV1 .= "
   </tr>
   </table>";
 next($NAV);
}
echo $NAV1;
?> 
Livia hat geschrieben: Klaro, ich werd halt die Prios dementsprechend ändern, aber interessieren würd's mich schon, wieso er's zerhaut :?
Naja, man sollte den Code dem Backend und nicht umgekehrt anpassen.. ;). Solls auch geben das jemand einen Artikel/Kategorie gerne offline hätte..
Livia hat geschrieben: Btw... wie mach ich denn z.B. wenn ich ein Impressum haben möchte, das aber nicht in der Navigation auftaucht... muss ich das dann als Artikel in der obersten Ebene der Struktur einfügen oder wie?? :?
Normalerweise handhabe ich das für mich immer so, dass nur Kategorien in der Navigation auftauchen, d.h. man könnte das Impressum in irgendeiner Kategorie (auch Root-Kat) als Artikel ablegen und es würde nicht in der Nav erscheinen.

Gruß,
Markus

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

25. Jul 2005, 17:41

Hej,
Livia hat geschrieben: Grad für die Background-Sache sind mir halt als erstes Tables eingefallen, da ich keinen Schimmer habe, wie ich ein "dynamisches Div" erstelle, das immer genauso breit ist, wie der freie Platz neben dem Content-Bereich... und das ganze dann noch auf jedem Browser einwandfrei dargestellt zu kriegen... :?
Weiss nicht was du wirklich erreichen willst. Daher wäre es schön, wenn du eimal ein image online setzen könntest damit man dir "kleine"tipps geben kann.

Thomas

Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

26. Jul 2005, 15:27

@tbaddade
Ich weiss, ist schwer zu erklären. Ich hab mal ein Bildchen gebastelt. Die Seite darf ich noch nicht zeigen - hab ich versprochen :-)

[ externes Bild ]

- Seitenhintergrund ist weiss
- der schwarze Balken oben soll immer da bleiben und über die ganze Seitenbreite reichen.
- der hellgraue Bereich soll gecentered sein und immer fix 895 px breit sein.
- innerhalb des greauen Bereichs befinden sich der Header und die Content-Bereiche, die auch fixe Breiten haben.
- links vom hellgrauen Bereich soll ab etwas unter der Bildschirmhälfte ein Hintergrund bis zum unteren Ende der Seite laufen.
- rechts vom hellgrauen Bereich soll etwas unterhalb der Bildschirmhälfte ein Streifen mit Hintergrund bis zum rechten Ende der Seite laufen, aber nur 300 px hoch sein.
- innerhalb des Headers soll rechtsbündig und vertikal zentriert das Menü aus 10 Einträgen in 2 Zeilen stehen.

Wie setze ich sowas mit DIV/CSS um? :?:

@kills:
Dickes Dankeschön für die Hilfe mit dem Menü :-)
Habe ein kleines Problem - es sollen nun plötzlich nicht 6 sondern 10 Einträge im Menü sein :-(
Muss ich da viel ändern an dem Code??

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

26. Jul 2005, 15:36

Livia hat geschrieben: @kills:
Dickes Dankeschön für die Hilfe mit dem Menü :-)
Habe ein kleines Problem - es sollen nun plötzlich nicht 6 sondern 10 Einträge im Menü sein :-(
Muss ich da viel ändern an dem Code??
Hm die ganze Zeit waren es 3 Elemente pro Reihe, nicht 6 oder(?).

Naja auf jeden Fall, für 10 Einträge pro Reihe einfach das %3 in %10 ändern und fertig.

Gruß,
Markus

Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

26. Jul 2005, 15:54

kills hat geschrieben:Hm die ganze Zeit waren es 3 Elemente pro Reihe, nicht 6 oder(?).
Es waren 6 insgesamt - 3 pro Reihe und jetzt 10 - also 5 pro Reihe... sorry :oops:
Danke :-)

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

27. Jul 2005, 19:22

Hej,
Livia hat geschrieben: Ich weiss, ist schwer zu erklären. Ich hab mal ein Bildchen gebastelt. Die Seite darf ich noch nicht zeigen - hab ich versprochen :-)
also da muss ich mal fragen, ob du einen Auftrag angenommen hast, den du eigentlich nicht realisieren kannst?

Wenn ich deine Beschreibung richtig verstanden habe, ist es ein etwas komplexeres CSS-Layout will man auch einige Browser unterstützen. Das man das genaue Layout nicht sehen kann, ist sehr schade. Man darf nicht immer in Divs bzw. Blöcken denken.

Wenn du ein Template haben willst, sag bescheid, aber dies hier so einfach mal ins Forum geschrieben, kann ich so nicht machen. Ist zu komplex nach deiner Beschreibung -> zeitintensiv.

Thomas

Livia
Beiträge: 91
Registriert: 16. Jul 2005, 20:30

28. Jul 2005, 14:46

naja - Auftrag würde ich es nicht wirklich nennen - eher Freundschaftsdienst ;-)

Yes - komplexeres Layout und es sollen möglichst ALLE Browser unterstützt werden ;-)

Du - für mich und den "Webmaster" passt es soweit - wie gesagt, erstmal hab ich es "dirty" mit Tabellen gelöst und wenn ich Zeit und Muse habe, versuch ich es selber mal mit DIVs etc.. :-)
Danke trotzdem :-)
tbaddade hat geschrieben:Man darf nicht immer in Divs bzw. Blöcken denken
ich dachte "zeitgemässes Webdesign" wär nur noch mit DIVS und CSS :-?

Zurück zu „Allgemeines [R2]“