$oView->getPictures() erzeugt Fehler

Hi alle,

vielleicht liegt es daran, dass es schon spät ist, aber ich steh grad auf dem Schlauch. In der productmain.tpl möchte ich nicht nur ein Bild + Thumbnails ausgeben, sondern alle Bilder groß. Dort finde ich diesen Abschnitt:

<div class="picture  text-center">
    <img src="[{$oView->getActPicture()}]" alt="[{$oPictureProduct->oxarticles__oxtitle->value|strip_tags}] [{$oPictureProduct->oxarticles__oxvarselect->value|strip_tags}]" itemprop="image" class="img-responsive">
</div>

Den ersetze ich, inspiriert durch einen älteren Thread hier, durch diesen Code:

<div>
    [{assign var='aPics' value=$oView->getPictures()}]
</div>

… und schwupps werde ich auf die Startseite weitergeleitet.

Hat jemand einen Hinweis für mich, was ich falsch mache?

Danke,

snorri

[{assign var='aPics' value=$oView->getPictures()}]

getPictures() ist nicht überall verfügbar. Nimm stattdessen folgendes. Sollte gehen:

[{assign var='aPics' value=$oView->getPictureGallery()}]

Cool, das funktioniert - danke!

Kann ich das in der Doku irgendwie erkennen, welche Funktion wo verfügbar ist und welche in solchen Fällen als Alternativen zur Verfügung steht?

snorri

http://docu.oxid-esales.com/CE/sourcecodedocumentation/

Details::getPictures()
Template variable getter. Returns pictures of current article
Returns: array

Details::getPictureGallery()
Template variable getter. Returns picture gallery of current article
Returns: array

Irgendwie seh ich an der Beschreibung noch nicht ganz, welche dieser Funktionen wann verfügbar ist … :wink:

Hallo,

ich hab mal beantragt, dass das Lazy Loading dokumentiert wird :wink:

Gruß

Hi alle,

inzwischen bin ich dank eurer Hilfe schon viel weiter, es läuft fast alles. Nur eines kriege ich noch nicht hin: Das erste Bild öffnet sich beim Anklicken in der Lightbox, die anderen drei aber nicht (sie sind einfach mit der Master-Grafikdatei verlinkt).

Das liegt daran, dass nur das erste die ID “zoom1” hat und irgendein jQuery auf diese ID triggert. Leider tut es das aber nicht bei den IDs “zoom2” usw… Ich habe schon den ganzen Code durchsucht, finde aber nirgends das JS, das diesen Trigger setzt.

Hat jemand einen Tipp für mich, wie ich auch die anderen Bilder in einer Lightbox öffnen kann?

Danke im Voraus,

snorri

Ohne Quelltext wäre es nur Raterei.

OK, also so sieht die betreffende Stelle aus in der productmail.tpl vonFlow:

[{if $oView->showZoomPics()}]

	[{if $oConfig->getConfigParam('sAltImageUrl') || $oConfig->getConfigParam('sSSLAltImageUrl')}]
		[{assign var="aPictureInfo" value=$oPictureProduct->getMasterZoomPictureUrl(1)|@getimagesize}]
	[{else}]
		[{assign var="sPictureName" value=$oPictureProduct->oxarticles__oxpic1->value}]
		[{assign var="aPictureInfo" value=$oConfig->getMasterPicturePath("product/1/`$sPictureName`")|@getimagesize}]
	[{/if}]

	<div class="picture text-center">
		<a href="[{$oPictureProduct->getMasterZoomPictureUrl(1)}]" id="zoom1"[{if $aPictureInfo}] data-width="[{$aPictureInfo.0}]" data-height="[{$aPictureInfo.1}]"[{/if}]>
			<img src="[{$oView->getActPicture()}]" alt="[{$oPictureProduct->oxarticles__oxtitle->value|strip_tags}] [{$oPictureProduct->oxarticles__oxvarselect->value|strip_tags}]" itemprop="image" class="img-responsive">
		</a>
	</div>

… und so in meiner erweiterten Version:

[{if $oView->showZoomPics()}]

	[{assign var='aPics' value=$oView->getPictureGallery()}]
	
	[{if $oConfig->getConfigParam('sAltImageUrl') || $oConfig->getConfigParam('sSSLAltImageUrl')}]
		[{assign var="aPictureInfo" value=$oPictureProduct->getMasterZoomPictureUrl(1)|@getimagesize}]
		[{if $aPics.Pics.2}]
			[{assign var="aPicture2Info" value=$oPictureProduct->getMasterZoomPictureUrl(2)|@getimagesize}]
		[{/if}]
	[{else}]
		[{assign var="sPictureName" value=$oPictureProduct->oxarticles__oxpic1->value}]
		[{assign var="aPictureInfo" value=$oConfig->getMasterPicturePath("product/1/`$sPictureName`")|@getimagesize}]
		[{if $aPics.Pics.2}]
			[{assign var="sPicture2Name" value=$oPictureProduct->oxarticles__oxpic2->value}]
			[{assign var="aPicture2Info" value=$oConfig->getMasterPicturePath("product/2/`$sPicture2Name`")|@getimagesize}]
		[{/if}]
	[{/if}]

	<div class="picture picture1 text-center">
		<a href="[{$oPictureProduct->getMasterZoomPictureUrl(1)}]" id="zoom1"[{if $aPictureInfo}] data-width="[{$aPictureInfo.0}]" data-height="[{$aPictureInfo.1}]"[{/if}]>
			<img src="[{$oView->getActPicture()}]" alt="[{$oPictureProduct->oxarticles__oxtitle->value|strip_tags}] [{$oPictureProduct->oxarticles__oxvarselect->value|strip_tags}]" itemprop="image" class="img-responsive">
		</a>
	</div>

	[{if $aPics.Pics.2}]
		<div class="picture picture2 text-center">
			<a href="[{$oPictureProduct->getMasterZoomPictureUrl(2)}]" id="zoom2"[{if $aPicture2Info}] data-width="[{$aPicture2Info.0}]" data-height="[{$aPicture2Info.1}]"[{/if}]>
				<img src="[{$aPics.Pics.2}]" alt="[{$oPictureProduct->oxarticles__oxtitle->value|strip_tags}] [{$oPictureProduct->oxarticles__oxvarselect->value|strip_tags}]" itemprop="image" class="img-responsive">
			</a>
		</div>
	[{/if}]

picture1 öffnet sich in der Lightbox, picture2 als blanke Bilddatei.

PS: Ein gutes Neues! :slight_smile:

Das liegt an:

id="zoom2"

Nur die ID zoom1 ist für die Scripte relevant.

Du musst entweder alle JS und CSS-Scripte auf “#zoom2” erweitern oder eine Klasse statt ID verwenden:

class="zoom1"

und alles in den Scripten von

#zoom1 

auf

.zoom1

ändern.

Klar soweit – nur finde ich wie gesagt das JavaScript nicht, wo dieser ID-Trigger gesetzt wird. Hast du einen Tipp für mich, wo im Code ich diese Änderung vornehmen muss?

[ol]
[li]details.min.js
[/li][li]styles.min.css
[/li][/ol]

OK, in der details.min seh ichs … aber ist das Editieren von minifizierten Dateien nicht kontraindiziert? Ich meine, gibt es dazu nicht irgendwo eine nicht-minifizierte Quelldatei?

application\views\flow\build\js\pages\details.js

CSS => less

Sieht dann so aus: http://4101.foxido.de/kiteboarding/kiteboards/kiteboard-cabrinha-caliber-2011.html

Danke, das wars :slight_smile: