Zum Inhalt springen

BZD Staff Directory, wie Email mit dem Mitarbeiterbild verlinken

Erstellt am 11. März 2008 · 5 Antworten · letzte Antwort am 20. April 2009

Tags: Links, Frage

dorf ·

Hallo,

wie kann ich bei BZD Staff Directory das Bild mit der dazugehörigen Emailadresse verlinken. Die Doku gibt leider nix her und meine Versuche haben auch nix gebracht.

Br4inbukz ·

Hmmm ich hab keine Ahnung ob das funktioniert, aber du könntest vielleicht das HTML Template bearbeiten.

im html Template gibts doch den Marker ###EMAIL### und der wird ja durch die Mailaddy substituiert.
Und es gibt den Marker ###IMAGE### Ich würde das Template halt soweit bearbeiten und dann eben das so machen, keine Ahnung ob es klappt 😃

<a href="mailto:###EMAIL###">###IMAGE###</a>

Wobei ich Maillinks auf Fotos persönlich hasse 😃
Ich will nicht, dass sich mein Mailprogramm öffnet wenn ich nur auf ein Foto klicke 😃[/b]

dorf ·

Mit:

<a href="mailto:###EMAIL###">###IMAGE###</a>

geht es nicht der Marker ###EMAIL## is schon mit dem kompletten HTML gefüllt.

gibt dann was wie:

<a href="mailto:<a href="javascript:linkTo_UnCryptMailto('Cyrpehuj1gh');">name(at)domain.de</a>"><img src="uploads/tx_bzdstaffdirectory/name.jpg" width="104" height="125" border="0" alt="" title="" /></a>

Noch jemand ne Idee, ich verzweifel langsam #angry#

Br4inbukz ·

Nun dann erstell dir einen neuen Marker z.B. ###FOTOMAIL###

Anschließend öffnest die
class.tx_bzdstaffdirectory_pi1.php

nun schau dir dort mal an, an welcher Stelle in der PHP Datei zum einen die Marker ###IMAGE### und der Marker ###EMAIL### ersetzt werden.

So gibt es für die Detail Ansicht beim ersetzen des Markers folg. Funktion

// The image is shown in every case, the subpart will never be hidden.
		// If no image is stored for this user, a dummy picture will be shown.
		$this->setMarkerContent('image', $this->getImage($person));
		$this->setMarkerContent('label_image', $this->pi_getLL('label_image'));

Hier ist der Marker übrigens image das ### davor und dahinter wurde schon durch eine andere Funktion bereinigt.
Es wird also beim ersetzen des Markers hier die Funktion getImage aufgerufen
Diese sieht dort so aus

function getImage($person) {
		$result = '';
		$fN = $this->getValue('image', $person);

		// Get Configuration Data (TypoScript Setup). Depending on "CODE" (what to show)
		$lconf = $this->conf[$this->code.'.'];

		if (empty($fN) && $this->getConfValueBoolean('showDummyPictures', 's_template')) {
			switch($this->getValue('gender', $person))
			{
				case 2	:	$lconf['image.']['file'] = $this->getConfValue('dummyPictureFemale', $sheet = 's_template', true);
									break;
				case 1	:	$lconf['image.']['file'] = $this->getConfValue('dummyPictureMale', $sheet = 's_template', true);
									break;
				case 0	:	// The fallthrough is intended.
				default	:	// no gender specified or "not defined" is selected
									break;
			}

			// just set the unisex dummy image, if this is not forbidden in the setup
			if ($lconf['image.']['file'] == '' && $this->getConfValueBoolean('showUnisexDummyImage', 's_template')) {
				$lconf['image.']['file'] = $this->getConfValue('dummyPictureDefault', $sheet = 's_template', true);			
			}
		} else {
			$lconf['image.']['file'] = 'uploads/tx_bzdstaffdirectory/' . $fN;
		}

		// Depending on the settings in the Flexform of the content object, the image will be wrapped with a link (to click enlarge the image).
		$imageconf = array();
		if ( $this->pi_getFFvalue($this->cObj->data['pi_flexform'],'click_enlarge','s_detailview') == TRUE AND $fN != '')	{
			// Render the pop-up image with the size limitations from TS Setup.
			$popUpImageArray = $this->cObj->getImgResource($lconf['image.']['file'], $lconf['image.']['popup.']);

			$imageconf['enable'] = 1;
			$imageconf['JSwindow'] = 1;
			$imageconf['wrap'] = '<a href="javascript: close();"> | </a>';

			$result = $this->cObj->imageLinkWrap($this->cObj->IMAGE($lconf['image.']),$popUpImageArray[3],$imageconf);

		} else	{
			$result = $this->cObj->IMAGE($lconf['image.']);
		}

		return $result;
	}

Anschließend schaust du dir das ganze an für den Marker email, wie der ersetzt wird und die dazugehörige Funktion.

Hier fügst du nun also im Code einen zusätzlichen Marker in der Detailansicht ein und legst fest wie der ersetzt wird
z.B.
$this->setMarkerContent('fotoemail', $this->getMailimage($person));

Anschließend nimmst du die Funktion getImage und kopierst sie und benennst sie um in die Funktion
function getMailimage.

Und nun schaust dir nochmal die beiden Funktionen getImage und getEmail an.
Du brauchst eigentlich nur dir die Funktion ein wenig zu erweitern und den HTML Code abändern, der gegeben war.
Hoffe das hat als kleine Gedankenanreiz geholfen!

dorf ·

Hallo,

danlke für den Gedankenreiz, werd mir das mal anschauen.

Der Link auf dem Foto wird dann in der komplett ansicht alle Mitarbeiter erscheinen, detailseite gibt es nicht.

[UPDATE]
Supi danke, jetzt geht alles ohne Probleme

torkel ·

Hallo

da hier schon mal das IMAGE verwendet wurde, wollte ich mal nachfragen, wo man die Default-Grösse von dem Image einstellen kann?

bei mir ist es immer width: 75, aber ich würde das gerne ändern, finde aber nichts. Per CSS gehts auch nicht.

Grüsse