Zum Inhalt springen

file.maxW zeigt keine Wirkung

Erstellt am 21. Mai 2008 · 20 Antworten · letzte Antwort am 3. Dezember 2008 · Seite 1 von 2

Tags: Bilder, PHP, Frage

moeppie ·

Hallo,

habe dann auch mal angefangen mich mit der Ext Programmierung zu befassen.
Klappt soweit auch ganz gut, allerdings habe ich im Moment das Problem bei der Ausgabe von Bildern aus einem eigenen Frontend Plugin.

Arbeite im ersten Schritt noch ohne Template, sondern direkt mit einer Tabelle. Wie gesagt bin in den Anfängen und möchte erst mal eine Ausgabe.

Die Angaben file.maxW zeigt keinerlei Wirkung. Die Bilder werden in Originalgröße angezeigt.

	function main($content,$conf)	{
         $this->conf = $conf;
         $content="<table border=1 cellpadding=5 cellspacing=0 width=650>";
         $rows=$this->getItems();
              while(list($c,$row)=each($rows))	{
                     //the output displayed in a table
                     $content.="<tr><td>".($row["verein"])."</td>";
                     $content.="<td>".($row["king"])."</td>";
                     $content.="<td>".($row["queen"])."</td>";
                     $content.="<td>".date('d.m.Y',$row['shotdate'])."</td>";
                     $content.="<td>".$this->cObj->IMAGE(array(
                     'file' => 'uploads/tx_mskingtable/'.$row['pics'],
                     'file.maxW' => 100,
                     ))."</td></tr>";
              }
         $content.="</table>";     
         return $content;
}

Kann mir bitte jemand einen Tip geben was hier falsch sein kann oder habe ich einen Denkfehler. Danke!

just2b ·

Hallo,

weil das die falsche syntax ist!

ein . steht immer für ein neues array, sprich ['file.']['maxW'] = 123

georg

moeppie ·

Hallo Georg,

danke für die schnelle Antwort. Allerdings habe ich noch Problem wo genau die Synta eingebaut werden muss. Bin dann aus meiner Sicht auf folgenden Code gekommen.

function main($content,$conf)	{
         $this->conf = $conf;
         $content="<table border=1 cellpadding=5 cellspacing=0 width=650>";
         $rows=$this->getItems();
              while(list($c,$row)=each($rows))	{
                     //the output displayed in a table
                     $content.="<tr><td>".($row["verein"])."</td>";
                     $content.="<td>".($row["king"])."</td>";
                     $content.="<td>".($row["queen"])."</td>";
                     $content.="<td>".date('d.m.Y',$row['shotdate'])."</td>";
                     $content.="<td>".$this->cObj->IMAGE(array(
                     'file' => 'uploads/tx_mskingtable/'.$row['pics']['file.']['maxW']=100))."</td></tr>";
              }
         $content.="</table>";     
         return $content;
}

kannst Du mir vielleicht nochmal einen genaueren Tip geben?
Danke und Gruß

just2b ·

Hallo,

also auf ein neues

<?php $imgConf = array();
$imgConf['file'] = $deinFile;
$imgConf['file.']['maxW'] = 123;

$img =$this->cObj->IMAGE($imgConf); ?>

georg

moeppie ·

Ok, danke. So funzt es!
Hatte gedacht, dass

.$this->cObj->IMAGE(array('file'=>'uploads/tx_mskingtable/'.$row['pics']['file.']['maxW']=100))

das gleihe macht. Egal, ist mit Deiner Variante auch übersichtlicher.

Danke!

M-Cha ·

Also ich habe das hier erstellt:

$imgConf = array();
		$imgConf['file'] = 'uploads/formular/'.$record['bilder'];
		$imgConf['file.']['maxW'] = 50;
		$markerArray['###BILDER###']=$this->cObj->IMAGE($imgConf);

Das funktioniert auch. Aber wenn in der MySql Datenbank 2 Bilder drin sind zeigt er die nicht mehr an.

1.FRAGE:
Kann mir jemand sagen, wieso man nicht 2 Bilder oder mehr rauslesen kan?

2.FRAGE:
Kann man auf die Bilder einen Link setzen der beim klick auf adas kleine Bild das größere öffnet?

matin ·

ad frage 1: das geht doch - man kann mehrere bilder auslesen
ad frage 2: das geht auch - wie möchtest du es vergrößern? normales popup oder mit lightbox, wenn lightbox, welches script verwendest du (kj image lightbox oder perfectlightbox ...)

matin ·

hier gleich mal, wie du mehrere bilder auslesen kannst und bei verwendung von perfectlightbox mit einem popup verbinden kannst (leider ist mir keine andere möglichkeit bekannt, als es so zu frikeln - aber vielleicht weiß jemand anderer etwas besseres):

<?php
#weitere Bilder aus Bildleiste einfuegen
		$imgTeilen = $record['bilder'];;
		$imgArray = explode(',', $imgTeilen);
		foreach($imgArray as $imgAusgabe => $imgValue) {
		
			#Bild verkleinern auf 150 bzw. 90 px und mit Perfectlightbox verbinden
			$imgTSConfig = array();
			$imgTSConfig['altText'] = $record['title'];
			$imgTSConfig['titleText'] = $record['title'];
			$imgTSConfig['file.']['maxW'] = 150;
			$imgTSConfig['file.']['maxH'] = 90;
			$imgTSConfig['file'] = 'uploads/formular/'.$imgValue;
			$imgTSConfig['wrap'] = "<div style="\"float:" left="" padding-top:="" 1px="" padding-bottom:1px="" margin-right:="" 9px=""><a href="\"".$imgTSConfig1['file']."\"" rel="\"lightbox[lb3]\"">|</a></div>";
			
			$img = $this->cObj->IMAGE($imgTSConfig);
			
			$markerArray['###BILDER###'].= $img;
		}
?>

bei kj image lightbox geht es einfacher - musst es halt im obigen code einbauen:

<?php
// check if lightbox ext. is installed and init
		if (t3lib_extMgm::isLoaded('kj_imagelightbox2'))
		{
		$config['imageLightbox2'] = 1;
		$config['imageLightbox2.']['caption'] = htmlentities($record['title']);
		} 
		$img = $this->cObj->IMAGE($config);
		$markerArray['###BILDER###']=$img;
?>
M-Cha ·

in Zeile 14 ist irgendwo ein Fehler. Finde ihn leide nicht.

Also ich installiere jetzt ein von den beiden Plugins und packe den Code rein. Dann müsste es gehen ja?

matin ·

beim string muss du event. die " noch zum teil umbessern (hat es beim kopieren anscheinen nicht korrekt übernommen):
$imgTSConfig1['wrap'] = "<div style=\"float: left; padding-top: 1px; padding-bottom:1px; margin-right: 9px;\"><a href=\"".$imgTSConfig1['file']."\" rel=\"lightbox[lb3]\">|</a></div>";

wenn du das verwendest, musst du perfectlightbox installieren

M-Cha ·

Welche Lightbox sollte ich den lieber benutzen und welche ist einfacher einzubauen?

Habe nicht soviel ahnung wie das alles gehen soll hehe..

M-Cha ·

Also ich habe jetzt Perfect Lightbox2( perfectlightbox ) installiert. Mehrere Bilder aus einem Datenbankfeld zeigt der jetzt an. 😃

Leider funktioniert die Lightbox nicht. #angry#

		$imgTeilen = $record['bilder'];;
		$imgArray = explode(',', $imgTeilen);

        foreach($imgArray as $imgAusgabe => $imgValue) 
  		{

        	#Bild verkleinern auf 150 bzw. 90 px und mit Perfectlightbox verbinden
 
            $imgTSConfig = array();
 
            $imgTSConfig['altText'] = $record['title'];
 
            $imgTSConfig['titleText'] = $record['title'];
 
            $imgTSConfig['file.']['maxW'] = 150;
 
            $imgTSConfig['file.']['maxH'] = 90;
 
            $imgTSConfig['file'] = 'uploads/formular/'.$imgValue;
                          
            $imgTSConfig['wrap'] = "<div style=\"float: left; padding-top: 1px; padding-bottom:1px; margin-right: 9px;\"><a href=\"".$imgTSConfig1['file']."\" rel=\"lightbox[lb3]\">|</a></div>";

            $img = $this->cObj->IMAGE($imgTSConfig);

            $markerArray['###BILDER###'].= $img;

        }

Er öffnet die Bilder, aber leider nicht in der Lightbox sondern in dem aktuellen Fenster.

matin ·

guck mal im quelltext, ob das script für die lightbox ausgegeben wird. wenn ja, prüfe, ob eine andere extension mit mootools installiert ist und sich dadurch die scripte in die quere kommen. ansonsten schick mir mal die url (pn), dann kann ich mir das direkt ansehen.

M-Cha ·

Also eine andere Extension ist nicht installiert. Ich habe nur QUixplorer, Full Backup, Kommandzeile und Kickstarter installiert.

Habe es leider auf einem Sever liegen der keine Internetanbindung hat.

Wo im Quelltext muss ich den gucken?

matin ·

im head sollte in etwa so was stehen:

<link rel="stylesheet" href="typo3conf/ext/perfectlightbox/res/css/slightbox.css" type="text/css" media="screen,projection" /><script type="text/javascript" src="typo3conf/ext/perfectlightbox/res/js/prototype-packed.js"></script>
<script type="text/javascript" src="typo3conf/ext/perfectlightbox/res/js/scriptaculousEffects-packed.js?load=effects"></script><script type="text/javascript" src="typo3conf/ext/perfectlightbox/res/js/lightbox-packed.js"></script><script type="text/javascript">	var borderSize = 10;
	var resizeSpeed = 400;
	var animate = true;
	var overlayOpacity = 0.8;
	var allowSave = false;
	var enableSlideshowAutoplay = true;
	var slideshowAutoclose = true;
	var slideshowInterval = 5000;
	var lllImage = 'Bild';
	var lllOf = 'von';</script>
M-Cha ·

Der gibt nur das aus:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<!-- 
	This website is powered by TYPO3 - inspiring people to share!
	TYPO3 is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.
	TYPO3 is copyright 1998-2008 of Kasper Skaarhoj. Extensions are copyright of their respective owners.
	Information and contribution at http://typo3.com/ and http://typo3.org/
-->

	<link rel="stylesheet" type="text/css" href="typo3temp/stylesheet_8192c2092f.css" />
	<link rel="stylesheet" type="text/css" href="fileadmin/template/style.css" media="screen" />
	<title>Test 2</title>
	<meta name="generator" content="TYPO3 4.2 CMS" />

	<script type="text/javascript" src="typo3temp/javascript_93077bb238.js"></script>

</head>
<body>
  

<div id="wrap"> 
	<div id="lwrap">  	
	    <div id="menu"><ul><li><a href="test.html" title="Home"  >Home</a></li><li><a href="testa.html" title="test1"  >Test 1</a></li><li><a href="testim.html?&amp;no_cache=1" title="Test2"  >Test 2</a></li><li><a href="testap.html" title="Test 3"  >Test 3</a></li><li><a href="testkt.html" title="test4"  >Test 4</a></li></ul></div>
	    <div id="logo"><img src="fileadmin/images/logo2.png" alt="Logo" /></div>

	</div>
    	<div id="trenner"><img src="fileadmin/images/trenner.jpg" alt="trenn" /></div>

    	<div id="inhalt">
	<!--  CONTENT ELEMENT, uid:49/list [begin] -->
		<a id="c49"></a>
		<!--  Plugin inserted: [begin] -->
			


	<!--

		BEGIN: Content of extension "formular", plugin "formular_pi1"

	-->
	<div class="formular-pi1">

		
<h1>Detailansicht</h1>

    <table border="1">
	<tr>
		<td width="100"><div class="rot">Person 1:</div></td><td width="300"><font size="2">Willi</font></td>
	</tr>
	<tr>
		<td width="100"><div class="rot">Person 3:</div></td><td width="300"><font size="2">Bernd</font></td>

	</tr>
	<tr>
		<td width="100"><div class="rot">Person 3:</div></td><td width="300"><font size="2">Hans</font></td>
	</tr>
	<tr>
		<td width="100"><div class="rot">Person 4:</div></td><td width="300"><font size="2">Jürgen</font></td>
	</tr>

	<tr>
		<td width="100"><br /></td>
	</tr>
	<tr>
		<td width="100"><div class="rot">Bilder:<br /></div></td><td width="300"><font size="2"><div style="float: left; padding-top: 1px; padding-bottom:1px; margin-right: 9px;"><a href="uploads/formular/img_03.jpg" rel="lightbox[lb3]"><img src="typo3temp/pics/878ee2ae32.jpg" width="150" height="75" border="0" alt="" title="" /></a></div></font></td>

	</tr>
	</table>
	
	<p><a href="testim.html?&amp;no_cache=1" >Zurueck zur Personenansicht</a></p>



	</div>
	
	<!-- END: Content of extension "formular", plugin "formular_pi1" -->

	
		<!--  Plugin inserted: [end] -->

			
	<!--  CONTENT ELEMENT, uid:49/list [end] -->
	
		</div>
    	<div id="rwrap">
    		<div id="verlauf"><img src="fileadmin/images/verlauf.jpg" alt="verlauf" /></div>
    		<div id="rechts"></div>
    	</div>
</div>


</body>
</html>
matin ·

da ist perfectlightbox nicht korrekt eingebunden. guck mal, ob du im beim template das static template für perfectlightbox eingebunden hast:
template-> root template wählen -> "Click here to edit whole template record" -> bei "enthält" gucken ob bei "Statische einschließen (aus Erweiterungen)" auf der linken seite (ausgewählt) "Perfect Lightbox2" steht. wenn nicht, dann einfach auf der rechten seite bei "Objekte" anklicken, dann sollte links erscheinen. speichern nicht vergessen.