Smarty array ausgeben

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

Smarty array ausgeben

Post by reinhardl »

Hallo,
habe mal wieder ein kleines Problem mit smarty.

im freetag_event_smarty habe ich in der getRelatedEntriesHtml den code wie folgt angepasst:

Code: Select all

foreach($entries AS $entryid => $title) {
				$properties = serendipity_fetchEntryProperties($entryid);
				
				$return['entries'][]['url'] = serendipity_archiveURL($entryid, $title);
				$return['entries'][]['title']   = htmlspecialchars($title);
				$return['entries'][]['rlbild']   = htmlspecialchars($properties[ep_Customfield1]);
 
            }
In meiner entries_tpl rufe ich

Code: Select all

 {$entry.freetag.related.entries|@print_r}  
auf und erhalte folgenden Output:

Code: Select all

Array ( 
[0] => Array ( [url] => http://test.loepi.org/archives/25-Fotogallerie-in-Beitraegen.html ) 
[1] => Array ( [title] => Fotogallerie in Beiträgen )
 [2] => Array ( [rlbild] => /uploads/image12.serendipityThumb.jpg )
 [3] => Array ( [url] => http://test.loepi.org/archives/22-Kampfsport.html ) 
[4] => Array ( [title] => Kampfsport ) 
[5] => Array ( [rlbild] => /uploads/image8.serendipityThumb.jpg )
 [6] => Array ( [url] => http://test.loepi.org/archives/21-Schwimmwettkaempfe.html )
 [7] => Array ( [title] => Schwimmwettkämpfe ) 
[8] => Array ( [rlbild] => http://lorempixel.com/400/200/sports/7/ )
 [9] => Array ( [url] => http://test.loepi.org/archives/6-Jun-1-Test-k2.html )
 [10] => Array ( [title] => Jun 1 Test k2 ) 
[11] => Array ( [rlbild] => /uploads/image15.serendipityThumb.jpg ) 
[12] => Array ( [url] => http://test.loepi.org/archives/3-Hallo-Mister-aus-Muenster-k2.html )
 [13] => Array ( [title] => Hallo Mister aus Münster k2 )
 [14] => Array ( [rlbild] => /uploads/image6.serendipityThumb.jpg ) ) 1
die folgende Schleife bringt aber nicht die URLs sondern immer die erste.

Code: Select all

	   {foreach from=$entry.freetag.related.entries item="feld"}
            
             url= {$feld.url}<br/>
			 title= {$feld.title}<br/>
			 rlbild= {$feld.rlbild}<br/>
            
         {/foreach}
dort gibt es folgenden Output:

Code: Select all


    http://test.loepi.org/archives/25-Fotogallerie-in-Beitraegen.html
    title=
    rlbild=
    url=
    title= Fotogallerie in Beiträgen
    rlbild=
    url=
    title=
    rlbild= /uploads/image12.serendipityThumb.jpg
    url= http://test.loepi.org/archives/22-Kampfsport.html
    title=
    rlbild=
    url=
    title= Kampfsport
    rlbild=
    url=
    title=
    rlbild= /uploads/image8.serendipityThumb.jpg
    url= http://test.loepi.org/archives/21-Schwimmwettkaempfe.html
    title=
    rlbild=
    url=
    title= Schwimmwettkämpfe
    rlbild=
    url=
    title=
    rlbild= http://lorempixel.com/400/200/sports/7/
    url= http://test.loepi.org/archives/6-Jun-1-Test-k2.html
    title=
    rlbild=
    url=
    title= Jun 1 Test k2
    rlbild=
    url=
    title=
    rlbild= /uploads/image15.serendipityThumb.jpg
    url= http://test.loepi.org/archives/3-Hallo-Mister-aus-Muenster-k2.html
    title=
    rlbild=
    url=
    title= Hallo Mister aus Münster k2
    rlbild=
    url=
    title=
    rlbild= /uploads/image6.serendipityThumb.jpg


Was ist da falsch?
Grüße
Reinhard
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Smarty array ausgeben

Post by Timbalu »

Dein Ausgangsarray ist falsch, denn es sollte doch viel wahrscheinlicher eher so sein

Code: Select all

    Array ( 
		[0] => array (
				[url] => http://test.loepi.org/archives/25-Fotogallerie-in-Beitraegen.html 
				[title] => Fotogallerie in Beiträgen
				[rlbild] => /uploads/image12.serendipityThumb.jpg
				)
		[1] => array (
				[url] => http://test.loepi.org/archives/22-Kampfsport.html 
				[title] => Kampfsport
				[rlbild] => /uploads/image8.serendipityThumb.jpg
				)
		etc.
also ungetestet

Code: Select all

foreach($entries AS $entryid => $title) {
    $properties = serendipity_fetchEntryProperties($entryid);
    $return['entries'][] = array(
					'url'      => serendipity_archiveURL($entryid, $title),
					'title'    => htmlspecialchars($title),
					'rlbild'   => htmlspecialchars($properties[ep_Customfield1])
	);
}
PS. So ganz nebenbei. Seit Smarty 3 gibt es "|@" für modifier nicht mehr. Das diente früher dazu modifier arrays zu bedienen / zuzuweisen.
Die foreach syntax ist jetzt der von PHP ebenbürtig, d.h. {foreach $foo AS $bar} oder {foreach $foo AS $key => $value}. Nur in solchen Schleifen tauchen jetzt wieder solche @ Zeichen auf. Sie definieren zum Beispiel {$bar@index} oder {$bar@iteration} counter oder zB den {$bar@key}. http://www.smarty.net/docs/en/language. ... oreach.tpl

Ich finde es lohnt sich - sich von der alten Smarty 2 Syntax konsequent zu verabschieden, wenn man sowieso nur für größer gleich S9y 1.7 entwickelt. :)
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
reinhardl
Regular
Posts: 258
Joined: Wed Jun 20, 2007 8:54 am
Location: Germany

Re: Smarty array ausgeben

Post by reinhardl »

Ja passt!!
Danke !!!
Post Reply