Problem mit getNextSlice()

Wie verwendet man Module oder Aktion und passt diese an.

Problem mit getNextSlice()

Beitragvon kraftan » 11. Feb 2009, 20:10

Hallo,

ich habe diesen einfachen Codeteil:

<?
$slice = OOArticleSlice::getFirstSliceForArticle(757,0);
print $slice-> getModulTyp();
$next = $slice->getNextSlice();
print $next-> getModulTyp();
?>

Das Problem:
Das Erste print bringt mir einen korrekten Wert.
Beim Zweiten print erhalte ich eine Fehlermeldung:

Fatal error: Call to a member function on a non-object in /homepages/22/d257995446/htdocs/testweb/redaxo/redaxo/include/classes/class.article.inc.php(179) : eval()'d code on line 5

Natürlich habe ich auch 2 Slices im Artikel. Aus irgendeinem Grund funktioniert bei mir diese getNextSlice Funktion nicht. Ich habe das schon auf verschiedene Weise versucht und auch alle Hinweise hier im Forum durchsucht. Leider komme ich nicht weiter.

Mein eigentliches Ziel ist es, dass ich einfach alle Slices eines bestimmten Typen für einen Artikel ausgeben lasse. Wichtig ist dabei, dass die richtige Reihenfolge eingehalten wird (ohne die Reihenfolge habe ich es schon hinbekommen).

Nachdem ich die Lösung eigentlich schon vorgestern benötige, hoffe ich nun auf Hilfe von euch! Hat irgend jemand eine Idee woran das liegen könnte, oder wie ich das hinbekomme?

Vielen Dank im Voraus!

Gruß,
Andi
kraftan
 
Beiträge: 2
Registriert: 2. Aug 2008, 20:25

Beitragvon Nutzer » 28. Apr 2009, 09:55

Genau das gleiche Problem habe ich auch. Weiss jemand hier eine Lösung?
Nutzer
 
Beiträge: 7
Registriert: 28. Apr 2009, 09:53

Beitragvon kraftan » 28. Apr 2009, 11:14

Hallo,

ich konnte das Problem dann doch noch lösen (habe aber leider vergessen hier eine Lösung einzutragen).

Ich habe irgendwo im Forum noch diese Funktion gefunden:

function getSlicesForArticle($an_article_id, $clang = false){
global $REX;
if ($clang === false)
$clang = $REX['CUR_CLANG'];
$table = '';
$table = $REX['TABLE_PREFIX']."article_slice";
$sql = new sql;
$i = 0;
$query =<<<EOD
SELECT id,re_article_slice_id,value1,value2,value3,value4,value5,value6,value7,value8,value9,value10,
file1,file2,file3,file4,file5,file6,file7,file8,file9,file10,
link1,link2,link3,link4,link5,link6,link7,link8,link9,link10,
php,html,article_id,modultyp_id
FROM
$table WHERE article_id = $an_article_id AND clang = $clang
EOD;

$sql->setQuery($query);
$slices = $sql->get_array($query);
if ($sql->getRows() > 0)
{
$numSlices = count($slices);
foreach($slices as $value)
{
$sid = $value["re_article_slice_id"];
$slice[$sid]["id"] = $value["id"];
foreach($value as $key => $val)
{
$slice[$sid][$key] = $val;
}
}
while($i<$numSlices)
{
if($i==0)
{
foreach($slice[$i] as $key => $val)
{
$block[$i][$key] = $val;
}
$tmpS = $slice[$i]["id"];
}
else
{
foreach($slice[$tmpS] as $key => $val)
{
$block[$i][$key] = $val;
}
$tmpS = $slice[$tmpS]["id"];
}
$i++;
}
return $block;
}
return null;
}

wenn du diese einfach in die class.ooarticleslice.inc.php einbindest, kannst du diese Funktion dann in deinem Modul aufrufen. Damit funktioniert es dann wie gewünscht.

Z.B.:

$Id = $this->getValue("article_id");
$moduletype = 48;
$slices = OOArticleSlice::getSlicesForArticle($Id);
for($count = 0; $count < count($slices); $count++)
{
if($slices[$count]["modultyp_id"] == $moduletype)
{
echo $slices[$count]["value1"];
}
}

Ich hoffe es hilft dir weiter.

Viele Grüße,
Andi
kraftan
 
Beiträge: 2
Registriert: 2. Aug 2008, 20:25


Zurück zu Module/Aktionen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast