[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
TinySlice auf der Startseite ausgeben - 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/
Marshall
Beiträge: 70
Registriert: 8. Dez 2008, 22:05

TinySlice auf der Startseite ausgeben

9. Jun 2009, 16:01

Guten Tag,
ich versuche vergeblich auf meiner Startseite, einen Slice
(ID 11) einer Unterseite auszugeben.
Das hier gibt mir immer den kompletten article aus:

Code: Alles auswählen

<?php
$articleId = 18;

$article = new article();
$article->setEval(true);
$article->setArticleId($articleId);
//$article->setSliceId(11);
//$article->getSlice = 11; 
$slice_content = $article->getArticle();
echo $slice_content; 
?>
Mit diesem hier einkommentiert:
$article->setSliceId(11);
oder auch
$article->getSlice = 11;
kommt gar nix.

Kann mir da jemand auf die Sprünge helfen. *verweifel*

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

9. Jun 2009, 16:12

Hallo!

Ich wage mal einen Schuss ins Blaue und vermute, dass es an dem von mir gemeldeten Bug liegen könnte: getSlice() führt Modulausgabe nicht aus


Wichtig ist, dass du den ersten Lösungsvorschlag verwendest:
Xong hat geschrieben:Eine Lösungsmöglichkeit wäre, in der Funktion getSlice() nach der Initialisierung von $art mit $art->setEval(true); die Ausführung zu erzwingen.
Die Funktion findest du übrigens in der Datei class.ooarticleslice.inc.php im Ordner \redaxo\include\classes.

LG,
Xong
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Marshall
Beiträge: 70
Registriert: 8. Dez 2008, 22:05

9. Jun 2009, 16:17

Hi Xong,
ja danke für die Info, hatte ich mir schon durchgelesen deinen Post. Das setEval(true) ist auch schon drin, nur bringts im meinem Fall auch nix :cry:


// oh ich sehe gerade setEval gibts bei mir gar nicht in class.ooarticleslice.inc.php sondern nur in der class.rex_article.inc.php

?

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

9. Jun 2009, 22:41

Ich hab mir grad nochmal angeschaut, was du da geschrieben hast.
Um einen bestimmten Slice auszugeben, musst du wie folgt vorgehen:

Code: Alles auswählen

$slice = OOArticleSlice::getArticleSliceById(SLICE_ID);
echo $slice->getSlice();
Um für einen bestimmten Artikel einen bestimmten Slice auszugeben, kannst du alle Slices eines Artikel durchlaufen:

Code: Alles auswählen

$slice = OOArticleSlice::getFirstSliceForArticle(ARTICLE_ID);
while(is_object($slice))
{
  if($slice->getModuleId() == MODUL_ID)
  {
    // Alle Slices eines bestimmten Modultyps ausgeben
    echo $slice->getSlice();
  }
  $slice = $slice->getNextSlice();
}
LG,
Xong
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Marshall
Beiträge: 70
Registriert: 8. Dez 2008, 22:05

10. Jun 2009, 13:13

Mensch danke für deine Mühe :)

Nur ist so dass mir dann an der Stelle zwar der richtige Slide ausgespuckt wird, aber leider in dieser Form:
ctype == '' || ($this->ctype == '-1')) { ?>Samstag, 11. April, 21:00 Uhr
Termin
EOD; if (trim($wysiwigvalue) <> '') { echo $wysiwigvalue; } } ?>
Das hat möglicherweise in der class.rex_article.inc.php mit dieser zeile zu tun:

Code: Alles auswählen

// ----- zwischenstand: ctype .. wenn ctype neu dann if
          if ($this->mode != "edit" && isset($RE_CONTS_CTYPE[$RE_CONTS[$I_ID]]) && $RE_CONTS_CTYPE[$I_ID] != $RE_CONTS_CTYPE[$RE_CONTS[$I_ID]] && $RE_CONTS_CTYPE[$RE_CONTS[$I_ID]] != "")
          {
            $this->content .= "<?php } if(\$this->ctype == '".$RE_CONTS_CTYPE[$RE_CONTS[$I_ID]]."' || \$this->ctype == '-1'){ ?>";
          }
bzw ab Zeile 364:

Code: Alles auswählen

 // ----- ctype unterscheidung
          if ($this->mode != "edit" && $i == 0)
            $this->content = "<?php if (\$this->ctype == '".$RE_CONTS_CTYPE[$I_ID]."' || (\$this->ctype == '-1')) { ?>";
Nicht das ich diese Zeilen auch nur ansatzweise verstünde ?

Womöglich hat das aber auch mit dem eval auf true setzen zu tun, nur wie mache ich das in dem zusammenhang. $slice->setEval(true) geht hier ja nicht...?

Meine Umgebung wäre: Xampp - REDAXO 4.2.1 UTF-8


// update:
Nehme ich die Backslashes raus:

Code: Alles auswählen

$this->content = "<?php if ($this->ctype == '".$RE_CONTS_CTYPE[$I_ID]."' || ($this->ctype == '-1')) { ?>";
kommt schon mal der obere Teil nicht mehr mit raus, nur noch dieser am Ende:

Code: Alles auswählen

EOD; if (trim($wysiwigvalue) <> '') { echo $wysiwigvalue; } } ?>
Möglicherweise habe die Backslashes aber ihren Grund an der Stelle?
Zuletzt geändert von Marshall am 10. Jun 2009, 13:19, insgesamt 1-mal geändert.

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

10. Jun 2009, 13:17

Hi!
Marshall hat geschrieben:Womöglich hat das aber auch mit dem eval auf true setzen zu tun, nur wie mache ich das in dem zusammenhang. $slice->setEval(true) geht hier ja nicht...?
Ich denke schon. Du musst in der Datei \redaxo\include\classes\class.ooarticleslice.inc.php die Funktion getSlice() folgendermaßen umändern:

Code: Alles auswählen

  /**
   * Gibt den Slice formatiert zur¸ck
   * @since 4.1 - 29.05.2008
   */
  function getSlice()
  {
  	// TODO:: ------------------- .' AND revision='.$this->revision
    $art = new rex_article();
    $art->setEval(true);
    $art->setArticleId($this->getArticleId());
    $art->setClang($this->getClang());
    $art->getSlice = $this->getId();
    return $art->replaceLinks( $art->getArticle() );
  }
Es ist nur die Anweisung $art->setEval(true); hinzugekommen.

LG,
Xong
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Marshall
Beiträge: 70
Registriert: 8. Dez 2008, 22:05

10. Jun 2009, 13:22

:D JA! So funktionierts. Wunderbar. Vielen Dank dafür!

Zurück zu „Allgemeines [R4]“