[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
slices mit array sortieren geht nur auf einer seite? - 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/
fruchtfliege
Beiträge: 34
Registriert: 25. Jan 2012, 05:27

slices mit array sortieren geht nur auf einer seite?

8. Nov 2013, 03:57

hallo zusammen,

dank einem codeschnipsels eines anderen users habe ich es geschafft mithilfe "getSlicesForArticleOfType" die slices wie im backend zu sortieren, die ja "von haus aus" nur über die id sortiert werden...

das klappt auf einer unterseite auch wunderbar, wenn ich das gleiche modul bzw. dessen inhalt für einen teaser auf der startseite nutzen will, bekomme ich folgenden error:

Code: Alles auswählen

Warning: Cannot use a scalar value as an array in /www/htdocs/w00fd426/redaxo/include/classes/class.rex_article.inc.php(133) : eval()'d code on line 398
dieser fehler wird dann so oft ausgegeben bis das ende der slice anzahl erreicht ist, nur der letzte slice wird am ende der fehlerausgabe richtig ausgegeben (welcher die höchste slice id im backend hat)! wie gesagt, es ist haargenau der gleiche code aber da ich mit dem framework und php nicht allzu versiert bin, mache ich vielleicht auch einfach nur einen dummen fehler...

hier der gesamte code des moduls:

Code: Alles auswählen

<?php
$slice = OOArticleSlice::getSlicesForArticleOfType(29, 6);
$anzahl=sizeof($slice);
$alle_ids = array();
$cat = 'REX_VALUE[12]';

for ($i=0; $i<$anzahl; $i++) {
$slicecat[$i] = $slice[$i]->getValue(11);
$datum[$i] = $slice[$i]->getValue(1);
$titel[$i] = $slice[$i]->getValue(2);
$referent[$i] = $slice[$i]->getValue(3);
$text[$i] = $slice[$i]->getValue(4);
$id[$i] = $slice[$i]->getId();
$rea_slice_id[$i] = $slice[$i]->getSliceId();

/*
getSliceId(): "selbstgestrickte" Funktion, in class.ooarticleslice.inc.php integriert:
function getSliceId() {
return $this->_re_article_slice_id;
}
*/

// alle id's in ein Array packen
array_push($alle_ids, $id[$i]);
} // for ($i=0; $i<$anzahl; $i++)

/*
ersten Sclice festlegen; dessen re_article_slice_id ist nicht in der Liste der id's enthalten
*/
for ($i=0; $i<$anzahl; $i++)
{
if (in_array($rea_slice_id[$i], $alle_ids) != TRUE)
{
$slicecat_sortiert[0] = $slicecat[$i];
$datum_sortiert[0] = $datum[$i];
$titel_sortiert[0] = $titel[$i];
$referent_sortiert[0] = $referent[$i];
$text_sortiert[0] = $text[$i];
$id_sortiert[0] = $id[$i];
} // if
} // for

/*
Reihenfolge der übrigen Slices festlegen
die re_article_slice_id eines Slices ist jeweils die id des Vorgänger-Slices
*/
if ($cat == 'Zahnärzte') {
echo '<h2>Fortbildungen für '.$cat.'</h2><hr class="headline"/>';
for ($counter = 0; $counter < $anzahl; $counter++) {
for ($i=0; $i<$anzahl; $i++)
{
if ($rea_slice_id[$i] == $id_sortiert[$counter-1])
{
$slicecat_sortiert[$counter] = $slicecat[$i];
$datum_sortiert[$counter] = $datum[$i];
$titel_sortiert[$counter] = $titel[$i];
$referent_sortiert[$counter] = $referent[$i];
$text_sortiert[$counter] = $text[$i];
$id_sortiert[$counter] = $id[$i];
} // if
} // for ($i=0; ...

if ($slicecat_sortiert[$counter] == 'Zahnärzte') {
?>
<div class="fortbildung">
<table><tr><td>
<h2><?php echo $datum_sortiert[$counter]; ?></h2>
</td>
<td>
<h2><?php echo $titel_sortiert[$counter]; ?></h2>
<p class="referent"><?php echo $referent_sortiert[$counter]; ?></p>
<?php echo $text_sortiert[$counter]; ?>
</td></tr></table></div>
<?php
}
} // for ($counter = 1; ...
} // if $slicecat_sortiert[ ...
elseif ($cat == 'Therapeuten') {
echo '<h2>Fortbildungen für '.$cat.'</h2><hr class="headline"/>';
for ($counter = 0; $counter < $anzahl; $counter++) {
for ($i=0; $i<$anzahl; $i++)
{
if ($rea_slice_id[$i] == $id_sortiert[$counter-1])
{
$slicecat_sortiert[$counter] = $slicecat[$i];
$datum_sortiert[$counter] = $datum[$i];
$titel_sortiert[$counter] = $titel[$i];
$referent_sortiert[$counter] = $referent[$i];
$text_sortiert[$counter] = $text[$i];
$id_sortiert[$counter] = $id[$i];
} // if
} // for ($i=0; ...

if ($slicecat_sortiert[$counter] == 'Therapeuten') {
?>
<div class="fortbildung">
<table><tr><td>
<h2><?php echo $datum_sortiert[$counter]; ?></h2>
</td>
<td>
<h2><?php echo $titel_sortiert[$counter]; ?></h2>
<p class="referent"><?php echo $referent_sortiert[$counter]; ?></p>
<?php echo $text_sortiert[$counter]; ?>
</td></tr></table></div>
<?php
}
} // for ($counter = 1; ...
} // if $slicecat_sortiert[ ...
?> 
die slices werden aus dem artikel 29 des moduls nr. 6 bezogen. getSliceId() wurde in class.ooarticleslice.inc.php integriert. VALUE[12] wird aus dem aktuellen modul bezogen, aber auch hier liegt nicht der fehler. wenn ich die abfragen entferne, kommt dennoch der selbe fehler! ist vielleicht etwas schwer das alles nachzuvollziehen, aber der fehler ist vielleicht auch einfach nur aus der kategorie "facepalm" :oops:

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: slices mit array sortieren geht nur auf einer seite?

8. Nov 2013, 09:57

Hej,

hier ein anderes Skript um Slices zu sortieren.
https://gist.github.com/tbaddade/4748841

Vielleicht hilft es dir.

Um es global zu halten, schreibst du in der Moduleeingabe ein REX_LINK_BUTTON der die Artikel-Id enthält und wandelst die Zeile 5 um in:

Code: Alles auswählen

$article_id = REX_LINK_ID[1];
Willst du auch die restlichen Einstellungen von Artikel zu Artikel ändern wollen, dann entsprechend die Moduleingabe anpassen.

vg Thomas

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: slices mit array sortieren geht nur auf einer seite?

8. Nov 2013, 13:22

Könnte man nicht noch für R4 noch ne getSortedSlicesForArticleOfType() mit reinnehmen? :D

fruchtfliege
Beiträge: 34
Registriert: 25. Jan 2012, 05:27

Re: slices mit array sortieren geht nur auf einer seite?

8. Nov 2013, 18:52

RexDude hat geschrieben:Könnte man nicht noch für R4 noch ne getSortedSlicesForArticleOfType() mit reinnehmen? :D
das wäre eine gute idee und eine sinnvolle erweiterung. allein wegen der sortierungsmglichkeiten muss ich manchmal andere cms einsetzen, obwohl ich immer noch am liebsten redaxo nutze. wordpress & co sind mir einfach zu überladen für kleine projekte...

danke thomas! ich schaue mir das script am montag an und gebe ggf. feedback ob alles funktioniert hat.

Zurück zu „Allgemeines [R4]“