Artikel bewerten

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Artikel bewerten

Beitrag von Oldperl » Mi 18. Feb 2015, 09:48

Hallo stefkey,

welche der hier angebotenen Versionen des Modules hast du denn eingebaut. Die von _wiewo_ oder eine von derSteffen?

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Artikel bewerten

Beitrag von stefkey » Mi 18. Feb 2015, 11:18

Hallo Oldperl,

zuerst die von _wiewo_ und dann die von derSteffen.
Beide haben sich dahingehend gleich verhalten. Das Modul sollte doch für jeden Recher(IP) dann seine eigene 5 Sterne haben, oder?
Wie gesagt - im Moment ist es so das ich auf PC1 bspw. 4 Sterne klicke, und seltsamerweise ist dann auf PC2 (anderer PC UND andere IP) auch 4 Sterne ausgewählt.
Oder soll das so sein?
Dankeu nd Grüße, stefkey

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Artikel bewerten

Beitrag von Oldperl » Mi 18. Feb 2015, 12:17

Hallo stefkey,

eigentlich sollte bei so einem Bewertungs-Modul immer der Durchschnitt der abgegebenen Stimmen angezeigt werden. Ob das bei diesem Modul so ist kann ich aber nicht sagen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Artikel bewerten

Beitrag von stefkey » Mi 18. Feb 2015, 12:23

Ahh, der Druchschnitt.
Okay wenn es eine Stimme mit 4 Sternen gibt werden überall 4 Sterne angezeigt.
Wenn eine weiter Person 2 Sterne gibt, sollten also gesamthaft 3 Sterne leuchten - eben der Druchschnitt - verstehe.
Uii, wusste ich garnicht.
Vielen Dank

So wie ich dachte, wäre das ja nur mit Cookies möglich. Vielleicht kommt ja mal eine Cookie-Version, schön wäre es ja damit jeder nur einmal anstimmen kann.

Vielen Dank und liebe Grüße, stefkey

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Artikel bewerten

Beitrag von stefkey » Mi 18. Feb 2015, 17:39

Hallo nochmal,

doch noch eine Frage. Kann mir jemand helfen das Modul so zu ergänzen damit die Bewertungs nur innerhalb einer Kategorie angezeigt wird?
Also das Bewertungsmodul soll nicht auf der ganzen Website zusehen sein sondern nur in einer bestimmten Kategorie, am besten auch weiterer Kategorieen unterhalb der ausgewählten.

Ich möchte das ungern mit einem neuen Template umsetzen welches ich ja den Kategorieen zuweisen könnte. Ich bräuchte doch nur ein if- Abfragevorneweg, oder?
Sowas wie: if { Kategorie identisch idcat 5 } dann Moduloutput.

Wie gesagt, am nesten die Kategorieen darunter auch einschließen.

Hmm, kann das jemand aus dem FF?

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Artikel bewerten

Beitrag von McHubi » Do 19. Feb 2015, 10:13

Hallo stefkey,

na, die Lösung hast Du doch schon selbst geschrieben. Die aktuelle idcat kannst Du Dir auch ganz einfach anzeigen lassen:

Code: Alles auswählen

echo '$idcat: '.$idcat;
Und die if-Bedingung brauchst Du dann nur drum herum zu basteln. Dazu findest Du zahlreiche Beispiele und Tuts im Netz. Z. B. hier: http://www.php-einfach.de/php-tutorial/ ... eisung.php :wink:
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Artikel bewerten

Beitrag von stefkey » Fr 20. Feb 2015, 19:57

Danke McHubi,
die if Schleife funktioniert jetzt.

Aber wie kann ich ein Array bilden aus allen Unterkategorieen einer Kategorien. Da gibts es doch spezielle Contenido Befehle.
Kennt die jemand und verrät sie hier?

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Artikel bewerten

Beitrag von homtata » So 22. Feb 2015, 16:34

Hallo stefkey,
das folgende ist ungetestet, könnte dir aber den Weg weisen. Schau dir die Hauptnavigation der 4.8 an, die müsste sich für diese Zwecke umbiegen lassen. In etwa so:

Code: Alles auswählen

cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation.class.php');
cInclude('frontend', 'includes/Util/Modules/Contenido_NavMain_Util.class.php'); // diese Zeile wirst du wahrscheinlich nicht brauchen, ich hab sie mal dringelassen...

$iStartIdcat = 1; //hier die gewünschte idcat eintragen
//$iSelectedDepth = 7; // hier erstmla nicht gewünscht, es wird nur 1 Ebene ermittelt.

$oFeNav = new Contenido_FrontendNavigation($db, $cfg, $client, $lang, $cfgClient);
$oFeNav->setAuth($auth);
$oFeNav->setRootCat($iStartIdcat);
$oSubCategories = $oFeNav->getSubCategories($iStartIdcat, true, true, 1);
Dann lass dir mal $oSubCategories ausgeben:

Code: Alles auswählen

print_r($oSubCategories);
.. und schau mal ob du so voran kommst!
Diese Funktion liefert dir - wenn ich micht nicht irre - erstmal nur das erste Level unter der gewünschten Start-idcat. Wenn du mehr brauchst, musst du wie in der normalen Navi mit der Funktion loopCats arbeiten.

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Artikel bewerten

Beitrag von stefkey » So 22. Feb 2015, 22:24

Hallo homtata,

danke für deinen Vorschlag. Leider gibt mir das eine Unmenge Text aus, hier mal die ersten Zeilen:

Code: Alles auswählen

Contenido_Categories Object ( [aContenidoCategories:protected] => Array ( [0] => Contenido_Category Object ( [iIdCat:protected] => 1129 [iIdClient:protected] => 1 [iIdParent:protected] => 1037 [iIdPre:protected] => 0 [iIdPost:protected] => 1041 [iStatus:protected] => 0 [sAuthor:protected] => user99 [sCreated:protected] => 2014-12-07 22:02:34 [sModified:protected] => 2015-02-11 13:32:37 [oCategoryLanguage:protected] => Contenido_Category_Language Object ( [iIdCatlang:protected] => 1130 [iIdCat:protected] => 1129 [iIdLang:protected] => [iIdTplcfg:protected] => 576 [sName:protected] => 
Ich dachte zwischenzeitlich mal an eine Sitemap-Modul, was ja auch einenKategorienbaum ausgibt. Ich habe auch eins in Gebrauch, finde mich darin aber auch nicht zurecht. Hier aber mal den Output des Sitemap, vlt. bringt das ja jemand auf eine Idee.

Code: Alles auswählen

<?php 
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname:   SitemapExtended 
* Author(s):   Rene Hankel 
* Copyright:   michse 
* Created:      2007.04.17 
* Version:      0.3 
* 
************************************************/ 


//---------------------------------------------------------------- 
// Includes 
cInclude('classes', 'class.article.php'); 
cInclude('includes', 'functions.api.string.php'); 


//---------------------------------------------------------------- 
// get vars 
unset($lo_set); 
$lo_set = array(); 
// kategorie 
$lo_set["Cat_Id"]          = "CMS_VALUE[0]"; 
$lo_set["Cat_Level"]      = "CMS_VALUE[1]"; 
$lo_set["Cat_SortBy"]      = "CMS_VALUE[2]"; 
$lo_set["Cat_SortDir"]      = "CMS_VALUE[3]"; 
$lo_set["Cat_Prefix"]      = "CMS_VALUE[4]"; 
$lo_set["Cat_Style"]      = "CMS_VALUE[5]"; 
// artikel 
$lo_set["Art_Show"]         = "CMS_VALUE[10]"; 
$lo_set["Art_SortBy"]      = "CMS_VALUE[11]"; 
$lo_set["Art_SortDir"]      = "CMS_VALUE[12]"; 
$lo_set["Art_MaxArt"]       = "CMS_VALUE[13]"; 
$lo_set["Art_MaxChar"]       = "CMS_VALUE[14]"; 
$lo_set["Art_IncStart"]      = "CMS_VALUE[15]"; 
$lo_set["Art_Prefix"]      = "CMS_VALUE[16]"; 
$lo_set["Art_Style"]      = "CMS_VALUE[17]"; 

//---------------------------------------------------------------- 
// standart 
// kategorie 
$lo_default_cat_level      = 1; 
$lo_default_cat_sortby      = 'CAT_TREE.idtree'; 
$lo_default_cat_sortdir      = 'desc'; 
$lo_default_cat_prefix      = 'sitemapext_cat'; 
$lo_default_cat_style      = 'ul'; 
// artikel 
$lo_default_art_sortby      = 'created'; 
$lo_default_art_sortdir      = 'desc'; 
$lo_default_art_maxart      = 50; 
$lo_default_art_maxchar      = 200; 
$lo_default_art_prefix      = 'sitemapext_art'; 
$lo_default_art_style      = 'ul'; 

//---------------------------------------------------------------- 
// test 
// cat - level 
if( (int)$lo_set["Cat_Level"] <= 0 ) 
{   $lo_set["Cat_Level"] = $lo_default_cat_level;   } 
// cat - sortby 
if( 
   ($lo_set["Cat_SortBy"] != 'CAT_TREE.idtree') && 
   ($lo_set["Cat_SortBy"] != 'CAT_LANG.Name') && 
   ($lo_set["Cat_SortBy"] != 'CAT.created') && 
   ($lo_set["Cat_SortBy"] != 'CAT.lastmodified') 
  ) 
{   $lo_set["Cat_SortBy"] = $lo_default_cat_sortby;   } 
// cat - sortdir 
if( ($lo_set["Cat_SortDir"] != 'desc') && ($lo_set["Cat_SortDir"] != 'asc') ) 
{   $lo_set["Cat_SortDir"] = $lo_default_cat_sortdir;   } 
// cat - prefix 
if( strlen($lo_set["Cat_Prefix"]) == 0 ) 
{   $lo_set["Cat_Prefix"] = $lo_default_cat_prefix;   } 
// cat - style 
if( ($lo_set["Cat_Style"] != 'ul') && ($lo_set["Cat_Style"] != 'tpl') ) 
{   $lo_set["Cat_Style"] = $lo_default_cat_style;   } 
//------------------- 
// art - sortby 
if( 
   ($lo_set["Art_SortBy"] != 'created') && 
   ($lo_set["Art_SortBy"] != 'lastmodified') && 
   ($lo_set["Art_SortBy"] != 'published') && 
   ($lo_set["Art_SortBy"] != 'artsort') && 
   ($lo_set["Art_SortBy"] != 'title') 
  ) 
{   $lo_set["Art_SortBy"] = $lo_default_art_sortby;   } 
// art - sortdir 
if( ($lo_set["Art_SortDir"] != 'desc') && ($lo_set["Art_SortDir"] != 'asc') ) 
{   $lo_set["Art_SortDir"] = $lo_default_art_sortdir;   } 
// art - max art 
if( (int)$lo_set["Art_MaxArt"] <= 0 ) 
{   $lo_set["Art_MaxArt"] = $lo_default_art_maxart;   } 
// art - maxchar 
if( (int)$lo_set["Art_MaxChar"] <= 0 ) 
{   $lo_set["Art_MaxChar"] = $lo_default_art_maxchar;   } 
// art - prefix 
if( strlen($lo_set["Art_Prefix"]) == 0 ) 
{   $lo_set["Art_Prefix"] = $lo_default_art_prefix;   } 
// art - style 
if( ($lo_set["Art_Style"] != 'ul') && ($lo_set["Art_Style"] != 'tpl') ) 
{   $lo_set["Art_Style"] = $lo_default_art_style;   } 




//---------------------------------------------------------------- 
// wenn funktion noch nicht existiert -> erstellen 
if( !function_exists('SitemapExtended') ) 
{    
   /** 
    * rekursive funktion zum aufbau eines sitemapbaumes mit listung artikel 
    * 
    * @param int $lo_kat id der kategorie die als liste aufgebaut werden soll 
    * @param int $lo_level interne var um css-listen-klassen und html-quelltext zu formatieren 
    * @return string ergebnis als html 
    */ 
   function SitemapExtended($lo_kat = 0, $lo_level = 0) 
   { 
      global $sess, $lang, $client, $cfg, $lo_set; 
       
      $lo_run = 0; 
      $lo_limitart = 0; 
      $lo_sql = ''; 
      $lo_tmp = ''; 
      $lo_result = ''; 
      $lo_arthead = ''; 
      $lo_options = array(); 
      $lo_dbobj; 
      $lo_tpl; 
      $lo_tplart; 
      $lo_artlist; 
      $lo_article; 
       
       
      // ist db-objekt auch objekt? 
      if ( !is_object($lo_dbobj) ) 
      {   $lo_dbobj = new DB_Contenido;   } 
       

       $lo_sql = 'SELECT  '; 
       $lo_sql.= '      CAT_TREE.level,  '; 
       $lo_sql.= '      CAT.idcat, CAT.idclient, CAT.parentid,  '; 
       $lo_sql.= '      CAT_LANG.Name, '; 
       $lo_sql.= '      count(CAT_LANG_PARENT.idcat) AS count_subcat, '; 
       $lo_sql.= '      if(count(ART_LANG.idartlang), 1, 0) AS artexist, '; 
       $lo_sql.= '      if(count(ART_LANG_START.idartlang), 1, 0) AS startartexist '; 
       $lo_sql.= 'FROM '.$cfg["tab"]["cat_tree"].' AS CAT_TREE '; 
       $lo_sql.= 'LEFT OUTER JOIN '.$cfg["tab"]["cat"].' AS CAT '; 
       $lo_sql.= '      ON CAT_TREE.idcat = CAT.idcat '; 
       $lo_sql.= 'LEFT OUTER JOIN '.$cfg["tab"]["cat_lang"].' AS CAT_LANG '; 
       $lo_sql.= '      ON CAT.idcat = CAT_LANG.idcat '; 
       $lo_sql.= 'LEFT OUTER JOIN '.$cfg["tab"]["cat"].' AS CAT_PARENT '; 
       $lo_sql.= '      ON (CAT.idcat = CAT_PARENT.parentid) '; 
       $lo_sql.= 'LEFT OUTER JOIN '.$cfg["tab"]["cat_lang"].' AS CAT_LANG_PARENT '; 
       $lo_sql.= '      ON CAT_PARENT.idcat = CAT_LANG_PARENT.idcat '; 
       $lo_sql.= '      AND (CAT_LANG_PARENT.visible = 1) '; 
       $lo_sql.= '      AND (CAT_LANG_PARENT.public = 1) '; 
       $lo_sql.= 'LEFT OUTER JOIN '.$cfg["tab"]["cat_art"].' AS CAT_ART  '; 
       $lo_sql.= '      ON CAT.idcat = CAT_ART.idcat '; 
       $lo_sql.= 'LEFT OUTER JOIN '.$cfg["tab"]["art_lang"].' AS ART_LANG '; 
       $lo_sql.= '      ON (CAT_ART.idart = ART_LANG.idart)  '; 
       $lo_sql.= '      AND (ART_LANG.online = 1) '; 
       // startartikel einbeziehen? 
       if( $lo_set["Art_IncStart"] != 'true') 
       {   $lo_sql.= '      AND (CAT_LANG.startidartlang != ART_LANG.idartlang) ';   } 
       $lo_sql.= 'LEFT OUTER JOIN con_art_lang AS ART_LANG_START '; 
       $lo_sql.= '      ON (CAT_ART.idart = ART_LANG_START.idart) '; 
       $lo_sql.= '      AND (ART_LANG_START.online = 1) '; 
       $lo_sql.= '      AND (CAT_LANG.startidartlang = ART_LANG_START.idartlang) '; 
       $lo_sql.= 'WHERE CAT_LANG.idlang = \''.$lang.'\' ';        $lo_sql.= 'AND CAT.idclient = \''.$client.'\'  '; 
       $lo_sql.= 'AND CAT.parentid = \''.$lo_kat.'\'  '; 
       $lo_sql.= 'AND CAT_LANG.visible = 1 '; 
       $lo_sql.= 'AND CAT_LANG.public = 1 '; 
       $lo_sql.= 'GROUP BY CAT.idcat '; 
       $lo_sql.= 'ORDER BY '.$lo_set["Cat_SortBy"].' '.$lo_set["Cat_SortDir"]; 
//echo $lo_sql.'<br><br>'; 
       // sql ausfuehren 
      $lo_dbobj->query($lo_sql); 

      //------------------------------------------ 
      // wenn ergebnisse vorliegen 
      if( $lo_dbobj->num_rows() ) 
      { 
         //------------------------------------------ 
         // wenn sitemap mit template darzustellen ist 
         if( $lo_set["Cat_Style"] == 'tpl' ) 
         { 
            // template obj erstellen 
            if (!is_object($lo_tpl)) 
            {   $lo_tpl = new Template;   } 
            // templatedaten zuruecksetzen 
            $lo_tpl->reset(); 
         } 
         //------------------------------------------ 
         // sitemap als html-liste darstellen 
         else 
         { 
            // html-quelltxt schoen machen 
            $lo_result .= "\n".str_repeat(" ", ($lo_level * 4)); 
            // css-class einfuegen 
            $lo_result .= '<ul class="'.$lo_set["Cat_Prefix"].'_'.$lo_level.'">'."\n"; 
         } 

         //------------------------------------------ 
         // ergebnisse durchlaufen 
         while( $lo_dbobj->next_record() ) 
         { 
            //------------------------------------------ 
            // wenn sitemap mit template darzustellen ist 
            if( $lo_set["Cat_Style"] == 'tpl' ) 
            { 
               // var zuruecksetzen 
               $lo_result = ''; 
            } 
            //------------------------------------------ 
            // sitemap als html-liste darstellen 
            else 
            { 
               // html-quelltxt schoen machen 
               $lo_result .= str_repeat (" ", ($lo_level * 4) + 2); 
               // listeneintrag beginnen 
               $lo_result .= '<li>'; 
            } 
             
            //------------------------------------------ 
            // wenn kategorie einen startartikel besitzt, link erstellen 
            if( (int)$lo_dbobj->f("startartexist") ) 
            {    
               $lo_result .= '<a href="'; 
               $lo_result .= $sess->url('front_content.php?idcat='.$lo_dbobj->f('idcat')); 
               $lo_result .= '">'; 
                  $lo_result .= $lo_dbobj->f("Name"); 
               $lo_result .= '</a>'; 
            } 
            else 
            {   $lo_result .= $lo_dbobj->f("Name");   } 
             
             
             
            //------------------------------------------ 
            // sollen artikel falls vorhanden anzeigen? 
            if( ($lo_set["Art_Show"] == 'true') && (int)$lo_dbobj->f("artexist") ) 
            { 
               //------------------------------------------ 
               // wenn sitemap mit template darzustellen ist 
               if( $lo_set["Art_Style"] == 'tpl' ) 
               { 
                  // template obj erstellen 
                  if (!is_object($lo_tplart)) 
                  {   $lo_tplart = new Template;   } 
                  // templatedaten zuruecksetzen 
                  $lo_tplart->reset(); 
               } 
               //------------------------------------------ 
               // sitemap als html-liste darstellen 
               else 
               { 
                  // html-quelltxt schoen machen 
               $lo_result .= "\n".str_repeat (" ", ($lo_level * 4) + 4); 
                  $lo_result .= '<ul class="'.$lo_set["Art_Prefix"].'_'.$lo_level.'">'."\n"; 
               } 
                
               //------------------------------------------ 
               // optionsarray fur artikelabfrage erstellen 
               $lo_options['idcat'] = $lo_dbobj->f('idcat'); 
               // startartikel anzeigen? 
               if( $lo_set["Art_IncStart"] == 'true' ) 
               {   $lo_options['start'] = true;   } 
               else 
               {   $lo_options['start'] = false;   } 
               // sortierung 
               $lo_options['order'] = $lo_set["Art_SortBy"]; 
               // sortierungsrichtung 
               $lo_options['direction'] = $lo_set["Art_SortDir"]; 

               //------------------------------------------ 
               // artikel abfragen 
               $lo_artlist = new ArticleCollection($lo_options);                   

               //------------------------------------------ 
               // falls artikel vorliegen 
               if ($lo_artlist->count > 0) 
               { 
                  //------------------------------------------ 
                  // pruefe ob vorhanden artikelanzahl groesser ist als 
                  // max angezeigt werden sollen 
                  if( $lo_set["Art_MaxArt"] < $lo_artlist->count ) 
                  {   $lo_limitart = $lo_set["Art_MaxArt"];   } 
                  else 
                  {   $lo_limitart = $lo_artlist->count;   } 

                  //------------------------------------------ 
                  // durchlaufe alle gefundenen artikel 
                  for( $lo_run = 0; $lo_run < $lo_limitart; $lo_run++ ) 
                  { 
                     // hole naechsten artikel 
                     $lo_article = $lo_artlist->nextArticle(); 
                    
                     if ($lo_article->getField('redirect') == '1') { 
                         // artikel hat eine weiterleitung, gehe zum naechsten artikel 
                         continue; 
                     } 
                      
                     //artikelhead holen 
                     $lo_arthead = strip_tags(trim( $lo_article->getContent('CMS_HTMLHEAD', 1) )); 


                     //------------------------------------------ 
                     // wenn text laenger als gewuenscht ist 
                     if( strlen($lo_arthead) > $lo_set["Art_MaxChar"] ) 
                     { 
                        $lo_arthead  = capiStrTrimAfterWord($lo_arthead, (int)$lo_set["Art_MaxChar"]); 
                        $lo_arthead .= '...'; 
                     } 
                     elseif( strlen($lo_arthead) == 0 ) 
                     { 
                        $lo_arthead = mi18n("no articlehead exist!");    
                     } 

                     // html-quelltxt schoen machen 
                     $lo_result .= str_repeat (" ", ($lo_level * 4) + 6); 
                      
                     //------------------------------------------ 
                     // artikel darstellen 
                     //------------------------------------------ 
                     // sitemap als html-liste darstellen 
                     if( $lo_set["Art_Style"] != 'tpl' ) 
                     {   $lo_result .= '<li>';   } 
                      
                     $lo_tmp  = '<a href="'; 
                     $lo_tmp .= $sess->url('front_content.php?idcat='.$lo_dbobj->f('idcat').'&idart='.$lo_article->getField('idart')); 
                     $lo_tmp .= '">'; 
                        $lo_tmp .= $lo_arthead; 
                     $lo_tmp .= '</a>'; 

                     //------------------------------------------ 
                     // wenn sitemap mit template darzustellen ist 
                     if( $lo_set["Art_Style"] == 'tpl' ) 
                     { 
                        $lo_tplart->set('d', 'ART', $lo_tmp); 
                        $lo_tplart->next(); 
                     } 
                     //------------------------------------------ 
                     // sitemap als html-liste darstellen 
                     else 
                     {   $lo_result .= $lo_tmp.'</li>'."\n";   } 
                  }// end for 
               } 
                
               //------------------------------------------ 
               // wenn sitemap mit template darzustellen ist 
               if( $lo_set["Art_Style"] == 'tpl' ) 
               { 
                  $lo_result .= $lo_tplart->generate('templates/'.$lo_set["Art_Prefix"].'_'.$lo_level.'.html', true); 
               } 
               //------------------------------------------ 
               // sitemap als html-liste darstellen 
               else 
               { 
                  // html-quelltxt schoen machen 
                  $lo_result .= str_repeat (" ", ($lo_level * 4) + 4); 
                  $lo_result .= '</ul>'."\n"; 
               } 

            } 

             
             
            //------------------------------------------ 
            // wenn subkategorien 
            if( ($lo_dbobj->f('count_subcat') > 0) && ($lo_set["Cat_Level"] > ($lo_level+1)) ) 
              {    
                 $lo_result .= SitemapExtended($lo_dbobj->f('idcat'), ($lo_level+1));    
                 $lo_result .= str_repeat (" ", ($lo_level * 4) + 2); 
              } 
            //------------------------------------------ 
            // falls artikel vorhanden und anzeigen, html-quelltxt schoen machen 
//            if( ($lo_set["Art_Show"] == 'true') && (int)$lo_dbobj->f("artexist") ) 
//            {   $lo_result .= str_repeat (" ", ($lo_level * 4) + 2);   } 
             
            //------------------------------------------ 
            // wenn sitemap mit template darzustellen ist 
            if( $lo_set["Cat_Style"] == 'tpl' ) 
            { 
               $lo_tpl->set('d', 'CAT', $lo_result); 
               $lo_tpl->next(); 
            } 
            //------------------------------------------ 
            // sitemap als html-liste darstellen 
            else 
            { 
               // listeneintrag beenden 
               $lo_result .= '</li>'."\n"; 
            } 
         }// end while 


         //------------------------------------------ 
         // wenn sitemap mit template darzustellen ist 
         if( $lo_set["Cat_Style"] == 'tpl' ) 
         { 
            $lo_result = $lo_tpl->generate('templates/'.$lo_set["Cat_Prefix"].'_'.$lo_level.'.html', true); 
         } 
         //------------------------------------------ 
         // sitemap als html-liste darstellen 
         else 
         { 
            // html-quelltxt schoen machen 
            $lo_result .= str_repeat (" ", ($lo_level * 4)); 
            // liste schliessen          
            $lo_result .= "</ul>\n"; 
         } 
      } 

      // ergebnis zurueckgeben 
      return($lo_result); 
   } 
} 

//---------------------------------------------------------------- 
// sitemap darstellen 
echo SitemapExtended((int)$lo_set["Cat_Id"]); 
?>

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Artikel bewerten

Beitrag von homtata » So 22. Feb 2015, 22:50

naja, aber scheinbar liefert dir doch mein Vorgehensvorschlag ein Array. Dass da alle möglichen Infos drinstehen pro Datensatz, ist ja normal. Du müsstest dich jetzt halt mal mit den zugehörigen Klassen beschäftigen in "Contenido_FrontendNavigation/Contenido_FrontendNavigation.class.php", um dann das Array in einer Schleife abzuarbeiten und dann die für dich nötigen Felder rauszuziehen und entweder direkt auszugeben oder in ein neues Array zu speichern. Eine fertige getestete Lösung kann ich dir leider nicht bieten - die Standardsitemap von Contenido 4.8 arbeitet im Prinzip ebenso wie die Frontend-Navigation. Es gibt dann mit Sicherheit Befehle, um die entsprechenden Felder rauszuziehen im Stil von:

Code: Alles auswählen

        foreach ($oSubCategories as $oSubCategory) {
            $oSubCategory->getIdCat();
        }
oder ähnlich.

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Artikel bewerten

Beitrag von stefkey » Di 24. Feb 2015, 00:00

Danke homtata,

jetzt habe ich folgendes "gebaut":

Code: Alles auswählen

$k = 0;
foreach ($oSubCategories as $oSubCategory ) {
    $mycats[$k] = $oSubCategory->getIdCat();
    $k++;
}
// print_r($mycats);
Jetzt müsste ich nur noch eine if-Schleife setzen bei der das Array abgefragt wird. Also if { Ida = EIN WERT AUS DEM ARRAY}

Kannst du mir da auch noch helfen?

Danke und Grüße, stefkey

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Artikel bewerten

Beitrag von homtata » Di 24. Feb 2015, 00:36

versuchs erstmal ganz einfach so:

erstmal: die k-Schleife musst du nicht bauen, das Array zählt sich selbst hoch, beginnend bei 0:

Code: Alles auswählen

foreach ($oSubCategories as $oSubCategory ) {
    $mycats[] = $oSubCategory->getIdCat();
}
Prüfen, ob ein Vergleichswert (sagen wir mal $idcat) drin ist, dann eine Bedingung ausführen:

Code: Alles auswählen

if ( in_array ( $idcat ,  $mycats  ) ) { ... }

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Artikel bewerten

Beitrag von stefkey » Di 24. Feb 2015, 09:50

Vielen Dank homtata das du bei mir bleibst :-)

Ich bin tatsächlich auch ziemlich weit jetzt! Es fehlt nur noch wie ich nun getSubCategories die Kategorietiefe mitteilen kann. Es sollen ja auch alle Unterkategorien in $mycats stehen.
Ich habe über die www-Suchmaschine nur sowas hier gefunden was eben für 4.9 ist:

Code: Alles auswählen

getCategoryLevel( integer $categoryId )
Fetchs the level of a category by a given category ID.
Gestern hatte ich auch irgendwo etwas gefunden wo tatsächlich getSubCategories 4 Werte übergeben wurden. Und der 4. Wert war die Tiefe, ich finde es aber nicht mehr.
Außerdem hat

Code: Alles auswählen

$oSubCategories = $oFeNav->getSubCategories($iStartIdcat, true, true, 3 );
nichts bewirkt.

Oben in deinem Code ist noch etwas mit

Code: Alles auswählen

$iSelectedDepth = 2; // hier erstmla nicht gewünscht, es wird nur 1 Ebene ermittelt.
Das bewirkt so erstmal auch nichts.

Kannst du mir hier auch noch weiterhelfen?

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Artikel bewerten

Beitrag von homtata » Di 24. Feb 2015, 11:10

mit etwas Glück gehts so, wenn du statt des bisherigen Vorschlags eher die Klasse für die Kategorienverwaltung benutzt:

Code: Alles auswählen

$oConCat = new Contenido_Category($db, $cfg);
$oConCat->setloadSubCategories(true,3);
$oConCat->load($iStartIdcat, true, $lang);
$sCat = $oConCat->getCategoryLanguage()->getName();
$oSubCategories = $oConCat->getSubCategories();
schau hierzu auch mal noch in den folgenden Thread, um etwas weiter zu kommen:
http://forum.contenido.org/viewtopic.php?f=62&t=22242

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Artikel bewerten

Beitrag von stefkey » Mi 11. Mär 2015, 22:47

Hallo homtata,

ich bin noch nicht ganz durchgestiegen.

Ich habe nun folgendes:

Code: Alles auswählen

$oConCat = new Contenido_Category($db, $cfg);
$oConCat->setloadSubCategories(true,3);
$oConCat->load($iStartIdcat, true, $lang);
$sCat = $oConCat->getCategoryLanguage()->getName();
$oSubCategories = $oConCat->getSubCategories();


$oSub = $oConCat->getSubCategories();
$idPresse = $idcat; // if no "Presse" available
if ($oSub->count() > 0) { 
    foreach ($oSub as $oContenidoCategory) { 
    $mycats[] = $oSubCategory->getIdCat();
    }
}
Aber auf der Website kommt ein Fehler:
Fatal error: Call to a member function getIdCat() on a non-object in /xxx/front_content.php(982) : eval()'d code on line 3219

Ich habe irgendwo gelesen das dieser Fehler in Zusammenhang mit dem AMR Modul entsteht. Hmmm aber ich weiß nicht ob das hier auch zutrifft.
Was hältst du von dem Code oben?

Gesperrt