Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
#1 07. Februar 2011 17:21
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
cataloger: Nur ausgefüllte Variablen anzeigen
Ich habe ein Template für Cataloger 0.9 erstellt:
[== php ==]
<p>
<strong>{$marke} {$modell}</strong><br />
Baujahr {$erstzulassung}, {$preis}
</p>
<p> </p>
<div class="catalog_item">
<table>
<tr>
<td class="cat_bild"><img id="item_image" name="item_image" src="{$image_1_url}" title="{$title}" alt="{$title}" /></td>
</tr>
<tr>
<td class="cat_thumbs">{section name=ind loop=$image_url_array}
<a href="javascript:repl('{$image_url_array[ind]}')" class="legal"><img src="{$image_thumb_url_array[ind]}" class="cat_thumbs_gfx" border="0" title="{$title}" alt="{$title}" /></a>
{/section}</td>
</tr>
</table>
<table>
{section name=at loop=$attrlist}
<tr>
<td class="kat_links">
<strong>{$attrlist[at].name}</strong>:
</td>
<td class="kat_rechts">
{eval var=$attrlist[at].key}
</td>
</tr>
{/section}
</table>
{literal}
<script type="text/javascript">
function repl(img)
{
document.item_image.src=img;
}
</script>
{/literal}
</div>
Ich möchte das nur die ausgefüllten Variablen, bzw. Einträge angezeigt werden.
Ich habe eine ähnliche Frage im .org Forum gefunden: Using template variables to change page [solved], beantwortet von Cyberman, ist allerdings von 2008, ich bin mir nicht sicher ob das so noch umsetzbar ist?
Offline
#2 08. Februar 2011 08:42
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Sollte wie dort dargestellt funktionieren, also zum Beispiel
{if $preis != ''}
{$preis}
{/if}
Offline
#3 08. Februar 2011 09:58
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Danke, ich habe es mit wenigen Einträgen einmal probiert, bekomme aber nur eine Fehlermeldung als Ausgabe:
Fatal error: Cannot use string offset as an array in /is/htdocs/wp170815_QZI30KO90Z/www/tmp/templates_c/Cataloger^%%F0^F02^F02E6036%%module_db_tpl%3ACataloger%3Bcatalog_6.php on line 82
Ich möchte erreichen das bei fehlender Eingabe das gesamte tr nicht angezeigt wird, {$attrlist[at].name} und {eval var=$attrlist[at].key}.
<table>
{section name=at loop=$attrlist}
{if $erstzulassung != ''}
<tr>
<td class="kat_links"><strong>{$erstzulassung[at].name}</strong>:</td>
<td class="kat_rechts">{$erstzulassung}</td>
</tr>
{/if}
{if $leistung != ''}
<tr>
<td class="kat_links"><strong>{$leistung[at].name}</strong>:</td>
<td class="kat_rechts">{$leistung}</td>
</tr>
{/if}
{if $getriebe != ''}
<tr>
<td class="kat_links"><strong>{$getriebe[at].name}</strong>:</td>
<td class="kat_rechts">{$getriebe}</td>
</tr>
{/if}
{if $kraftstoffart != ''}
<tr>
<td class="kat_links"><strong>{$kraftstoffart[at].name}</strong>:</td>
<td class="kat_rechts">{$kraftstoffart}</td>
</tr>
{/if}
{if $nchsterhutermin != ''}
<tr>
<td class="kat_links"><strong>{$nchsterhutermin[at].name}</strong>:</td>
<td class="kat_rechts">{$nchsterhutermin}</td>
</tr>
{/if}
{if $anzahlderfahrzeughalter != ''}
<tr>
<td class="kat_links"><strong>{$anzahlderfahrzeughalter[at].name}</strong>:</td>
<td class="kat_rechts">{$anzahlderfahrzeughalter}</td>
</tr>
{/if}
{/section}
</table>
Im Original werden alle Einträge über {$attrlist[at].name} und {eval var=$attrlist[at].key}
<table>
{section name=at loop=$attrlist}
<tr>
<td class="kat_links">
<strong>{$attrlist[at].name}</strong>:
</td>
<td class="kat_rechts">
{eval var=$attrlist[at].key}
</td>
</tr>
{/section}
</table>
aufgebaut. Um zu verhindern, dass einzelne nicht ausgefüllte nicht angezeigt werden, muss ich doch wie o.a. jede Variable einzeln aufführen? Habe ich das richtig verstanden?
Ist der Eintrag
{section name=at loop=$attrlist}
bei mir richtig positioniert, überhaupt notwendig?
Offline
#4 08. Februar 2011 13:33
- piratos
- Gast
Re: cataloger: Nur ausgefüllte Variablen anzeigen
{if isset($erstzulassung) and !empty($erstzulassung[at].name )}
Allerdings kann ich nicht sehen wo $erstzulassung herkommt.
$erstzulassung muss ja ein array sein und deswegen geht auch {$erstzulassung} nicht.
#5 08. Februar 2011 14:20
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
{if isset($erstzulassung) and !empty($erstzulassung[at].name )}
Allerdings kann ich nicht sehen wo $erstzulassung herkommt.
$erstzulassung muss ja ein array sein und deswegen geht auch {$erstzulassung} nicht.
Also geht's doch nicht?
Dann müssen die Leereinträge halt stehen bleiben - schade.
Offline
#6 08. Februar 2011 14:23
- piratos
- Gast
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Was macht das:
{if isset($erstzulassung) and !empty($erstzulassung[at].name )}
stellt fest ob es eine $erstzulassung gibt und dann ob empty($erstzulassung[at].name nicht leer ist.
Trifft beides zu läuft der Rest durch ansonsten nicht.
Allerdings müsste man klären wo die $erstzulassung herkommt.
Solche Abfragen
{if $preis != ''}
{$preis}
{/if}
funktionieren unter Smarty 2 problemlos, sollte man aber nicht mehr machen, führt unter Smarty 3 sofort zum Abpfiff wenn $preis nicht existiert.
{if !empty($preis)}
{$preis}
{/if}
w#re besser.
Beitrag geändert von piratos (08. Februar 2011 14:25)
#7 08. Februar 2011 15:13
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Was macht das:
{if isset($erstzulassung) and !empty($erstzulassung[at].name )}
stellt fest ob es eine $erstzulassung gibt und dann ob empty($erstzulassung[at].name nicht leer ist.
Trifft beides zu läuft der Rest durch ansonsten nicht.
Allerdings müsste man klären wo die $erstzulassung herkommt.
Die Variablen stehen unten in
>Erweiterungen >Katalog >Katalog-Untertemplates >entspr. Template anklicken
aufgelistet:
Variablen des Eintrags-Templates
{$title}, {$notes}, {$marke}, {$modell}, {$erstzulassung}, {$leistung},..
Wenn ich bei Benutzerdefinierte Eigenschaften verwalten unter Eigenschaften des Eintrags ein Wort (Nächster HU Termin) mit Umlaut eingebe sieht der Variablenname so aus: {$nchsterhutermin} und funktioniert natürlich nicht. Gibt es vielleicht eine Lösung die eine Anzeige mit Umlaut beibehält?
Solche Abfragen
{if $preis != ''}
{$preis}
{/if}funktionieren unter Smarty 2 problemlos, sollte man aber nicht mehr machen, führt unter Smarty 3 sofort zum Abpfiff wenn $preis nicht existiert.
{if !empty($preis)}
{$preis}
{/if}w#re besser.
Ich habe das so ins Template gebaut:
<table>
{section name=at loop=$attrlist}
{if !empty($erstzulassung)}
<tr>
<td class="kat_links"><strong>{$erstzulassung[at].name}</strong>:</td>
<td class="kat_rechts">{$erstzulassung}</td>
</tr>
{/if}
{/section}
</table>
bekomme aber weiterhin die gleiche Fehlermeldung. Ist mein Template-Aufbau vielleicht nicht richtig???
Offline
#8 08. Februar 2011 15:18
- piratos
- Gast
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Also dann nochmals die Fragestellung wo $erstzulassung her kommt.
Die Schleife läuft auf
section name=at loop=$attrlist}
und
nicht auf $erstzulassung.
Also wo kommt das an dieser Stelle her ?
Praktisch gesehen gibt es sie überhaupt nicht.
#9 08. Februar 2011 18:29
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Also dann nochmals die Fragestellung wo $erstzulassung her kommt.
Die Schleife läuft auf
section name=at loop=$attrlist}und
nicht auf $erstzulassung.Also wo kommt das an dieser Stelle her ?
Praktisch gesehen gibt es sie überhaupt nicht.
Soll heißen, das section muss vor jeder Variable / Loop stehen? Ich hatte gehofft es funtioniert übergreifend. Sorry, aber ich habe keine php-Erfahrung, deshalb ist es für mich nicht so einfach alles zu verstehen - und umzusetzen.
Ich habe das jetzt mal so probiert:
<table>
{section name=at loop=$erstzulassung}
{if !empty($erstzulassung)}
<tr>
<td class="kat_links"><strong>{$erstzulassung[at].name}</strong>:</td>
<td class="kat_rechts">{$erstzulassung}</td>
</tr>
{/if}
{/section}
{section name=at loop=$leistung}
{if !empty($leistung)}
<tr>
<td class="kat_links"><strong>{$leistung[at].name}</strong>:</td>
<td class="kat_rechts">{$leistung}</td>
</tr>
{/if}
{/section}
u.s.w...
Die Fehlermeldung ist jetzt eine andere, oder verweist auf eine andere Zeile:
Fatal error: Cannot use string offset as an array in /is/htdocs/wp170815_QZI30KO90Z/www/tmp/templates_c/Cataloger^%%60^609^60917DA7%%module_db_tpl%3ACataloger%3Bcatalog_9.php on line 116
So wie ich's gemacht habe ist es wieder falsch, grmpfff…
Offline
#10 08. Februar 2011 19:22
- piratos
- Gast
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Das ist nicht PHP das ist Smarty.
Du rubbelst auf der falschen Variable rum.
{get_template_vars}
als erstes ins Template eingeben.
Dann siehst du alle Variable von Smarty.
#11 08. Februar 2011 20:01
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Das ist nicht PHP das ist Smarty.
Du rubbelst auf der falschen Variable rum.
{get_template_vars}
als erstes ins Template eingeben.
Dann siehst du alle Variable von Smarty.
Angezeigt wir das:
SCRIPT_NAME = /index.php
app_name = CMS
sitename = Meier
lang = de_DE
encoding = utf-8
content_obj = Object
content_id = 70
page = gebrauchtwagen
page_id = gebrauchtwagen
page_name = gebrauchtwagen
page_alias = gebrauchtwagen
position = 4.1.1
friendly_position = 4.1.1
Variablen des Kataloges kann ich keine entdecken. Hilft das irgendwie weiter?
Offline
#12 08. Februar 2011 20:20
- piratos
- Gast
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Variablen des Kataloges kann ich keine entdecken. Hilft das irgendwie weiter?
Klar - jetzt wissen wir das das wir die Templatebaustelle zunächst einmal zur Seite legen können, wo nichts ist wird nichts ausgegeben.
Ich gehe davon aus das du das so gemacht hast:
{get_template_vars}
<table>
{section name=at loop=$erstzulassung}
Da ich mit dem Modul nicht arbeite sind nun ANDERE gefordert.
#13 08. Februar 2011 21:59
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Ich gehe davon aus das du das so gemacht hast:
{get_template_vars}
<table>
{section name=at loop=$erstzulassung}
Da ich mit dem Modul nicht arbeite sind nun ANDERE gefordert.
Danke das Du's zumindest entschlüsselt hast. So kann ich mir wenigstens weitere Arbeit am Template sparen.
Beitrag geändert von dylan (08. Februar 2011 22:00)
Offline
#14 09. Februar 2011 08:20
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Das sind noch nicht alle Daten - versuch mal diesen Tag
Offline
#15 09. Februar 2011 16:49
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.436
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Ich möchte das nur die ausgefüllten Variablen, bzw. Einträge angezeigt werden.
Okay, jetzt mal bitte etwas mehr Klartext. Um welche Variablen genau geht es?
Um alle?
Oder nur um bestimmte Attribute?
Zeig doch mal ein oder zwei Beispiele.
(Wie es ist und wie es sein soll)
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#16 10. Februar 2011 12:54
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Das sind noch nicht alle Daten - versuch mal diesen Tag
http://www.cmsmadesimple.de/forum/viewtopic.php?id=337
Das ist der Anfang der aufgeschlüsselten Daten:
Array
(
SCRIPT_NAME => /index.php
app_name => CMS
sitename => Meier
lang => de_DE
encoding => utf-8
content_obj => CatalogItem Object
{
attrs => Array
(
0 => stdClass Object
{
attr => Marke
alias =>
length => 25
default =>
select_values =>
field_type => text
safe => marke
}
1 => stdClass Object
{
attr => Modell
alias =>
length => 25
default =>
select_values =>
field_type => text
safe => modell
}
2 => stdClass Object
{
attr => Erstzulassung
alias =>
length => 20
default =>
select_values =>
field_type => text
safe => erstzulassung
}
und so weiter…
Das "safe" ist vermutlich die Variable?
Okay, jetzt mal bitte etwas mehr Klartext. Um welche Variablen genau geht es?
Um alle?
Oder nur um bestimmte Attribute?
Zeig doch mal ein oder zwei Beispiele.
(Wie es ist und wie es sein soll)
Beispiele habe ich nicht, ist ja nur eine Aufschlüsselung diverser Daten, ähnlich wie bei mobile.de
Es geht um alle im Katalog enthaltenen Variablen, das sind diese:
{$title}, {$notes}, {$marke}, {$modell}, {$erstzulassung}, {$leistung}, {$getriebe}, {$kraftstoffart}, {$hubraum}, {$farbe}, {$naechsterhutermin}, {$anzahlderfahrzeughalter}, {$preis}, {$zustand}, {$ausstattung}, {$klimatisierung}, {$anzahldertueren}, {$schadstoffklasse}, {$umweltplakette}, {$airbags}, {$sonstiges}, {$image_1_url}, {$image_thumb_1_url}, {$src_image_1_url}, {$image_2_url}, {$image_thumb_2_url}, {$src_image_2_url}, {$image_url_array}, {$src_image_url_array}, {$image_thumb_url_array}{$file_url_array}, {$file_name_array}, {$file_ext_array}, {$root_url}, {$image_root}
Es soll so funktionieren wie es ist. Soll heißen, dass Template hier gibt es wie gewünscht wieder. Nur leider werden auch die nicht ausgefüllten Daten mit angezeigt. Das war Anlass meiner Frage, ist es möglich nur die ausgefüllten Felder anzeigen zu lassen- mit meinem vorhandenen Template?:
<p>
<strong>{$marke} {$modell}</strong><br />
Baujahr {$erstzulassung}, {$preis}
</p>
<p> </p>
<div class="catalog_item">
<table>
<tr>
<td class="cat_bild"><img id="item_image" name="item_image" src="{$image_1_url}" title="{$title}" alt="{$title}" /></td>
</tr>
<tr>
<td class="cat_thumbs">{section name=ind loop=$image_url_array}
<a href="javascript:repl('{$image_url_array[ind]}')" class="legal"><img src="{$image_thumb_url_array[ind]}" class="cat_thumbs_gfx" border="0" title="{$title}" alt="{$title}" /></a>
{/section}</td>
</tr>
</table>
<table>
{section name=at loop=$attrlist}
<tr>
<td class="kat_links">
<strong>{$attrlist[at].name}</strong>:
</td>
<td class="kat_rechts">
{eval var=$attrlist[at].key}
</td>
</tr>
{/section}
</table>
{literal}
<script type="text/javascript">
function repl(img)
{
document.item_image.src=img;
}
</script>
{/literal}
</div>
Ich hoffe ich konnte jetzt verständlich machen worum es mir geht?
Offline
#17 14. Februar 2011 11:23
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Was genau wird bei {$erstzulassung|print_r} ausgegeben?
Offline
#18 16. Februar 2011 08:56
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Was genau wird bei {$erstzulassung|print_r} ausgegeben?
Audi Avant A6
Baujahr 20031, 18.000 €
Bei {$erstzulassung} wird
Audi Avant A6
Baujahr 2003, 18.000 €
ausgegeben, mit |print_r wird eine '1' hinzugefügt.
Offline
#19 16. Februar 2011 10:08
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Wird eine "0" ausgegeben, wenn das Feld "Erstzulassung" leer ist?
Offline
#20 16. Februar 2011 15:30
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Wird eine "0" ausgegeben, wenn das Feld "Erstzulassung" leer ist?
Eine '1' wird bei Nichteintrag angezeigt.
Offline
#21 16. Februar 2011 16:38
- piratos
- Gast
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Eine '1' wird bei Nichteintrag angezeigt.
Das ist Mist, nun bleibt dir nichts anderes übrig als alle Felder dahingehend zu prüfen ob sie vorhanden und leer sind.
{if isset($namedervar) and $namedervar<>'1'} {$namedervar}{/if}
Ich hoffe du hast nicht die Absicht mit cmsms so etwas wie mobile.de oder daz24.de aufbauen zu wollen , da wirst du ganz schnell an die Grenzen von CMSMS stoßen.
#22 16. Februar 2011 19:17
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Das ist Mist, nun bleibt dir nichts anderes übrig als alle Felder dahingehend zu prüfen ob sie vorhanden und leer sind.
{if isset($namedervar) and $namedervar<>'1'} {$namedervar}{/if}
{if isset($erstzulassung) and $erstzulassung<>'1'} {$erstzulassung}{/if}
Wäre das korrekt?
Und, wo kommt die Anweisung zu stehen?
Wahrscheinlich muss ich alle vars einzeln aufführen, richtig?:
{if isset($marke) and $marke<>'1'} {$marke}{/if}
{if isset($modell) and $modell<>'1'} {$modell}{/if}
{if isset($erstzulassung) and $erstzulassung<>'1'} {$erstzulassung}{/if}
u.s.w.
Kann man das nicht irgendwie mit der "var=$attrlist[at].key" global lösen?
Du merkst sicher das ich kein wirklicher Experte in diesen Dingen bin
Offline
#23 16. Februar 2011 19:24
- piratos
- Gast
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Einsetzen - da kann nichts schlimmes passieren.
Und klar ist wenn man Baujahr {$erstzulassung} hat das man es da auch einsetzen muss.
Das wird ein Geschreibsel - oh mann.
#24 16. Februar 2011 21:37
- dylan
- kennt CMS/ms
- Ort: Münsterland
- Registriert: 16. Dezember 2010
- Beiträge: 303
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Einsetzen - da kann nichts schlimmes passieren.
Einsetzen - da kann nichts schlimmes passieren.
Und klar ist wenn man Baujahr {$erstzulassung} hat das man es da auch einsetzen muss.
Eine Frage noch, wegen des Titels, bzw. "name".
Im Original ist es so aufgebaut:
<strong>{$attrlist[at].name}</strong>: {eval var=$attrlist[at].key}
Bei mir wird's vermutlich (?) so aussehen:
{if isset($erstzulassung) and $erstzulassung<>'1'}
<tr>
<td class="kat_links"><strong>{$erstzulassung[at].name}</strong>:</td>
<td class="kat_rechts">{$erstzulassung}</td>
</tr>
{/if}
Wie sieht die Variable für 'name' aus? So wie ich's hier versucht habe wirft es eine Fehlermeldung raus.
Offline
#25 16. Februar 2011 21:43
- piratos
- Gast
Re: cataloger: Nur ausgefüllte Variablen anzeigen
Nach deiner Definition ist $erstzulassung ein Array deswegen kann man auch nicht{$erstzulassung} schreiben und du wirst wahrscheinlich alle Werte innerhalb des Arrays abprüfen müssen.
Wenn du nicht sicher bist welche Wert in $erstzulassung stecken {$erstzulassung|print_r} ausgeben.