[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Wie wird die Reihenfolge der Slices definiert? - 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
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

Wie wird die Reihenfolge der Slices definiert?

22. Apr 2005, 22:27

Hallo zusammen,

kann mir jemand sagen, wo die Slice-Reihenfolge abgespeichert wird, so dass die Ausgabe der einzelnen Slices richtig nacheinander erfolgt?

Ich will nämlich die Slices einer bestimmten Seite auf einer anderen Seite ausgeben. Die SQL-Abfrage und alles ist kein Problem, nur wo die Reihenfolge ausgelesen wird, ist mir unklar. Ein Feld dafür scheint es nämlich nicht zu geben ...

Danke im voraus,
Peter.

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

24. Apr 2005, 21:53

Hej,

ich vermute folgendes:

Jeder Artikel hat eine bestimmte ID. In einem Artikel werden mehere Slice per Module eingebunden. In der Tabelle "rex_article_slice" wird jedem Slice eine "re_article_slice_id" zugewiesen. In dieser Tabelle findest du auch eine Spalte "article_id". So wird die entsprechende Artikel ID gesucht und alle Slices mit dieser gleichen Artikel ID werden von der kleinsten angefangenen "re_article_slice_id" bis zur größten ausgeben.


Also müsstest alle du nach allen Slices mit der entsprechenden einen Artikel ID suchen und die re_article_slice ASC sortieren lassen.

lg Thomas

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

25. Apr 2005, 09:56

Hallo Thomas,

genauso hatte ich mir das auch zusammengereimt.
Bloß stimmt die Reihenfolge der Werte in dem Feld "re_article_slice_id" nicht mit der tatsächlichen Slice-Reihenfolge auf der Seite überein.
Ich habe auf meiner Testseite derzeit vier Slices (vom selben Modul-Typ), die ich hier mal entsprechend der angezeigten reihenfolge a, b, c und d nenne. Die re_article_slice_id-Werte sind:

a: 0
b: 30
c: 27
d: 28

Würde ich also nach "re_article_slice:id" sortieren, dann hätte ich die (falsche) Reihenfolge: a, c, d, b.

Es muss also noch irgendwo anders eine Sortierreihenfolge der Slices geben. Aber wo? Liebes Redaxo-Programmiererteam - könnt Ihr rasch mit einer Auskunft helfen?

Danke,
Peter.

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

25. Apr 2005, 10:26

HI,

also fogelndes:

siehe OOArticleSlice

Code: Alles auswählen

/*
	 * CLASS Function:
	 * Return all slices for an article that have a certain
	 * module type.
	 * Returns an array of OOArticleSlice objects
	 */
	function getSlicesForArticleOfType($an_article_id, $a_type_id) {
		$sql = new sql;
		$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 rex_article_slice
WHERE article_id = $an_article_id AND modultyp_id = $a_type_id
EOD;
		$sql->setQuery($query);
		$slices = array();
		for ($i = 0; $i < $sql->getRows(); $i++) {
			$slices[] = new OOArticleSlice(
							$sql->getValue("id"),$sql->getValue("re_article_slice_id"),$sql->getValue("value1"),
							$sql->getValue("value2"),$sql->getValue("value3"),$sql->getValue("value4"),
							$sql->getValue("value5"),$sql->getValue("value6"),$sql->getValue("value7"),
							$sql->getValue("value8"),$sql->getValue("value9"),$sql->getValue("value10"),
							$sql->getValue("file1"),$sql->getValue("file2"),$sql->getValue("file3"),
							$sql->getValue("file4"),$sql->getValue("file5"),$sql->getValue("file6"),
							$sql->getValue("file7"),$sql->getValue("file8"),$sql->getValue("file9"),
							$sql->getValue("file10"),$sql->getValue("link1"),$sql->getValue("link2"),
							$sql->getValue("link3"),$sql->getValue("link4"),$sql->getValue("link5"),
							$sql->getValue("link6"),$sql->getValue("link7"),$sql->getValue("link8"),
							$sql->getValue("link9"),$sql->getValue("link10"),$sql->getValue("php"),
							$sql->getValue("html"),$sql->getValue("article_id"),$sql->getValue("modultyp_id")
						);
			$sql->next();
		}
		return $slices;
	}
	
	/*
	 * Object Function:
	 * Return the next slice for this article
	 * Returns an OOArticleSlice object.
	 */
	function getNextSlice() {
		$sql = new sql;
		$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 rex_article_slice
WHERE re_article_slice_id = {$this->_id}
EOD;
		$sql->setQuery($query);
		if ($sql->getRows() == 1) {
			return new OOArticleSlice(
							$sql->getValue("id"),$sql->getValue("re_article_slice_id"),$sql->getValue("value1"),
							$sql->getValue("value2"),$sql->getValue("value3"),$sql->getValue("value4"),
							$sql->getValue("value5"),$sql->getValue("value6"),$sql->getValue("value7"),
							$sql->getValue("value8"),$sql->getValue("value9"),$sql->getValue("value10"),
							$sql->getValue("file1"),$sql->getValue("file2"),$sql->getValue("file3"),
							$sql->getValue("file4"),$sql->getValue("file5"),$sql->getValue("file6"),
							$sql->getValue("file7"),$sql->getValue("file8"),$sql->getValue("file9"),
							$sql->getValue("file10"),$sql->getValue("link1"),$sql->getValue("link2"),
							$sql->getValue("link3"),$sql->getValue("link4"),$sql->getValue("link5"),
							$sql->getValue("link6"),$sql->getValue("link7"),$sql->getValue("link8"),
							$sql->getValue("link9"),$sql->getValue("link10"),$sql->getValue("php"),
							$sql->getValue("html"),$sql->getValue("article_id"),$sql->getValue("modultyp_id")
						);
		}
		return null;
	}
heisst also:

Der 1. Slice ist immer der mit der re_article_slice_id = 0.
Der 2. Slice ist immer der mit der re_article_slice_id = re_article_slice_id-des-1.slices
Der 3. Slice ist immer der mit der re_article_slice_id = re_article_slice_id-des-2.slices

Ist sozusagen eine Verkettet-Liste


Am besten einfach mit

Code: Alles auswählen

$1stSlice = OOArticleSlice::getFirstSliceForArticle( $ArticleId);
$2ndSlice = $1stSlice->getNextSlice();
$3rdSlice = $2ndSlice->getNextSlice();
.
.
probieren



Gruß,
Markus

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

2. Mai 2005, 07:23

Hallo Markus,

vielen Dank.
Tut mir leid, aber das ist so hoch für mich, dass ich da bislang noch gescheitert bin.
Wenn ich das richtig verstanden habe, müsste ich nur Dein letztes Codebeispiel verwenden und die Artikel-ID der Seite einsetzen, von der die Slices übernommen werden sollen, oder? Also:

Code: Alles auswählen

$1stSlice = OOArticleSlice::getFirstSliceForArticle(2);
$2ndSlice = $1stSlice->getNextSlice();
$3rdSlice = $2ndSlice->getNextSlice(); 
Dann gibt's aber die Fehlermeldung:
Parse error: parse error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' ...

Könntest Du bitte nochmal kurz Hilfestellung geben?

Vielen Dank im voraus,
Peter

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

2. Mai 2005, 11:23

pbickel hat geschrieben:Hallo Markus,

vielen Dank.
Tut mir leid, aber das ist so hoch für mich, dass ich da bislang noch gescheitert bin.
Wenn ich das richtig verstanden habe, müsste ich nur Dein letztes Codebeispiel verwenden und die Artikel-ID der Seite einsetzen, von der die Slices übernommen werden sollen, oder? Also:

Code: Alles auswählen

$1stSlice = OOArticleSlice::getFirstSliceForArticle(2);
$2ndSlice = $1stSlice->getNextSlice();
$3rdSlice = $2ndSlice->getNextSlice(); 
Dann gibt's aber die Fehlermeldung:
Parse error: parse error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' ...

Könntest Du bitte nochmal kurz Hilfestellung geben?

Vielen Dank im voraus,
Peter
Hi,

jo war ein schlechtes Beispiel von mir ;-)

Variablen dürfen nicht mit Zahlen beginnen,...

Code: Alles auswählen

$Slice1 = OOArticleSlice::getFirstSliceForArticle(2);
$Slice2 = $Slice1->getNextSlice();
$Slice3 = $Slice2->getNextSlice(); 

So besser?

Gruß,
Markus

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

2. Mai 2005, 11:49

Hi Markus,

ich steh wohl immer noch aufm Schlauch ...

Also, wenn die Seite, von der die Slices übernommern werden sollen, die ID 2 hat, dann muss ich doch nur folgenden Code irgendwo auf meiner Seite einfügen:

Code: Alles auswählen

<?
$Slice1 = OOArticleSlice::getFirstSliceForArticle(2);
echo $Slice1;
$Slice2 = $Slice1->getNextSlice();
echo $Slice2;
$Slice3 = $Slice2->getNextSlice();
echo Slice3;
?>
Richtig?

Dann erscheint bei mir für jede echo-Ausgabe "Object".

Noch ne Idee?

Danke,
Peter.

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

2. Mai 2005, 12:05

Hi Peter,

Du erhälst hier ein ArticleSlice-Objekt.

Diese Objekte liefern dir nun folgende Methoden:

Code: Alles auswählen

	function getId() {
		return $this->_id;
	}
	
	function getValue($index) {
		return $this->_value[$index];
	}
	
	function getLink($index) {
		return $this->_link[$index];
	}
	
	function getLinkUrl($index) {
		return $REX['WWW_PATH']."index.php?article_id=".$this->getLink($index);
	}

	function getFile($index) {
		return $this->_file[$index];
	}
	
	function getFileUrl($index) {
		return $REX['MEDIAFOLDER']."/".$this->getFile($index);
	}
	
	function getHtml() {
		return $this->_html;
	}

	function getPhp() {
		return $this->_php;
	}
Du musst dir jetzt die entsprechende die für Dich passen bzw die Du brauchst raussuchen und verwenden...

Beispiele:

Code: Alles auswählen

$Slice1 = OOArticleSlice::getFirstSliceForArticle(2); 
echo $Slice1->getHtml();
oder

Code: Alles auswählen

$Slice1 = OOArticleSlice::getFirstSliceForArticle(2); 
echo $Slice1->getLink();
.
.
.


Gruß,
Markus

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

2. Mai 2005, 14:15

Super, das war noch der letzte Schritt, der mir zur Fertigstellung fehlte.
Jetzt ist die Website dank Deiner Hilfe online:
http://forum.redaxo.de/viewtopic.php?t=414

Danke, Markus.

Peter.

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

2. Mai 2005, 14:54

pbickel hat geschrieben:Super, das war noch der letzte Schritt, der mir zur Fertigstellung fehlte.
Jetzt ist die Website dank Deiner Hilfe online:
http://forum.redaxo.de/viewtopic.php?t=414

Danke, Markus.

Peter.
Hehe, kein Problem :wink:

Wo genau hast du diese Information verwendet?

Gruß,
Markus

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

2. Mai 2005, 16:40

Auf der Startseite. Für diesen Infokasten. Die enthaltenen Meldungen liegen auf einer eigenen Seite, die derzeit nicht im Site-Menü enthalten ist.

Der Grund für diesen Umweg war der, dass später einmal diese Meldungsseite vielleicht auch noch sichtbar sein soll und diese längere Meldungen enthalten könnte, während auf der Startseite nur die Kurzfassung gezeigt wird.

Man hätte das sicher auch lösen können, indem man für jede Meldung eine eigene Seite (Artikel) anlegt, aber das war denen vom Handling etwas zu umständlich.

Peter.
Zuletzt geändert von Peter.Bickel am 2. Mai 2005, 17:26, insgesamt 2-mal geändert.

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

2. Mai 2005, 16:52

Wenn du nix dagegen hast, könntest du mir ma die Zugangsdaten zum redaxo dieser seite schicken, ich würd mir das gern ma ansehen

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

2. Mai 2005, 16:56

Ich denke das ganze geht auch einfacher.

Siehe mal unter www.mahlis.de (in Arbeit).

Dort wird in der rechten Spalte ebenfalls etwas "angerissen" und auf einer anderen Seite dann vollständig angezeigt.

Das ganze ist OHNE OOFramework passiert.


lg Thomas

Zurück zu „Allgemeines [R2]“