[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Einzelne Artikel platzieren - 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/
mmh
Beiträge: 118
Registriert: 17. Apr 2012, 13:20

Einzelne Artikel platzieren

21. Jan 2016, 10:49

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

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

Re: Einzelne Artikel platzieren

21. Jan 2016, 12:51

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.

mmh
Beiträge: 118
Registriert: 17. Apr 2012, 13:20

Re: Einzelne Artikel platzieren

22. Jan 2016, 12:40

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 ???

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

Re: Einzelne Artikel platzieren

22. Jan 2016, 18:57

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.

mmh
Beiträge: 118
Registriert: 17. Apr 2012, 13:20

Re: Einzelne Artikel platzieren

23. Jan 2016, 09:41

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 ???

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

Re: Einzelne Artikel platzieren

23. Jan 2016, 09:45

wenn $counter mod 3 = 0 dann hast du dein 3. Element.

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

mmh
Beiträge: 118
Registriert: 17. Apr 2012, 13:20

Re: Einzelne Artikel platzieren

23. Jan 2016, 09:53

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

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

Re: Einzelne Artikel platzieren

23. Jan 2016, 16:48

if ($counter==3 ) {...irgendwas... $counter=0; }
Danach zählt er wieder von vorne.
Oder du machst es mit modulo.

mmh
Beiträge: 118
Registriert: 17. Apr 2012, 13:20

Re: Einzelne Artikel platzieren

15. Feb 2016, 18:36

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

Benutzeravatar
fietstouring
Beiträge: 47
Registriert: 10. Okt 2006, 12:30
Wohnort: Wien
Kontaktdaten: Website

Re: Einzelne Artikel platzieren

16. Feb 2016, 13:07

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


?>

Zurück zu „Allgemeines [R4]“