Seite 1 von 1

Link bei <we:img>

Verfasst: Di 15. Mär 2016, 15:50
von alaskana
Hallo zusammen,

gibt es einen eleganten Weg, um an den Link zu kommen, der einem Bild zugewiesen ist, das in ein Dokument per <we:img> eingefügt ist? Oder muss man das umständlich per SQL machen?

Vielen Dank für eure Hilfe.

Micha

Re: Link bei <we:img>

Verfasst: Di 15. Mär 2016, 16:14
von blickfang
Hi Micha,

gib Dir mal die Daten des Links mit $GLOBALS['we_doc']->getElement('DeinFeld') aus, vielleicht findest Du da schon was Du brauchen kannst. Eine separate Datenbankabfrage ist glaube ich nicht notwendig.

Viele Grüße
Timo

Re: Link bei <we:img>

Verfasst: Di 15. Mär 2016, 16:55
von alaskana
Vielen Dank für die schnelle Antwort, Timo.

Aber es handelt sich ja nicht um einen Link sondern um ein <we:img> und $GLOBALS['we_doc']->getElement('DeinFeld') liefert mir ja nur die ID des Bildes.

Re: Link bei <we:img>

Verfasst: Di 15. Mär 2016, 17:11
von alaskana
Meine derzeitige Lösung sieht so aus:

Code: Alles auswählen

<we:ifEditmode>
	<we:img name="myImage" xml="true" />
<we:else />
<we:img name="myImage" only="src" to="global" nameto="myImageSrc" />
<?php
	$GLOBALS['myImageSrc'] = substr($GLOBALS['myImageSrc'], 0, strpos($GLOBALS['myImageSrc'],'?')); // unfortunately necessary because webEdition adds timestamp as GET parameter to image source
	if(path_to_id($GLOBALS['myImageSrc'])) {
		$GLOBALS['myImageSrcId'] = path_to_id($GLOBALS['myImageSrc']);
		$db = new DB_WE();
		$GLOBALS['myImageHref'] = f("SELECT c.Dat FROM tblContent c, tblLink l WHERE l.DID = " . $GLOBALS['myImageSrcId'] . " AND l.Name = 'LinkPath' AND l.CID = c.ID", "Dat", $db);
	}
?>
<?php if(strlen($GLOBALS['myImageHref']) > 0) { ?>
	<a href="<?php echo str_replace('/index.php','/',$GLOBALS['myImageHref']); ?>"><img itemprop="photo" src="<we:img name="myImage" only="src" />" alt="<we:img name="myImage" only="alt" />" width="<we:img name="myImage" only="width" />" height="<we:img name="myImage" only="height" />" /></a>
<?php } else { ?>
	<img itemprop="photo" src="<we:img name="myImage" only="src" />" alt="<we:img name="myImage" only="alt" />" width="<we:img name="myImage" only="width" />" height="<we:img name="myImage" only="height" />" />
<?php } ?>
</we:ifEditmode>
Das eigentliche Problem ist, dass ich bei <we:img> anscheinend nicht das Attribut "itemprop" für das <img>-Tag übergeben kann.

Re: Link bei <we:img>

Verfasst: Di 15. Mär 2016, 18:54
von blickfang
ah, ok. Dann würde ich evtl. das "imageDocument" mit der Id initialisieren und mal schauen, was da so drin steckt. Da kommst Du sicherlich an die Id des Linkziels (wenn interner Link) und kannst dann mit <we:url id="0815"> oder <?php id_to_path(0815); ?> den Pfad generieren.

Code: Alles auswählen

$image = new we_imageDocument();
$image->initById($imageId); 
Du kannst dem Image-tag jedes atribut für die Ausgabe durchreisen, wenn Du "pass_" davor schreibst

Code: Alles auswählen

<we:img name="meinBild" pass_meinattribut="testler" ... />

=>

Code: Alles auswählen

<img meinattribut="testerle"... >

Re: Link bei <we:img>

Verfasst: Di 15. Mär 2016, 19:35
von alaskana
Vielen Dank für den Tipp mit dem imageDocument. Das kannte ich bisher noch nicht.

"pass_itemprop" hatte ich schon probiert. Aber das funktionierte leider nicht.

Re: Link bei <we:img>

Verfasst: Di 15. Mär 2016, 22:36
von mokraemer
pass_ ist nur dann nötig, wenn es ein gleichlautendes WE-Attribut gibt.

Für we:img müßte man sonst mal schauen warum er hier keine custom-Attribute nimmt - sollte er. Sonst bitte mit der benutzen Version einen Bug-Report stellen.
Selbst mit php sollte nur die allerletzte Not sein.