Spezielle navi ausgabe

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

Spezielle navi ausgabe

Beitragvon Richard.Laing » 30. Jan 2009, 13:21

hi@all

ich habe leider ein kleines problem bei der erstellung einer navigation.

ich brauche eine navigation die alle kategorien und artikel die online sind ausgibt. also im prinzip eine sitemap aber die ausgabe muß exakt so sein:

ausgabe der ul li liste:

Code: Alles auswählen
<ul id="MenuBar1" class="MenuBarHorizontal">
  <li><a class="MenuBarItemSubmenu" href="#">Element 1</a>
      <ul>
        <li><a href="#">Element 1.1</a></li>
        <li><a href="#">Element 1.2</a></li>
        <li><a href="#">Element 1.3</a></li>
      </ul>
  </li>
  <li><a href="#">Element 2</a></li>
  <li><a class="MenuBarItemSubmenu" href="#">Element 3</a>
      <ul>
        <li><a class="MenuBarItemSubmenu" href="#">Element 3.1</a>
            <ul>
              <li><a href="#">Element 3.1.1</a></li>
              <li><a href="#">Element 3.1.2</a></li>
            </ul>
        </li>
        <li><a href="#">Element 3.2</a></li>
        <li><a href="#">Element 3.3</a></li>
      </ul>
  </li>
  <li><a href="#">Element 4</a></li>
</ul>


ich habe es mit den sitemap templates versucht, bekomme aber nie die richtige id oder classe an die richtige stelle. bin leider kein programmierer würde mich aber über die hilfe von einem freuen.

danke gruß richy

ps: bastele gerade mit dem spry framework und würde gerne der gemeinde ein paar nette sachen zur verfügung stellen. die natürlich auch funktionieren sollen :)


AKTUELLE NAVI VERSION:



<?php

function sitemapliste2(&$openul,$lev,$PathIndex,$lastcat) {
$time = time();
{
if($openul == 0) {
print '<ul id="MenuBar1" class="MenuBarHorizontal">';
$openul = 1;
}

if($lastcat == $lev){
$last = '';
$last2 = '';
} else {
$last = '';
$last2 = '';
}

if(sizeof($lev->getChildren()) != 0 OR count($lev->getArticles()) > 1){
$open = 'Open';
} else {
$open = '';
}

print '<li><a href="'.$lev->getUrl().'">'.$lev->getName().'</a>';


////////////ARTIKEL START///////////////////

$article = $lev->getArticles();
$i=0;
$j=0;
if (count($article) > 1) {
echo '<ul>';

foreach ($article as $var) {
if ($var->isOnline(true) and $articleId != $lev->getId()){
$i = $i+1;
}
}

foreach ($article as $var) {

$articleId = $var->getId();
$articleName = $var->getName();

if ($var->isOnline(true) and $articleId != $lev->getId()){
$j = $j + 1;
if($j == $i){
$last = '';
$last2 = '';
} else {
$last = '';
$last2 = '';
}
print '<li class="MenuBarItemSubmenu"><a class="MenuBarItemSubmenu" href="'.rex_getUrl($articleId).'">'.$articleName.'</a></li>';

}
}
echo '</ul>';
}
////////////ARTIKEL ENDE/////////////////////

$levSize = sizeof($lev->getChildren());

if($_SESSION['USR_TYP'] < $lev->getValue("art_type_id")){
$levSize = 0;
}

if($levSize != 0)
{
$opensubul = 0;
$k = 0;
foreach($lev->getChildren() as $sublevel) {
$k = $k + 1;
if($k == $levSize){
$lastcat = $sublevel;
}
sitemapliste2($opensubul,$sublevel,$PathIndex + 1,$lastcat);
}
if($opensubul == 1)
echo "</ul>";
}
echo "</li>\n";
}
}

$openul = 0;

foreach (OOCategory::getRootCategories() as $lev1){
sitemapliste2($openul,$lev1,1,0);
}

if($openul == 1) {
echo "</ul>\n";
}

?>


LEIDER WERDEN NOCH ALLE OFFLINE KATEGORIEN UND ARTIKEL ANGEZEIGT und das:

Code: Alles auswählen
<ul  id="MenuBar1" class="MenuBarHorizontal">


bei jeder ul??

also so:

Code: Alles auswählen
<div id="nav-header">
<ul  id="MenuBar1" class="MenuBarHorizontal"><li><a href="home">Home</a><ul  id="MenuBar1" class="MenuBarHorizontal"><li><a href="home/home-1">Home 1</a></li>
</ul></li>
<li><a href="team">Team</a><ul  id="MenuBar1" class="MenuBarHorizontal"><li><a href="team/team-1">Team 1</a></li>
<li><a href="team/team-2">Team 2</a></li>
</ul></li>
<li><a href="system">System</a><ul  id="MenuBar1" class="MenuBarHorizontal"><li><a href="system/system-1">System 1</a></li>

</ul></li>
<li><a href="erste-schritte">Erste Schritte</a></li>
<li><a href="kontakt">Kontakt</a></li>
<li><a href="newsletter">Newsletter</a><ul  id="MenuBar1" class="MenuBarHorizontal"><li><a href="newsletter/23-01-2009">23-01-2009</a></li>
</ul></li>
</ul>

</div>




BITTE UM HILFE...
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Benutzeravatar
Richard.Laing
 
Beiträge: 2109
Registriert: 27. Aug 2005, 23:55
Wohnort: Brühl / Rheinland

Beitragvon heppi » 30. Jan 2009, 18:29

möglicherweise hilfts ... :wink:

Code: Alles auswählen
<?php

$z=0;

function sitemapliste2(&$openul,$lev,$PathIndex,$lastcat){
   global $z;
   
    $time = time();
    {
        if($openul == 0 && $z == 0){
            print '<ul id="MenuBar1" class="MenuBarHorizontal">';
            $openul = 1;
        }
       
        if($openul == 0){
            print '<ul>';
            $openul = 1;
        }
       
        if ($lev->isOnline()) {
           print '<li><a href="'.$lev->getUrl().'">'.$lev->getName().'</a>';
        }

        ////////////ARTIKEL START///////////////////
        $article = $lev->getArticles();
        $i=0;
        $j=0;
        if (count($article) > 1) {
         echo '<ul>';

         foreach ($article as $var) {
                 if ($var->isOnline() and $articleId != $lev->getId()){
                    $i = $i+1;
                 }
         }

         foreach ($article as $var) {

           $articleId = $var->getId();
           $articleName = $var->getName();

           if ($var->isOnline() and $articleId != $lev->getId()){
                   print '<li><a href="'.rex_getUrl($articleId).'">'.$articleName.'</a></li>';
           }
         }
         echo '</ul>';
        }
        ////////////ARTIKEL ENDE/////////////////////
        $levSize = sizeof($lev->getChildren());

        if($_SESSION['USR_TYP'] < $lev->getValue("art_type_id")){
            $levSize = 0;
        }

        if($levSize != 0)
        {
            $opensubul = 0;
            $k = 0;
            foreach($lev->getChildren() as $sublevel) {
                $k = $k + 1;
                if($k == $levSize){
                   $lastcat = $sublevel;
                }
                sitemapliste2($opensubul,$sublevel,$PathIndex + 1,$lastcat);
            }
            if($opensubul == 1)
                echo "</ul>";
        }
        if ($lev->isOnline()) {
           echo "</li>\n";
        }
    }
    $z++;
}

$openul = 0;
foreach (OOCategory::getRootCategories() as $lev1){
    sitemapliste2($openul,$lev1,1,0);
}

if($openul == 1) {
    echo "</ul>\n";
}

?>
heppi
 
Beiträge: 30
Registriert: 20. Jan 2009, 21:19

Beitragvon Richard.Laing » 30. Jan 2009, 20:22

hi heppi

ich kann nur sagen danke.... klappt bestens.

werde mich jetzt noch ein wenig mit den rechten bei adobe und dem spry framework einlesen, ob ich das auch darf was ich vorhabe.

habe die scripte soweit fertig (nur noch ein paar feinheiten) dann würde ich diese gerne hier der allgemeinheit zur verfügung stellen.

danke nochmal gruß richy
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Benutzeravatar
Richard.Laing
 
Beiträge: 2109
Registriert: 27. Aug 2005, 23:55
Wohnort: Brühl / Rheinland

Beitragvon Richard.Laing » 31. Jan 2009, 14:49

hi bei der html validitätsprüfung ist leider noch ein fehler im meue: ein <ul></ul> zuviel... hmmm...
wenn da noch jemand rat weis...

FEHLER BESTEHT NUR WENN EIN ARTIKEL ODER EINE KATEGORIE OFFLINE IST

augegebener code:

Code: Alles auswählen
<ul id="MenuBar1" class="MenuBarHorizontal"><li><a href="home">Home</a></li>
<li><a href="team">Team</a><ul><li><a href="team/team-1">Team 1</a><ul><li><a href="team/team-1/team-3">Team 3</a><ul><li><a href="team/team-1/team-3/team-5">Team 5</a></li>
</ul></li>
<li><a href="team/team-1/team-4">Team 4</a></li>
</ul></li>
<li><a href="team/team-2">Team 2</a></li>
</ul></li>
<li><a href="system">System</a><ul><li><a href="system/system-1">System 1</a></li>

</ul></li>
<li><a href="erste-schritte">Erste Schritte</a></li>
<li><a href="kontakt">Kontakt</a></li>
<ul></ul><li><a href="tester">Tester</a></li>
</ul>


das letzte <ul></ul> ist zuviel

Code: Alles auswählen
<ul></ul><li><a href="tester">Tester</a></li>


wie bekomme ich das denn raus aus der navi?

gruß richy
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Benutzeravatar
Richard.Laing
 
Beiträge: 2109
Registriert: 27. Aug 2005, 23:55
Wohnort: Brühl / Rheinland

Beitragvon Richard.Laing » 31. Jan 2009, 18:17

hi habe noch ein wenig selber gebastelt :)

so sollte es nun auch valide sein (zumindest bei mir teste aber noch ein wenig)

Code: Alles auswählen
<?php

$z=0;

function sitemapliste2(&$openul,$lev,$PathIndex,$lastcat){
   global $z;
   
    $time = time();
    {
        if($openul == 0 && $z == 0){
            print '<ul id="MenuBar1" class="MenuBarHorizontal">';
            $openul = 1;
        }
       
        if($openul == 0 && $z != 0){
        if ($lev->isOnline()) {
            print '<ul>';
            $openul = 1;
      }
        }
       

        if ($lev->isOnline()) {
           print '<li><a href="'.$lev->getUrl().'">'.$lev->getName().'</a>';
        }

        ////////////ARTIKEL START///////////////////
        $article = $lev->getArticles();
        $i=0;
        $j=0;
        if (count($article) > 1) {
         echo '<ul>';

         foreach ($article as $var) {
                 if ($var->isOnline() and $articleId != $lev->getId()){
                    $i = $i+1;
                 }
         }

         foreach ($article as $var) {

           $articleId = $var->getId();
           $articleName = $var->getName();

           if ($var->isOnline() and $articleId != $lev->getId()){
                   print '<li><a href="'.rex_getUrl($articleId).'">'.$articleName.'</a></li>';
           }
         }
         echo '</ul>';
        }
        ////////////ARTIKEL ENDE/////////////////////

        $levSize = sizeof($lev->getChildren());

        if($_SESSION['USR_TYP'] < $lev->getValue("art_type_id")){
            $levSize = 0;
        }

        if($levSize != 0)
        {
            $opensubul = 0;
            $k = 0;
            foreach($lev->getChildren() as $sublevel) {
                $k = $k + 1;
                if($k == $levSize){
                   $lastcat = $sublevel;
                }
                sitemapliste2($opensubul,$sublevel,$PathIndex + 1,$lastcat);
            }
            if($opensubul == 1)
                echo "</ul>";
        }
        if ($lev->isOnline()) {
           echo "</li>\n";
        }
    }
    $z++;
}

$openul = 0;
foreach (OOCategory::getRootCategories() as $lev1){
    sitemapliste2($openul,$lev1,1,0);
}

if($openul == 1) {
    echo "</ul>\n";
}

?>


gruß richy
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Benutzeravatar
Richard.Laing
 
Beiträge: 2109
Registriert: 27. Aug 2005, 23:55
Wohnort: Brühl / Rheinland

Beitragvon darwin » 1. Feb 2009, 19:26

OFFTOPIC:
Was kann das spry framework denn alles?...
bzw. was genau möchtest du damit machen?
OFFTOPICENDE

grz. Chris
Benutzeravatar
darwin
 
Beiträge: 1261
Registriert: 2. Jan 2007, 16:10
Wohnort: LA

Beitragvon Richard.Laing » 1. Feb 2009, 20:18

hi chris

zum einen finde ich die klappmenues interessant natürlich die registerkarten (ohne seiten neu zu laden funktioniert auch schon) das accordion ist nicht schlecht, und die daten per (bei dreamweaver cs3 xml) ohne die seite neu laden zu müßen anzeigen zu lassen. (ajax artig)

das menue funktioniert soweit auch schon und das auch sehr gut in allen browsern. das problem ensteht wenn eine kategorie offline ist, wird ein <ul></ul> ausgegeben und das wird natürlich bei der validierung als fehler ausgegeben.

ich bau dir gerne mal eine demo wenn du dir das mal anschauen möchtest. kurze info per pn

gruß richy
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Benutzeravatar
Richard.Laing
 
Beiträge: 2109
Registriert: 27. Aug 2005, 23:55
Wohnort: Brühl / Rheinland

Beitragvon heppi » 3. Feb 2009, 12:43

hallo richy,

ich denke du willst nur über die kategorien gehen und nicht auf die artikel achten - evt. so:

Code: Alles auswählen
<?php

$z=0;

function sitemapliste2(&$openul,$lev,$PathIndex,$lastcat){
   global $z;
   
    $time = time();
    {
        if($openul == 0 && $z == 0){
            print '<ul id="MenuBar1" class="MenuBarHorizontal">';
            $openul = 1;
        }
       
        if($openul == 0 && $z != 0){
        if ($lev->isOnline()) {
            print '<ul>';
            $openul = 1;
      }
        }
       

        if ($lev->isOnline()) {
           print '<li><a href="'.$lev->getUrl().'">'.$lev->getName().'</a>';
        }

        ////////////ARTIKEL START///////////////////
        /*$article = $lev->getArticles();
        $i=0;
        $j=0;
        if (count($article) > 1) {
         echo '<ul>';

         foreach ($article as $var) {
                 if ($var->isOnline() and $articleId != $lev->getId()){
                    $i = $i+1;
                 }
         }

         foreach ($article as $var) {

           $articleId = $var->getId();
           $articleName = $var->getName();

           if ($var->isOnline() and $articleId != $lev->getId()){
                   print '<li><a href="'.rex_getUrl($articleId).'">'.$articleName.'</a></li>';
           }
         }
         echo '</ul>';
        }*/
        ////////////ARTIKEL ENDE/////////////////////

        $levSize = sizeof($lev->getChildren());

        if($_SESSION['USR_TYP'] < $lev->getValue("art_type_id")){
            $levSize = 0;
        }

        if($levSize != 0)
        {
            $opensubul = 0;
            $k = 0;
            foreach($lev->getChildren() as $sublevel) {
                $k = $k + 1;
                if($k == $levSize){
                   $lastcat = $sublevel;
                }
                sitemapliste2($opensubul,$sublevel,$PathIndex + 1,$lastcat);
            }
            if($opensubul == 1)
                echo "</ul>";
        }
        if ($lev->isOnline()) {
           echo "</li>\n";
        }
    }
    $z++;
}

$openul = 0;
foreach (OOCategory::getRootCategories() as $lev1){
    sitemapliste2($openul,$lev1,1,0);
}

if($openul == 1) {
    echo "</ul>\n";
}

?>
heppi
 
Beiträge: 30
Registriert: 20. Jan 2009, 21:19

Beitragvon Richard.Laing » 3. Feb 2009, 12:45

na probier ich doch gleich mal aus :)

danke schon mal für deine mühe

gruß richy


EDIT: sieht gut aus... werde heute abend mal in ruhe testen... danke
REXvideo Videotutorials für Redaxo www.REXvideo.de
Webseite www.on-laing.de smokezig.de www.smokezig.de
Benutzeravatar
Richard.Laing
 
Beiträge: 2109
Registriert: 27. Aug 2005, 23:55
Wohnort: Brühl / Rheinland


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast