[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Sidebar - welches Konzept ist am besten? - Seite 2 - 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/
Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

15. Jul 2005, 14:53

Hi,

es geht jetzt...

Der Denkfehler war folgender...
Die Methode OOArticle::searchArticlesByName gibt immer ein Array an Artikeln zurück, auch wenn nur einer gefunden wurde.

Nun muss man eben aus dem Array erst noch den 1. Artikel abreifen..


Somit lautet der richtige Code:

Code: Alles auswählen

<?php
$aktuelleKategorie = $this->getValue('category_id'); 
// Suche alle Artikel mit dem Namen "sidebar" in der Aktuellen Kategorie
$SidebarArtikel = OOArticle::searchArticlesByName( 'sidebar', $aktuelleKategorie);

// Sidebarartikel nur ein binden wenn einer existiert
if ( !empty( $SidebarArtikel[0])) {
  // Den 1. Artikel in der Kategorie namens "sidebar" herausnehmen
  $ooSidebarArtikel = $SidebarArtikel[0];

  $artikel = new article(); 
  $artikel->setArticleId( $ooSidebarArtikel->getId()); 
  echo $artikel->getArticle();
}
?>
Gruß,
Markus


fsiebert1977 hat geschrieben:Ich hab deinen Zugang etwas abgespeckt, ich stell ihn jetzt einfach mal ins Forum:
PS:
Du hättest mir auch eine PM übers Forum schicken können..
Ich hab mal die Zugangsdaten unkenntlich gemacht.

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

15. Jul 2005, 16:00

Super! Vielen Dank für die Hilfe. Gut zu wissen, dass man auch eine PM schicken kann. Hatte auch gemerkt, dass es ein Array ist, weil ich einfach mal die Variable testweise ausgegeben hatte und da stand "Array". Hatte aber keine Ahnung, dass es den Fehler verursacht hat :)
Gruß Florian
www.softloop.biz

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

25. Jul 2005, 18:11

Hi nochmal,

was mir grad noch eingefallen ist, wäre die Möglichkeit gewesen das ganze über Artikeltyp zu lösen...

Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

26. Jul 2005, 19:53

Was meinst du mit Artikeltyp? Wäre das eleganter?

Hab auch noch eine Frage zur Navi: Ich hab das jetzt soweit hinbekommen, habe allerdings noch ein Problem: ich würde gerne bei der Subnavi jeweils dem ersten Punkt die CSS-Klasse "first" zuweisen. Wie kann ich abfragen, was die erste Unterkategorie ist? Geht das irgendwie über die Prio? Und wie baue ich das Code-mäßig in die Navi ein?
Gruß Florian
www.softloop.biz

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

27. Jul 2005, 10:59

fsiebert1977 hat geschrieben:Was meinst du mit Artikeltyp? Wäre das eleganter?
http://wiki.redaxo.de/pmwiki.php/Main/Artikeltyp

Der Vorteil wäre, dass man nicht auf den Artikelnamen "sidebar" losgehen würde, sondern eben auf den ArtikelTyp.

Diesen Typen findest du unter "Specials" in Redaxo, ganz unten.
In der Community Demo ist damit z.b. der Authentifizierungsmechanis gelöst.

Aber so wie du/wir es gelöst haben, gehts ja auch.
fsiebert1977 hat geschrieben:Hab auch noch eine Frage zur Navi: Ich hab das jetzt soweit hinbekommen, habe allerdings noch ein Problem: ich würde gerne bei der Subnavi jeweils dem ersten Punkt die CSS-Klasse "first" zuweisen. Wie kann ich abfragen, was die erste Unterkategorie ist? Geht das irgendwie über die Prio? Und wie baue ich das Code-mäßig in die Navi ein?
Wie sieht dein Template aus?

Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

27. Jul 2005, 11:03

Achso, ich dachte du hättest noch den Zugang :) Hier der Code:

Code: Alles auswählen

<?php 

//----------- Mainnavi

$path = explode("-",$this->getValue("path")); 
array_shift( $path); 

$cat_id = $path[0]; 
$subcat_id = $path[1]; 

$oCurrCat = OOCategory::getCategoryById($cat_id); 

echo '<div id="mainnavi"><ul>'; 

foreach ( $oCurrCat->getChildren( true) as $oCategory) { 
 $name = $oCategory->getName(); 
 $url = $oCategory->getUrl(); 
 $cid = $oCategory->getId(); 

if ( $subcat_id == $cid) { 
   echo '<li class="aktiv">'. $name .'</li>'; 
  }

  else {
    echo '<li><a href="'. $url .'">'. $name .'</a></li>'; 
  }
}
echo '</ul></div>'; 

//----------- Subnavi

$path = explode("-",$this->getValue("path")); 
array_shift( $path); 

$cat_id = $path[1]; 
$subcat_id = $path[2]; 

$oCurrCat = OOCategory::getCategoryById($cat_id); 

echo '<div id="subnavi"><ul>'; 

foreach ( $oCurrCat->getChildren( true) as $oCategory) { 
 $name = $oCategory->getName(); 
 $url = $oCategory->getUrl(); 
 $cid = $oCategory->getId(); 
  
 if ( $subcat_id == $cid) { 
  echo '<li>'. $name .'</li>'; 
 } 
  else {
    echo '<li class="aktiv"><a href="'. $url .'">'. $name .'</a></li>'; 
  }
  
} 

echo '</ul></div>';

?>
PS. Desweiteren würde ich es gerne erreichen, dass man bei Klick auf eine Hauptkategorie direkt in die erste Unterkategorie kommt. Wie kann man das machen?

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

27. Jul 2005, 11:09

Hi,

Code: Alles auswählen

<?php

//----------- Mainnavi

$path = explode("-",$this->getValue("path"));
array_shift( $path);

$cat_id = $path[0];
$subcat_id = $path[1];

$oCurrCat = OOCategory::getCategoryById($cat_id);

echo '<div id="mainnavi"><ul>';

foreach ( $oCurrCat->getChildren( true) as $oCategory) {
 $name = $oCategory->getName();
 $url = $oCategory->getUrl();
 $cid = $oCategory->getId();

if ( $subcat_id == $cid) {
   echo '<li class="aktiv">'. $name .'</li>';
  }

  else {
    echo '<li><a href="'. $url .'">'. $name .'</a></li>';
  }
}
echo '</ul></div>';

//----------- Subnavi

$path = explode("-",$this->getValue("path"));
array_shift( $path);

$cat_id = $path[1];
$subcat_id = $path[2];

$oCurrCat = OOCategory::getCategoryById($cat_id);

echo '<div id="subnavi"><ul>';

$first = true;
foreach ( $oCurrCat->getChildren( true) as $oCategory) {
 $name = $oCategory->getName();
 $url = $oCategory->getUrl();
 $cid = $oCategory->getId();
 $class = $first ? 'first' : '';
 
 if ( $subcat_id == $cid) {
    $item = $name;
 }
  else {
    $class .= ' aktiv';
    $item = '<a href="'. $url .'">'. $name .'</a>';
  }

  $class = $class != '' ? ' class="'. $class .'"' : '';

  echo sprintf( '<li%s>%s</li>', $class, $item);
  $first = false;
}

echo '</ul></div>';

?>
ungetestet!

fsiebert1977 hat geschrieben: PS. Desweiteren würde ich es gerne erreichen, dass man bei Klick auf eine Hauptkategorie direkt in die erste Unterkategorie kommt. Wie kann man das machen?
hm das ganze macht für mich keinen Sinn?

Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

27. Jul 2005, 11:15

Super! funktioniert auf Anhieb! :D

Ich hatte in meinem vorherigen Eintrag noch ein PS am Schluss eingefügt. Wie könnte man das machen? Vielen Dank für deine Hilfe.
Gruß Florian
www.softloop.biz

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

27. Jul 2005, 11:17

Oh, hast ja schon geantwortet...

Ich würde es gerne so haben, weil ich keine Extraseite für jede Hauptkategorie habe, ausser es ist keine Unterkategorie da.
Gruß Florian
www.softloop.biz

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

27. Jul 2005, 11:22

fsiebert1977 hat geschrieben:Oh, hast ja schon geantwortet...

Ich würde es gerne so haben, weil ich keine Extraseite für jede Hauptkategorie habe, ausser es ist keine Unterkategorie da.
Tja, du hast ja schon den Ansatz gepostet, jetzt heisst es nur noch umsetzen und testen... ;)

Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

27. Jul 2005, 16:59

Tut mir leid, ich bin noch nicht so gut in PHP und kenne auch die Eigenschaften von den Redaxo-Objekten noch nicht so gut. Ich habe keine Ahnung, wie ich Abfragen kann, ob es eine Unterkategorie gibt und wenn ja, welche ID die erste hat. Kannst Du mir einen Ansatz geben?
Gruß Florian
www.softloop.biz

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

28. Jul 2005, 08:39

Hi,

Infos zum OOF (Object Oriented Framework) gibts im Wiki:

http://wiki.redaxo.de/pmwiki.php/Main/O ... dFramework

http://wiki.redaxo.de/pmwiki.php/Main/OOCategory
http://wiki.redaxo.de/pmwiki.php/Main/OOArticle

Am besten einfach damit ein bissl rumprobieren und wenns nicht klappt nochmal melden :)

Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

25. Aug 2005, 15:56

In Redaxo 2.7 funktionierte folgender Code noch problemlos:

Code: Alles auswählen

//----------- Mainnavi 

$path = explode("|",$this->getValue("path"));
array_shift( $path); 
$cat_id = $path[0];
$subcat_id = $path[1]; 

$oCurrCat = OOCategory::getCategoryById($cat_id); 

echo '<div id="mainnavi"><ul>'; 

foreach ( $oCurrCat->getChildren( true) as $oCategory) { 
 $name = htmlentities($oCategory->getName()); 
 $url = $oCategory->getUrl(); 
 $cid = $oCategory->getId(); 

if ( $subcat_id == $cid) { 
   echo '<li class="aktiv"><a href="'. $url .'">'. $name .'</a></li>';
  } 

  else { 
    echo '<li><a href="'. $url .'">'. $name .'</a></li>'; 
  } 
} 
echo '</ul></div>';
Jetzt habe ich auf 3.0 upgedatet und er spuckt mir die Fehlermeldung

Code: Alles auswählen

Fatal error: Call to a member function getChildren() on a non-object in /home/httpd/docs/softloop/redaxo/include/generated/templates/3.template on line 14
aus. Zeile 14 wäre der Anfang der foreach-Schleife.

Woran könnte das liegen?
Gruß Florian
www.softloop.biz

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

25. Aug 2005, 16:09

Hi Florian,

lass dir mal den Pfad ausgeben, ich glaub daran liegts.

Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

25. Aug 2005, 16:24

Ich mit meinen bescheidenen PHP-Kenntnissen vermute eher, dass das etwas mit der objektorientierten Programmierung zu tun hat. Anscheinend ist $oCurrCat kein Objekt mehr, oder? :? $oCategory->getUrl() produziert nämlich denselben Fehler...
Gruß Florian
www.softloop.biz

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

25. Aug 2005, 16:42

fsiebert1977 hat geschrieben:Ich mit meinen bescheidenen PHP-Kenntnissen vermute eher, dass das etwas mit der objektorientierten Programmierung zu tun hat. Anscheinend ist $oCurrCat kein Objekt mehr, oder? :? $oCategory->getUrl() produziert nämlich denselben Fehler...
genauso ist es, deshalb vermute ich, dass der Pfad nicht passt...

Weil, wenn der Pfad falsch ist, dann gibt

Code: Alles auswählen

$path = explode("|",$this->getValue("path"));
array_shift( $path); 
$cat_id = $path[0];
keine zahl, sondern irgendwas anders und dann gibt auch

Code: Alles auswählen

$oCurrCat = OOCategory::getCategoryById($cat_id); 
kein Objekt mehr.

Deshalb mach ma folgendes: (Nur zum TESTEN!)

Code: Alles auswählen

//----------- Mainnavi 

$path = explode("|",$this->getValue("path"));
var_dump( $path);
array_shift( $path); 
$cat_id = $path[0];
$subcat_id = $path[1]; 
var_dump( $cat_id);

$oCurrCat = OOCategory::getCategoryById($cat_id); 
und poste hier mal die Ausgaben.


Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

25. Aug 2005, 16:49

Code: Alles auswählen

array(2) { [0]=>  string(0) "" [1]=>  string(0) "" } string(0) ""
Oje, was heisst das denn? :)
Gruß Florian
www.softloop.biz

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

25. Aug 2005, 17:09

fsiebert1977 hat geschrieben:

Code: Alles auswählen

array(2) { [0]=>  string(0) "" [1]=>  string(0) "" } string(0) ""
Oje, was heisst das denn? :)
Das ist der Grund warums nichts geht :).
Da müssten Zahlen stehen...

Mach ma noch eine Ausgabe mehr:

Code: Alles auswählen

//----------- Mainnavi

var_dump( $this->getValue("path"));
$path = explode("|",$this->getValue("path"));
var_dump( $path);
array_shift( $path);
$cat_id = $path[0];
$subcat_id = $path[1];
var_dump( $cat_id);

$oCurrCat = OOCategory::getCategoryById($cat_id); 
Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

25. Aug 2005, 17:11

hmm...

Code: Alles auswählen

string(1) "|" array(2) { [0]=>  string(0) "" [1]=>  string(0) "" } string(0) ""
Gruß Florian
www.softloop.biz

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

25. Aug 2005, 17:12

Hm, du befindest dich wohl in einer Root CAT?

Gib ma bitte nen Zugang per PM :)

Zurück zu „Allgemeines [R2]“