[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Einzelne Artikel platzieren
Seite 1 von 1

Einzelne Artikel platzieren

Verfasst: 21. Jan 2016, 10:49
von mmh
Hallo zusammen,
ich habe das Forum durchsucht, komme aber nicht weiter. Vermutlich liegt es an meinen nicht vorhandenen PHP Kenntnissen. ;-(
Folgendes Problem:
Ich erstelle mehrere Artikel für mehrere Produkte.
Im Startartikel lasse ich mir dann alle Artikelbilder anzeigen und beim Klick auf ein Artikelbild soll der Inhalt des jeweiligen Artikels eingeblendet werden. Hier gibt es das ganze in Hardcode:
http://runacu.han-solo.net/gatterdam-tr ... twerk.html

Mit folgendem Code lese ich die Titelbilder aus, das klappt soweit ganz gut:

Code: Alles auswählen

<div class="section product-selector">
<?php
	if ('REX_LINKLIST[1]' == "")  {} else {
		echo '<div class="row">'; 
		foreach(explode(',', 'REX_LINKLIST[1]') as $articleId) {
			$article = OOArticle::getArticleById($articleId);
			if ($article instanceof OOArticle) {
				$link = $article->getUrl();
				$name = $article->getName();
				$byline = $article->getValue("art_byline");
				$file = $article->getValue("art_file");
			}
		echo '<div class="c4 m4 item trigger data-trigger="1"><img class="c10 s1" src="'.seo42::getImageManagerFile($file, "c4").'"></div>';
		}
	echo '</div>';
	}
?></div>
Nun bekomme ich es aber erstens nicht geregelt die Artikel auszulesen REX_ARTICLE[] funktioniert in PHP ja nicht und mit $this->getArticle() komme ich irgendwie nicht zum ziel ;-(

Außerdem müsste ich erst alle Vorschaubilder angezeigt bekommen und erst danach sollen die article angezeigt werden.
Mann wäre das praktisch wenn man so richtig mit PHP umgehen könnte ;-)

Danke vorab und Grüße
Marco

Re: Einzelne Artikel platzieren

Verfasst: 21. Jan 2016, 12:51
von Thomas.Skerbis
Vielleicht hilf Dir das weiter:

http://www.redaxo.org/de/download/module/?modul_id=645

Musst es dann halt für die Bilder und deine CSS Klassen anpassen.

Re: Einzelne Artikel platzieren

Verfasst: 22. Jan 2016, 12:40
von mmh
Servus Thomas,
danke, das hat geholfen. Ich habe es jetzt so gelöst (vermutlich nicht die englsiche Art):

Code: Alles auswählen

<?php
	if ('REX_LINKLIST[1]' == "")  {} else {
		echo '<div class="row">';
		foreach(explode(',', 'REX_LINKLIST[1]') as $articles) {
			$article = OOArticle::getArticleById($articles);
			$articleId   = $article->getId();			
			$articleFile = $article->getValue("art_file");
		echo '<div class="c4 m4 item trigger1"><img class="c10 s1" src="'.seo42::getImageManagerFile($articleFile, "c4").'"></div>';
		echo $id;
		}
		foreach(explode(',', 'REX_LINKLIST[1]') as $articles) {
			$article = OOArticle::getArticleById($articles);
			$articleId   = $article->getId();
			$articlex = new article($articleId);
		echo '<div class="c12 content content1">'.$articlex->getArticle(1).'</div>';
		}
	echo '	<script>
	$(document).ready(function(){
		jQuery(\'.trigger1\').click(function () {
			var index = $(this).index(),
			newTarget = jQuery(\'.content1\').eq(index);
			jQuery(\'.content\').not(newTarget).slideUp(\'fast\')
			newTarget.delay(\'fast\').slideToggle(\'slow\')
			return false;
	    })
	});
	</script>';	
	echo '</div>';
	}
?>
Folgendes Problem habe ich noch:
In einem <div class="row"> sollen jeweils 3 Vorschaubilder und 3 Artikelinhalte, dann das div zu und ein neues div auf.

Im Moment binde ich das Modul 5 mal mit 5 verschiedenen REX_LINKLIST_BUTTONS ein.
Es gibt doch sicher eine elegantere Lösung oder ???

Re: Einzelne Artikel platzieren

Verfasst: 22. Jan 2016, 18:57
von Thomas.Skerbis
Ja du musst Dir mit einem Zähler helfen ...
Vor der

Schleife $counter=0;
In der Schleife $counter++;
Vor Ende der Schleife
if ($counter==3 ) {...irgendwas...}

Das lässt sich sicher noch verfeinern. Du musst sicher auch prüfen ob weniger als 3 Elemente über sind und dann eine Bedingung ausführen.

Re: Einzelne Artikel platzieren

Verfasst: 23. Jan 2016, 09:41
von mmh
Servus Thomas,
grundästzlich hab' ich das verstanden. Ich erstelle einen Counter mit 0, jedes Element addiert 1 dazu. Wie frage ich jetzt jedes 3. Element ab? Mit deiner Schleife frage ich doch genau DAS 3. Element ab oder? Was ist dann mit dem 6. 9. 12. ? Kann ich irgendwie abfragen $counter durch 3 teilbar oder so ???

Re: Einzelne Artikel platzieren

Verfasst: 23. Jan 2016, 09:45
von RexDude
wenn $counter mod 3 = 0 dann hast du dein 3. Element.

http://www.mathe24.net/modulo.html

Re: Einzelne Artikel platzieren

Verfasst: 23. Jan 2016, 09:53
von mmh
Puh, ich glaub es hat sich erledigt, für meine beschränkten PHP Kenntnisse wird das zu komplex.
Ich brauche ja 3 Vorschaubilder und danach die 3 dazugehörigen Content Container in einem div class="row" danach die nächsten 3 Vorschaubilder und dann wieder die dazugehörigen Content Container.
Oder gibt es da auch was feines für ;-)
DANKE

Re: Einzelne Artikel platzieren

Verfasst: 23. Jan 2016, 16:48
von Thomas.Skerbis
if ($counter==3 ) {...irgendwas... $counter=0; }
Danach zählt er wieder von vorne.
Oder du machst es mit modulo.

Re: Einzelne Artikel platzieren

Verfasst: 15. Feb 2016, 18:36
von mmh
Hallo zusammen,
ich hab' alles versucht und bekomme es trotzdem nicht geregelt ;-( Vielleicht kann von euch noch mal jemand drüber gucken.

Es sollen wie gesagt immer 3 Trigger Elemente und 3 Content Elemente in ein div class row.
Danach sollen die nächsten 3 Trigger und die nächsten 3 Content Elemente in das nächste div class row.

Folgendes habe ich zusammengesteckt, es landet aber alles in einer row.

Code: Alles auswählen

<?php
	$counter=0;
	if ('REX_LINKLIST[1]' == "")  {} else {
		if ($counter==0 ) {
			echo '<div class="row">';
		}							
		$counter++;
		foreach(explode(',', 'REX_LINKLIST[1]') as $articles) {
			$article = OOArticle::getArticleById($articles);
			$articleId   = $article->getId();			
			$articleFile = $article->getValue("art_file");
		echo '<div class="c4 m4 item trigger1"><img class="c10 s1" src="'.seo42::getImageManagerFile($articleFile, "c3").'"></div>';
		}
		foreach(explode(',', 'REX_LINKLIST[1]') as $articles) {
			$article = OOArticle::getArticleById($articles);
			$articleId   = $article->getId();
			$articlex = new article($articleId);
		echo '<div class="c12 content content1">'.$articlex->getArticle(1).'</div>';
		}
		if ($counter==3 ) {
			echo '</div>';
			$counter=0;				
		}											
	echo '	<script>
	$(document).ready(function(){
		jQuery(\'.trigger1\').click(function () {
			var index = $(this).index(),
			newTarget = jQuery(\'.content1\').eq(index);
			jQuery(\'.content\').not(newTarget).slideUp(\'fast\')
			newTarget.delay(\'fast\').slideToggle(\'slow\')
			return false;
	    })
	});
	</script>';
	}
?>
Danke Euch !!!
Marco

Re: Einzelne Artikel platzieren

Verfasst: 16. Feb 2016, 13:07
von fietstouring
so gehts, allerdings nur wenn die linkliste immer vielfache von 3 elemente hat, sonst wird die row am ende nicht richtig geschlossen, da müsstest du dir nach noch was einfallen lassen.

Code: Alles auswählen

<?php

$linklist = "REX_LINKLIST[1]";
$links = explode(',',$linklist);
$out = '';

if(is_array($links) && count($links) > 0) {
$curr_id = "REX_ARTICLE_ID"; // id des aktuellen Artikels

foreach($links as $i => $link) {

	if($link != $curr_id) { // selbstauflistung verhindern!
		$art = OOArticle::getArticleById($link);
		$id = $art->getId();
		$file = $art->getValue("art_file");

		$a = new rex_article($id, $REX['CUR_CLANG']);

		if($i%3 == 0) { $out .= '<div class="row">'; }

		$out .= '<div class="c4 m4 item trigger1"><img class="c10 s1" src="'.seo42::getImageManagerFile($file, "c3").'"></div>';
		$out .= '<div class="c12 content content1">'.$a->getArticle().'</div>';

		if($i%3 == 2) { $out .= '</div><!-- END .row-->'; }
		
		}
	} // End foreach

	echo $out;
} // End if is_array


?>