AMR bei geteilter Hauptnavigation

Gesperrt
nostromo
Beiträge: 5
Registriert: Mi 21. Apr 2010, 11:50
Kontaktdaten:

AMR bei geteilter Hauptnavigation

Beitrag von nostromo »

Hallo zusammen,

ich verwende das u.a. Modul als geteilte Hauptnavigation.
Leider funktioniert MR damit nicht. Kann mir jemand helfen?
Contenido Version: 4.8.12
AMR-Version: 0.5.4

Hauptnavigation Kategorie 1

Input

Code: Alles auswählen

?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :     Hauptnavigation
* Author(s)   :     Jan Lengowski, Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
************************************************/

#Select tree
?>
<table cellspacing="0" cellpadding="0" cellpadding="4">
  <tr>
    <td class="text"><?php echo mi18n("Baum wählen"); ?>:</td>
      <td>
        <select name="CMS_VAR[0]">
        <option value="0">-- <?php echo mi18n("kein"); ?> --</option>
          <?php
            $sql = "
              SELECT
                A.idcat,
                C.name
              FROM
                ".$cfg["tab"]["cat_tree"]." AS A,
                ".$cfg["tab"]["cat"]." AS B,
                ".$cfg["tab"]["cat_lang"]." AS C
              WHERE
                A.idcat     = B.idcat AND
                B.idcat     = C.idcat AND
                C.idlang    = '".$lang."' AND
                B.idclient  = '".$client."' AND
                C.visible   = 1 AND
                A.level     = '0'
              ORDER BY
                A.idtree";

            $db->query($sql);

            while ( $db->next_record() ) {
              if ( "CMS_VALUE[0]" == $db->f("idcat") ) {
                echo '<option selected="selected" value="'.$db->f("idcat").'">'.$db->f("name").'</option>';
              } else {
                echo '<option value="'.$db->f("idcat").'">'.$db->f("name").'</option>';
              }
            }
          ?>
        </select>
      </td>
    </tr>
  </table>
<?php
Output

Code: Alles auswählen

<?php
/************************************************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Hauptnavigation
* Author(s)   :     Jan Lengowski, Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
* Modified    :     12.11.2007 - Maron Chatzifrantzis, angepasst auf
*                   Basis von OSI's "geteilte Navigation 4.6.2 BETA"
************************************************************************/

#System properties in use:
#Type: navigation, Name: idcat_homepage
#Contains idcat of tree to be displayed in main navigation

#Includes
cInclude("frontend", "includes/functions.navigation.php");

#If no tree is selected, use client setting
$start_cat = "CMS_VALUE[0]";
if ($start_cat=='') {
    $cApiClient = new cApiClient($client);
   $start_cat = $cApiClient->getProperty('navigation','idcat_homepage');
}

if ( !is_object($db2) ) {
    $db2 = new DB_Contenido;
}

/**
 * Check if a category is child
 * of another category
 *
 * @return boolean true/false
 * @author Jan Lengowski <Jan.Lengowski@4fb.de>
 * @copyright four for business AG 2003
 */
if (!function_exists("catIsChildOf")) {
function catIsChildOf($id, $idparent) {

    global $cfg, $client, $lang;

    $db = new DB_Contenido;

    $parent = $id;

    while ( $parent != 0 ) {

        $sql = "SELECT
                    a.parentid
                FROM
                    ".$cfg["tab"]["cat"]." AS a,
                    ".$cfg["tab"]["cat_lang"]." AS b
                WHERE
                    a.idclient  = '".$client."' AND
                    b.idlang    = '".$lang."' AND
                    a.idcat     = b.idcat AND
                    a.idcat   = '".$parent."'";

        $db->query($sql);
        $db->next_record();

        $parent = $db->f("parentid");

        if ($parent == $idparent) {
            return true;
        }

    }

    return false;

}
}
if ( catIsChildOf($idcat, $start_cat) ) {
    $sel_idcat = $idcat;
} else {
    $sel_idcat = $start_cat;
}

/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');

/**
 * Array storing alle the
 * navigation data
 */
$navitems = array();


/* Template Instance */
$tpl = new Template;

/**
 * Recursive function for creating
 * the navigation array
 * @param Int $idcat Category id
 */
function nav($idcat) {

        global $navitems, $client, $lang, $cfg, $start_cat;

        $db  = new DB_Contenido;
        $db2 = new DB_Contenido;

        $sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'";

        $db->query($sql);
        $db->next_record();

        $parentid = $db->f("parentid");

        if ( $parentid == 0 ) {

           if ( $idcat != $start_cat ){

                $navitems = array();
             
                $sql = "SELECT
                            A.idcat,
                            C.name,
                            C.public,
                            C.idcatlang
                        FROM
                            ".$cfg["tab"]["cat_tree"]." AS A,
                            ".$cfg["tab"]["cat"]." AS B,
                            ".$cfg["tab"]["cat_lang"]." AS C
                        WHERE
                            A.idcat     = B.idcat   AND
                            B.idcat     = C.idcat   AND
                            B.idclient  = '$client' AND
                            C.idlang    = '$lang'   AND
                            C.visible   = '1'       AND
                            B.parentid  = '".$start_cat."'
                        ORDER
                            BY A.idtree";

                      $db->query($sql);

                      while ($db->next_record()) {

                            /* Check for external redirects... */
                            $sql = "SELECT
                                        a.external_redirect AS ext,
                                        a.idartlang AS idartlang
                                    FROM
                                        ".$cfg["tab"]["art_lang"]." AS a,
                                        ".$cfg["tab"]["cat_art"]." AS b,
                                        ".$cfg["tab"]["cat"]." AS c
                                    WHERE
                                        b.idcat     = '".$db->f("idcat")."' AND
                                        c.idclient  = '".$client."' AND
                                        c.idcat     = b.idcat AND
                                        a.idart     = b.idart AND
                                        a.idlang    = '".$lang."'";

                            $db2->query($sql);
                            $flag = false;
                     while ($db2->next_record()&&!$flag) {
                               if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
                               {
                           $flag = true;
                                   $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
   
                                   $navitems[$db->f("idcat")] = array("idcat"      => $db->f("idcat"),
                                                                       "name"      => $db->f("name"),
                                                                       "target"    => $target,
                                                                 "public" => $db->f("public"),
                                                                "idcatlang" => $db->f("idcatlang"));
                               }
                     }
                      }

           }
           
           return true;
        }

        $sql = "SELECT
                    A.idcat,
                    C.name,
                  C.public,
                    C.idcatlang
                FROM
                    ".$cfg["tab"]["cat_tree"]." AS A,
                    ".$cfg["tab"]["cat"]." AS B,
                    ".$cfg["tab"]["cat_lang"]." AS C
                WHERE
                    A.idcat     = B.idcat   AND
                    B.idcat     = C.idcat   AND
                    B.idclient  = '$client' AND
                    C.idlang    = '$lang'   AND
                    C.visible   = '1'       AND
                    B.parentid  = '$parentid'
                ORDER BY
                    A.idtree";

        $db->query($sql);

        while ($db->next_record()) {

                /* Check for external redirects... */
                $sql = "SELECT
                            a.external_redirect AS ext,
                            a.idartlang AS idartlang
                        FROM
                            ".$cfg["tab"]["art_lang"]." AS a,
                            ".$cfg["tab"]["cat_art"]." AS b,
                            ".$cfg["tab"]["cat"]." AS c
                        WHERE
                            b.idcat     = '".$db->f("idcat")."' AND
                            c.idclient  = '".$client."' AND
                            c.idcat     = b.idcat AND
                            a.idart     = b.idart AND
                            a.idlang    = '".$lang."'";

                $db2->query($sql);
            $flag = false;
                while ($db2->next_record() && !$flag) {
                   if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
                   {
                  $flag = true;
                       $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
                      
                       $tmp_nav[$db->f("idcat")] = array("idcat"   => $db->f("idcat"),
                                                         "name"    => $db->f("name"),
                                                          "public" => $db->f("public"),
                                                  "idcatlang" => $db->f("idcatlang"),
                                                         "target"  => $target);
                   }
            }
        }

        $tmp_nav[$idcat]["sub"] = $navitems;
        $navitems = $tmp_nav;

        /* Function call */
        nav($parentid);

}  // end function

$sql = "SELECT
            A.idcat,
            C.name,
          C.public,
             C.idcatlang
        FROM
            ".$cfg["tab"]["cat_tree"]." AS A,
            ".$cfg["tab"]["cat"]." AS B,
            ".$cfg["tab"]["cat_lang"]." AS C
        WHERE
            A.idcat     = B.idcat   AND
            B.idcat     = C.idcat   AND
            B.idclient  = '$client' AND
            C.idlang    = '$lang'   AND
            C.visible   = '1'       AND
            B.parentid  = '$sel_idcat'
        ORDER BY
            A.idtree";

$db->query($sql);

while ( $db->next_record() ) {

        /* Check for external redirects... */
        $sql = "SELECT
                    a.external_redirect AS ext,
                    a.idartlang AS idartlang
                FROM
                    ".$cfg["tab"]["art_lang"]." AS a,
                    ".$cfg["tab"]["cat_art"]." AS b,
                    ".$cfg["tab"]["cat"]." AS c
                WHERE
                    b.idcat     = '".$db->f("idcat")."' AND
                    c.idclient  = '".$client."' AND
                    c.idcat     = b.idcat AND
                    a.idart     = b.idart AND
                    a.idlang    = '".$lang."'";

        $db2->query($sql);
        #$db2->next_record();
      $flag = false;
      while ($db2->next_record()&&!$flag) {
           if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
           {
            $flag = true;
               $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
      
               $navitems[$db->f("idcat")] = array("idcat"  => $db->f("idcat"),
                                                  "name"   => $db->f("name"),
                                                  "public" => $db->f("public"),
                                            "idcatlang" => $db->f("idcatlang"),
                                                  "target" => $target);
           }
      }
}

/* Create Navigation Array */
if (($sel_idcat == '') || ($sel_idcat == '0')) {
    $cApiClient = new cApiClient($client);
    $sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}

nav($sel_idcat);

/* Start Output buffer */
ob_start();

foreach( $navitems as $key => $data ) {

 /* 1. Navigation level */
 if( checkCatPermission($data['idcatlang'],$data['public']) ) {
    $tpl->reset();
  $tpl->set('d', 'NAME',  $data['name']);
  $tpl->set('d', 'UL_STAGE', '2');
  $tpl->set('d', 'LI_STAGE', '1');
  $tpl->set('d', 'TARGET', $data['target']);
  $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));
  $tpl->next();
  if( $idcat == $data['idcat'] && empty($data['sub']) ) {
     $tpl->generate('templates/mnavi1_on.html', 0, 0);
  } elseif( $idcat == $data['idcat'] && !empty($data['sub']) ) {
     $tpl->generate('templates/mnavi1_on_open.html', 0, 0);
  } elseif( $idcat != $data['idcat'] && !empty($data['sub']) && catIsChildOf($sel_idcat, $data['idcat']) ) {
     $tpl->generate('templates/mnavi1_off_open.html', 0, 0);
  } else {
     $tpl->generate('templates/mnavi1_off.html', 0, 0);
  $second_subdata = $data['sub'];
  }
 } // end if
} // end foreach

/* Read out buffer */
$html = ob_get_contents();

/* Clean buffer */
ob_end_clean();

/* Output buffer-contents */

echo "$html";

?>
Hauptnavigation Kategorie 2-5

Input (leer)

Output

Code: Alles auswählen

<?php

if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}

$sText = "CMS_HTMLHEAD[100]";

$tpl->reset();
if ($contenido && $edit) {
    $tpl->set('s', 'text', $sText);
    $tpl->generate('templates/headline_h2.html');
} else {
    if ($sText != '') {
        $tpl->set('s', 'text', strip_tags($sText));
        $tpl->generate('templates/headline_h2.html');
    }
}

echo "<div id=\"hauptnavi_ebene2\">";

/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');

/**
 * Array storing alle the
 * navigation data
 */
$navitems = array();


/* Template Instance */
$tpl = new Template;

$sql = "SELECT
            A.idcat,
            C.name,
          C.public,
             C.idcatlang
        FROM
            ".$cfg["tab"]["cat_tree"]." AS A,
            ".$cfg["tab"]["cat"]." AS B,
            ".$cfg["tab"]["cat_lang"]." AS C
        WHERE
            A.idcat     = B.idcat   AND
            B.idcat     = C.idcat   AND
            B.idclient  = '$client' AND
            C.idlang    = '$lang'   AND
            C.visible   = '1'       AND
            B.parentid  = '$sel_idcat'
        ORDER BY
            A.idtree";

$db->query($sql);

while ( $db->next_record() ) {

        /* Check for external redirects... */
        $sql = "SELECT
                    a.external_redirect AS ext,
                    a.idartlang AS idartlang
                FROM
                    ".$cfg["tab"]["art_lang"]." AS a,
                    ".$cfg["tab"]["cat_art"]." AS b,
                    ".$cfg["tab"]["cat"]." AS c
                WHERE
                    b.idcat     = '".$db->f("idcat")."' AND
                    c.idclient  = '".$client."' AND
                    c.idcat     = b.idcat AND
                    a.idart     = b.idart AND
                    a.idlang    = '".$lang."'";

        $db2->query($sql);
        #$db2->next_record();
      $flag = false;
      while ($db2->next_record()&&!$flag) {
           if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
           {
            $flag = true;
               $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
     
               $navitems[$db->f("idcat")] = array("idcat"  => $db->f("idcat"),
                                                  "name"   => $db->f("name"),
                                                  "public" => $db->f("public"),
                                            "idcatlang" => $db->f("idcatlang"),
                                                  "target" => $target);
           }
      }
}

/* Create Navigation Array */
if(($sel_idcat=='')||($sel_idcat=='0')){
    $cApiClient = new cApiClient($client);
    $sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}

nav($sel_idcat);

/* Start Output buffer */
ob_start();

foreach ($navitems as $key => $data) {

   if (checkCatPermission($data['idcatlang'],$data['public'])) {







  /* 2. Navigation level */
  if( is_array($data['sub']) ) {
   foreach( $data['sub'] as $key => $data ) {
    if( checkCatPermission($data['idcatlang'],$data['public']) ) {
     $tpl->reset();
     $tpl->set('d', 'NAME',  $data['name']);
     $tpl->set('d', 'UL_STAGE', '3');
     $tpl->set('d', 'LI_STAGE', '2');
     $tpl->set('d', 'TARGET', $data['target']);
     $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));
     $tpl->next();
     if( $idcat == $data['idcat'] && empty($data['sub']) ) {               
        $tpl->generate('templates/mnavi2_on.html', 0, 0);                     # AKTIVER PUNKT HAT KEINE SUBCATS
     } elseif( $idcat == $data['idcat'] && !empty($data['sub']) ) {
        $tpl->generate('templates/mnavi2_on_open.html', 0, 0);                # AKTIVER PUNKT HAT SUBCATS
       } elseif( $idcat != $data['idcat'] && is_array($data['sub']) && catIsChildOf($sel_idcat, $data['idcat']) ) {
          $tpl->generate('templates/mnavi2_off_open.html', 0, 0);               # PASSIVER PUNKT HAT SUBCATS
         } else {
            $tpl->generate('templates/mnavi2_off.html', 0, 0);                    # PASSIVER PUNKT HAT KEINE SUBCATS
           }

           if( is_array( $second_subdata ) ) {
              $last_cat = end( $second_subdata );
            if( $data['idcat'] == $last_cat['idcat'] ) {
               $tpl->generate('templates/mnavi2_end.html', 0, 0);
            } // end if
           } // end if
           $third_subdata = $data['sub'];

     /* 3. Navigation level */
     if( is_array($data['sub']) ) {
      foreach( $data['sub'] as $key => $data ) {
         if( checkCatPermission($data['idcatlang'],$data['public']) ) {
        $tpl->reset();
        $tpl->set('d', 'NAME',  $data['name']);
        $tpl->set('d', 'UL_STAGE', '4');
        $tpl->set('d', 'LI_STAGE', '3');
        $tpl->set('d', 'TARGET', $data['target']);
        $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));
        $tpl->next();
        if( $idcat == $data['idcat'] && empty($data['sub'])) {
           $tpl->generate('templates/mnavi3_on.html', 0, 0);
          } elseif( $idcat == $data['idcat'] && !empty($data['sub']) ) {
             $tpl->generate('templates/mnavi3_on_open.html', 0, 0);
            } elseif( $idcat != $data['idcat'] && is_array($data['sub']) && catIsChildOf($sel_idcat, $data['idcat']) ) {
               $tpl->generate('templates/mnavi3_off_open.html', 0, 0);
              } else {
                 $tpl->generate('templates/mnavi3_off.html', 0, 0);
                }

                if( is_array($third_subdata) ) {
                   $last_cat = end( $third_subdata );
                   if( $data['idcat'] == $last_cat['idcat'] ) {
                      $tpl->generate('templates/mnavi3_end.html', 0, 0);
                 } // end if
                } // end if
                $forth_subdata = $data['sub'];

        /* 4. Navigation level */
        if( is_array($data['sub']) ) {
         foreach( $data['sub'] as $key => $data) {
          if( checkCatPermission($data['idcatlang'],$data['public']) ) {
           $tpl->reset();
           $tpl->set('d', 'NAME',  $data['name']);
           $tpl->set('d', 'UL_STAGE', '5');
           $tpl->set('d', 'LI_STAGE', '4');
           $tpl->set('d', 'TARGET', $data['target']);
           $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));
           $tpl->next();
           if( $idcat == $data['idcat'] && empty($data['sub']) ) {
              $tpl->generate('templates/mnavi4_on.html', 0, 0);
           } elseif( $idcat == $data['idcat'] && !empty($data['sub']) ) {
              $tpl->generate('templates/mnavi4_on_open.html', 0, 0);
           } elseif( $idcat != $data['idcat'] && is_array($data['sub']) && catIsChildOf($sel_idcat, $data['idcat']) ) {
              $tpl->generate('templates/mnavi4_off_open.html', 0, 0);
           } else {
              $tpl->generate('templates/mnavi4_off.html', 0, 0);
           }

           if( is_array($forth_subdata) ) {
              $last_cat = end( $forth_subdata );
            if( $data['idcat'] == $last_cat['idcat'] ) {
               $tpl->generate('templates/mnavi4_end.html', 0, 0);
            } // end if
           } // end if
           $fith_subdata = $data['sub'];

           /* 5. Navigation level */
           if( is_array($data['sub']) ) {
              foreach( $data['sub'] as $key => $data ) {
             if( checkCatPermission($data['idcatlang'],$data['public']) ) {
              $tpl->reset();
              $tpl->set('d', 'NAME', $data['name']);
              $tpl->set('d', 'UL_STAGE', '6');
              $tpl->set('d', 'LI_STAGE', '5');
              $tpl->set('d', 'TARGET', $data['target']);
              $tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
              $tpl->next();
              if( $idcat == $data['idcat'] && empty($data['sub']) ) {
                 $tpl->generate('templates/mnavi5_on.html', 0, 0);
              } else {
                 $tpl->generate('templates/mnavi5_off.html', 0, 0);
              }

              if( is_array($fith_subdata) ) {
                 $last_cat = end($fith_subdata);
                 if( $data['idcat'] == $last_cat['idcat'] ) {
                    $tpl->generate('templates/mnavi5_end.html', 0, 0);
                 } // end if
              } // end if

             } // end if

            } // end foreach
           } // end if
          } // end if
         } // end foreach
        } // end if
       } // end if
      } // end foreach
     } // end if
    } // end if
   } // end foreach
  } // end if
 } // end if
} // end foreach

/* Read out buffer */
$html = ob_get_contents();

/* Clean buffer */
ob_end_clean();

/* Output buffer-contents */
echo "$html";

?>
</div>
Gruß
sandra07
Beiträge: 93
Registriert: So 10. Apr 2005, 11:17
Wohnort: Schweiz
Kontaktdaten:

Re: AMR bei geteilter Hauptnavigation

Beitrag von sandra07 »

Hallo
Was geht denn nicht? Fehlermeldung?
Bei mir läuft das Modul unter denselben Voraussetzungen problemlos.
Gruss
Sandra
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: AMR bei geteilter Hauptnavigation

Beitrag von xmurrix »

Hallo sandra07,

die Ursache war ein zusätzlich eingebauter Code einer anderen Erweiterung in der front_content.php.

Der Code der Erweiterung hat Änderungen an der HTML-Ausgabe gemacht, aber die geänderte HTML-Ausgabe nicht an die Chain 'Contenido.Frontend.HTMLCodeOutput' übergeben - daher konnte das AMR Plugin auch keine CleanURLs generieren.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Gesperrt