[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
OOArticleSlice::getArticleSliceByID() - 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/
Konrad
Beiträge: 23
Registriert: 26. Apr 2007, 15:25

OOArticleSlice::getArticleSliceByID()

16. Sep 2011, 17:50

Die

Code: Alles auswählen

agetArticleSliceByID()
Methode von OOArticleSlice hat einen nur so halb-hilfreichen Default auf die Version; sie holt immer den Slice aus Revision 0, wenn man nicht explizit eine Version angibt. Das kann einen ganz schön verwirren, wenn man gerade die Struktur eines Artikels in der Arbeitsversion ändert … Weil ja auch nextSlice() und previousSlice() dann aus dem Artikel aus Version 0 stammen.

 

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

Re: OOArticleSlice::getArticleSliceByID()

17. Sep 2011, 17:09

Hi,

Der Hintergrund dabei ist, dass die Versionen generell optional sind. Viele verwenden Sie nicht und wuerden deshalb dann immer einen Parameter mitgeben muessen, obwohl sie nicht muessten...

Gruß Markus

Konrad
Beiträge: 23
Registriert: 26. Apr 2007, 15:25

Re: OOArticleSlice::getArticleSliceByID()

18. Sep 2011, 00:24

Aber wäre es nicht sinnvoller, im Default-Fall nicht immer auf die 0 zurückzufallen, sondern in der Version zu bleiben, in der man aktuell ist? Ansonsten ist das Problem in meinen Augen sogar gar nicht lösbar, denn wenn man eine Version im Code spezifiziert, bleibt man auf der verfangen, selbst wenn man den Artikel online stellt …

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

Re: OOArticleSlice::getArticleSliceByID()

18. Sep 2011, 03:17

Ahh jetzt verstehe ich Dich. Der OOarticleSlice kann natuerlich prinzipiell zu jedem beliebigen Artikel kommen,... Daher muessen wir nochmal drueber nachdenken, ob es sin n macht die revision von dort als default zu nehmen...

Ich werfs in die Entwicklerrunde

Gruß Markus

Konrad
Beiträge: 23
Registriert: 26. Apr 2007, 15:25

Re: OOArticleSlice::getArticleSliceByID()

18. Sep 2011, 10:54

Markus.Staab hat geschrieben:Ahh jetzt verstehe ich Dich. Der OOarticleSlice kann natuerlich prinzipiell zu jedem beliebigen Artikel kommen,... Daher muessen wir nochmal drueber nachdenken, ob es sin n macht die revision von dort als default zu nehmen...
Gruß Markus
Also, ich bin auf den Bug gestossen, weil ich in einem Modul, das ich gerade schreibe, Informationen aus einer beliebigen Anzahl anderer Slices eines spezielle Typs, aber innerhalb des selben Artikels zusammensammle und dann darstelle. (Es geht um eine Image Map, mit dem „Kopfmodul“ für das Bild selbst und je Eintrag auf der Map eine eigene Slice mit den Koordinaten und andern Daten) Und es hat relativ lange gebraucht, bis ich verstanden hatte, warum denn meine Suche nach Slices immer leer ausgeht. Ich persönlich würde ja glauben, dass das Default-Verhalten, in einer anderen als der aktuellen Version zu suchen, zutiefst verwirrend ist – zumindest, wenn es sich auf den aktuellen Artikel bezieht. Bei anderen Artikeln mag es in der Tat sinnvoller sein, sich auf die Live-Version zu beziehen.

Jetzt aber noch eine Frage: wie finde ich auf dem direktesten Weg heraus, in welche Version eines Artikels denn mein Modul gerade arbeitet? Für meinen Einsatzfall muss ich das ja derzeit direkt angeben.

Danke!
Konrad

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

Re: OOArticleSlice::getArticleSliceByID()

19. Sep 2011, 01:33

Hi,

Mit $this->getValue('revision') sollte passen

Gruß Markus

Konrad
Beiträge: 23
Registriert: 26. Apr 2007, 15:25

Re: OOArticleSlice::getArticleSliceByID()

9. Nov 2011, 22:07

Markus.Staab hat geschrieben:Hi,

Mit $this->getValue('revision') sollte passen

Gruß Markus
Ausser natürlich an den Stellen, wo $this nicht gesetzt ist (z.B. in Funktionen – bzw. muss man es da irgendwie übergeben bekommen).

steri
Beiträge: 364
Registriert: 12. Jul 2007, 14:59

Re: OOArticleSlice::getArticleSliceByID()

21. Jan 2014, 16:45

Hallo Leute,

ich hab eine ähnliche Frage - in einem Modul frage ich alle slices im Artikel so ab:

Code: Alles auswählen

$db = rex_sql::factory(); // 4.2.x: $db = new rex_sql;
$db->setQuery('SELECT `id`, `re_article_slice_id`
FROM `rex_article_slice`
WHERE `clang` ='.$REX['CUR_CLANG'].'
AND `ctype` =1
AND `article_id` =1	
AND `revision` =0');
nun müsste bei diesem Modul in der Arbeitsversion bei revsion 1 stehen. Gibt es eine Möglichkeit im Backend abzufragen ob man grad in der Arbeitsversion oder in der Liveversion ist?
Im Frontend kann man das ja relativ einfach mit $_GET["rex_version"] machen ...

danke
lg steri

steri
Beiträge: 364
Registriert: 12. Jul 2007, 14:59

Re: OOArticleSlice::getArticleSliceByID()

22. Jan 2014, 18:04

zu meiner vorigen Frage - da war ich wohl blind steht eh da: $this->getValue('revision')

aber jetzt hab ich dennoch ein Problem wo ich nicht drauf kommen was da hat bzw. nicht weiter komme:

ich lese im Modul den text von REX_VALUE[1] so aus:
(hat einen Grund warum ich das so mache und nicht direkt mit REX_VALUE[1] ausgebe)

Code: Alles auswählen

$sliceId = "REX_SLICE_ID";
if($slice = OOArticleSlice::getArticleSliceById($sliceId)){
$text = $slice->getValue(1);
}
jetzt is folgendes problem - in der liveversion wird der text von $text ausgegeben aber in der Arbeitsversion nicht.
Ich nehme an das ist genau das Problem was da beschrieben wurde von "getArticleSliceById" - die sliceid stimmt übrigens - d.h. in der arbeitsversion und liveversion haben die gleichen Blöcke unterschiedliche IDs. Trotzdem auch wenn hier
$slice = OOArticleSlice::getArticleSliceById($sliceId)
der Arbeitsversion Block angeprochen wird bleibts leer ....
wie kann ich da einstellen, dass die arbeitsversion ausgelesen wird?

danke für die hilfe

steri
Beiträge: 364
Registriert: 12. Jul 2007, 14:59

Re: OOArticleSlice::getArticleSliceByID()

23. Jan 2014, 12:50

habs nun raus gefunden - man kann einfach die version mit übergeben:

Code: Alles auswählen

OOArticleSlice::getArticleSliceById 	( 	$  	an_id,
		$  	clang = false,
		$  	revision = 0 
	) 		

OOArticleSlice::getArticleSliceById($sliceId,$REX['CUR_CLANG'],$version)
dies ist auch bei getFirstSliceForCtype möglich

Code: Alles auswählen

OOArticleSlice::getFirstSliceForCtype 	( 	$  	ctype,
		$  	an_article_id,
		$  	clang = false,
		$  	revision = 0 
	) 	
damit ich weiss in welcher version ich im backend bin - hab ich das mit
$version_id = rex_request("rex_set_version");
bzw.
$version_id = rex_request("rex_set_version","int","-1");
gelöst

Zurück zu „Sonstiges“