Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 01. Oktober 2015 06:54

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 876

Abfrage, ob Bild hoch- oder querformat

Hallo,

für ein paar Bilder, die im News-Modul hochgeladen werden, benötige ich eine Abfrage, die erkennt, ob ein Bild hoch- oder querformatig ist.

In der Vorstellung recht simpel, sowas in der Art vielleicht:

{if imagesize->width ≥ imagesize->height}
<img style="width: 100%; height: auto" src="bild-quer.jpg" tlitle="..." />

{else} 
<img style="height: 100%; width: auto" src="bild-hoch.jpg" tlitle="..." />
{/if}

.. oder so ähnlich. Nur halt in valide. smile

Für ein wenig Hilfe wäre ich dankbar.

Beitrag geändert von antibart (01. Oktober 2015 07:26)

Offline

#2 01. Oktober 2015 07:28

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.927
Webseite

Re: Abfrage, ob Bild hoch- oder querformat

Du kommst wie folgt an die Daten:
(im Beispiel heisst das Bildfeld in den News "Bild")

{$bildpfad = "`$entry->file_location`/`$entry->fields.Bild->value`"}
{$bildpfad = $bildpfad|replace:"http://`$smarty.server.HTTP_HOST`":"/home/dein/pfad/zur/cmsms/installation/"}
{assign var="bildinfo" value=$bildpfad|getimagesize}

Danach kannst du auf die Variable $bildinfo zugreifen.

{if $bildinfo.0 > $bildinfo.1}Querformat{else}Hochformat{/if}

[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#3 01. Oktober 2015 07:52

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 876

Re: Abfrage, ob Bild hoch- oder querformat

Coool. Danke.

Offline

#4 02. Oktober 2015 11:51

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 876

Re: Abfrage, ob Bild hoch- oder querformat

Hmmm - es wird immer nur {else} ausgegeben. Stimmt da was mit dem Pfad nicht?

[== smarty, html ==]
{$bildpfad = "`$entry->file_location`/`$entry->fields.Bild_1->value`"}
{$bildpfad = $bildpfad|replace:"http://`$smarty.server.HTTP_HOST`":"/kunden/homepages/14/xxxxxxx/htdocs/cmsms/"}
{assign var="bildinfo" value=$bildpfad|getimagesize}

{if isset($entry->fields.Bild_1->value) && $entry->fields.Bild_1->value !=''}

{if $bildinfo.0 < $bildinfo.1}

<div class="newsbild" style="text-align: center" rel="lightbox[gallery]" title="{$entry->title|cms_escape}"><img src="{$entry->file_location}/{$entry->fields.Bild_1->value}" alt="{$entry->title|cms_escape}" style="width: 100%; height: auto;" />
</a>
</div>
{else}
<div class="newsbild" style="display: -webkit-flex; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center;"><a href="{$entry->file_location}/{$entry->fields.Bild_1->value}" rel="lightbox[gallery]" title="{$entry->title|cms_escape}"><img src="{$entry->file_location}/{$entry->fields.Bild_1->value}" alt="{$entry->title|cms_escape}" style="height: 100%; width: auto;" />
</a>
</div>

{/if}
{else}
{/if}

Beitrag geändert von antibart (02. Oktober 2015 12:45)

Offline

#5 02. Oktober 2015 11:58

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: Abfrage, ob Bild hoch- oder querformat

Welches {else} wird ausgegeben?
Das erste oder das zweite?
Abgesehen davon ist der Syntax beim Array {$bildinfo} falsch.
Wenn es ein numerisch indiziertes Array ist, dann nicht mit dem "Punkt-Syntax" sondern mit der eckigen Klammer darauf zugreifen:

{if $bildinfo[0] < $bildinfo[1]}

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

#6 02. Oktober 2015 12:17

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 876

Re: Abfrage, ob Bild hoch- oder querformat

NaN schrieb:

Welches {else} wird ausgegeben?
Das erste oder das zweite?

Das, was sich auf die bildinfo bezieht - das andere fragt ja nur, ob das Feld leer ist oder nicht.


NaN schrieb:

Abgesehen davon ist der Syntax beim Array {$bildinfo} falsch.

Danke. Leider hat es noch nicht zum Erfolg geführt. Noch immer wird bei allen Fotos - egal ob hochkant oder querformat dieser Teil nach dem {else} ausgegeben.

[== html, css, smarty ==]
<div class="newsbild" style="display: -webkit-flex; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center;"><a href="{$entry->file_location}/{$entry->fields.Bild_1->value}" rel="lightbox[gallery]" title="{$entry->title|cms_escape}"><img src="{$entry->file_location}/{$entry->fields.Bild_1->value}" alt="{$entry->title|cms_escape}" style="height: auto; width: 100%;" />
</a>
</div>

Daher meine Vermutung, dass die Bildinfo noch gar nicht ermittelt werden kann.

Beitrag geändert von antibart (02. Oktober 2015 12:43)

Offline

#7 02. Oktober 2015 13:27

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 876

Re: Abfrage, ob Bild hoch- oder querformat

Ich glaube noch immer, dass mein Pfad nicht stimmt.

Mal Schritt für Schritt

[== smarty ==]
{$bildpfad = "`$entry->file_location`/`$entry->fields.Bild_1->value`"}

Ermittelt: uploads/news/idXX/bilddatei.jpg

[== smarty ==]
{$bildpfad = $bildpfad|replace:"http://`$smarty.server.HTTP_HOST`":"/kunden/homepages/14/xxxxxxx/htdocs/cmsms/"}

Ersetzt die URL durch den absoluten Pfad. Also aus "http:// www. domain . de" wird  "/kunden/homepages/14/xxxxxxx/htdocs/cmsms/".

Wobei CMS-Root sich zur Zeit in einem Unterverzeichnis befindet, welches noch nicht direkt mit der Domain verknüpft ist. Also http://  www. domain . de / cmsms . Müsste ich den Ordner oben noch hinter $smarty.server.HTTP_HOST packen?

[== smarty ==]
{assign var="bildinfo" value=$bildpfad|getimagesize}

Erstellt die Variable $bildinfo, deren Wert /kunden/homepages/14/xxxxxxx/htdocs/cmsms/uploads/news/idXX/bilddatei.jpg und bezieht über "getimmagesize" die Ausmaße des Bildes.

... "getimagesize" ist ein Array und wird mit den Bildgrößendaten gefüttert: 0=Breite, 1=Höhe

[== smarty ==]
{if $bildinfo[0] < $bildinfo[1]}

Wenn Wert Bildbreite [0] kleiner ist als Wert Bildhöhe [1], zeige.

Hochkant...


Habe ich das soweit richtig gedeutet? Wo könnte meine Fehler liegen?

Ich habe testweise einfach mal {$bildinfo.0} bzw {$bildinfo[0]} ins Template gesetzt, um zu gucken, ob etwas ausgegeben wird. Wird nicht.

Beitrag geändert von antibart (02. Oktober 2015 14:06)

Offline

#8 02. Oktober 2015 14:07

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: Abfrage, ob Bild hoch- oder querformat

Müsste ich den Ordner oben noch hinter $smarty.server.HTTP_HOST packen?

Nein, im Gegenteil, die muss aus dem absoluten Pfad raus.
Die URL lautet ja "domain.de/cmsms/pfad/zum/bild".
Der Teil "domain.de" wird ersetzt mit "/kunden/homepages/14/xxxxxxx/htdocs/cmsms/".
Also steht am Ende da "/kunden/homepages/14/xxxxxxx/htdocs/cmsms/cmsms/pfad/zum/bild".
Also nur mit "/kunden/homepages/14/xxxxxxx/htdocs/" ersetzen.
Wenn Du die Domain aber nacher umstellen solltest, musst da wieder ran und es so machen wie jetzt.


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

#9 02. Oktober 2015 14:45

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 876

Re: Abfrage, ob Bild hoch- oder querformat

Oh. Wow. Nu is alles jut. Danke.

Offline

#10 04. Oktober 2015 13:50

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Abfrage, ob Bild hoch- oder querformat

Achtung

http://www.cmsmadesimple.de/forum/viewtopic.php?id=4593

Beitrag geändert von Andynium (04. Oktober 2015 14:15)

Offline