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

#1 11. Juni 2020 22:08

parsec
kennt CMS/ms
Registriert: 04. Oktober 2012
Beiträge: 193

Albumcover einer Galerie als Thumb-Vorschaubild in ListIt Summary

Servus,

ich hab in LitIt2 ein Extrafeld "Galerie-Dropdown" Items integriert. Ich mach mir stets eigene Galerie-Templates und hacke meine Galerie als Standardvorlage an. Bisher konnte ich das Dropdown zum Auswählen des Templates für meine Kunden ausblenden und so immer mein eigenes Template erzwingen.

Im Summary_Template wird das Albumcover mittels des beigefügten Plugins ausgelesen und angezeigt. Die Galerie wird nur im Detail-Template angezeigt. Das funktioniert auch ordnungsgemäß.

Das Plugin "function.Getgalleryinfo.php"

<?php
function smarty_cms_function_Getgalleryinfo($params, &$smarty) 
{
	if(!$gallery =& cms_utils::get_module('Gallery'))
		return;
	
	$where       = "WHERE g.fileid=?";
	$p           = array(1);
	$params_link = array();
	
	if(isset($params['gallery']))
	{
		if(is_numeric($params['gallery']))
		{
			$where       = "WHERE g.fileid=?";
			$p           = array((int)$params['gallery']);  
		}
		else
		{
			$path = isset($params['gallery']) ? trim($params['gallery'], '/') : '';
			if (strpos($path, '/') === FALSE)
			{
				$filename = empty($path) ? '' : $path . '/';
				$filepath = '';
			}
			else
			{
				$filename = substr($path, strrpos($path, '/') + 1) . '/';
				$filepath = substr($path, 0, strrpos($path, '/') + 1);
			}
			$where       = "WHERE g.filename=? AND g.filepath=?";
			$p           = array($filename, $filepath);
		}
	}
	
	$db = cmsms()->GetDB();
	
	$query = "SELECT g.*, gp.hideparentlink, gp.editors, gt.*, 
				g2.filename AS thumbname, g2.filepath AS thumbpath
			FROM " . cms_db_prefix() . "module_gallery g
			LEFT JOIN " . cms_db_prefix() . "module_gallery g2
			ON g.defaultfile=g2.fileid
			LEFT JOIN " . cms_db_prefix() . "module_gallery_props gp
			ON g.fileid=gp.fileid
			LEFT JOIN " . cms_db_prefix() . "module_gallery_templateprops gt
			ON gp.templateid=gt.templateid " 
			. $where;
			
	if(!$result = $db->Execute($query, $p))
		return;
	
	if(!$galleryinfo = $result->FetchRow())
		return;
	
	if(!$galleryinfo['thumbname'])
	{
		$galleryinfo['thumb'] = $galleryinfo['thumb_full'] = $gallery->GetPreference('fe_folderpath');
	}
	elseif ($galleryinfo['thumbwidth'] > 0)
	{
		$galleryinfo['thumb']      = DEFAULT_GALLERYTHUMBS_PATH . $galleryinfo['defaultfile'] . '-' . $galleryinfo['templateid'] . substr($galleryinfo['thumbname'], strrpos($galleryinfo['thumbname'], '.'));
		$galleryinfo['thumb_full'] = DEFAULT_GALLERY_PATH . $galleryinfo['thumbpath'] . $galleryinfo['thumbname'];
	}
	else
	{
		$galleryinfo['thumb']      = DEFAULT_GALLERY_PATH . $galleryinfo['thumbpath'] . IM_PREFIX . $galleryinfo['thumbname'];
		$galleryinfo['thumb_full'] = DEFAULT_GALLERY_PATH . $galleryinfo['thumbpath'] . $galleryinfo['thumbname'];
	}
	
	$params_link        = array('dir' => $galleryinfo['filepath'] . $galleryinfo['filename']);
	$returnid           = isset($params['returnid']) ? $params['returnid'] : cms_utils::get_current_pageid();
	$galleryinfo['url'] = $gallery->CreateFrontendLink('cntnt01', $returnid, 'default', '', $params_link, '', true, true, '', false);
	
	if(isset($params['assign']))
		$smarty->assign($params['assign'], $galleryinfo);
	else
		return "<pre>" . print_r($galleryinfo , true) . "</pre>";
}
?>

Das verwendete Summary-Template:

{if $items|@count > 0}
{foreach from=$items item=item}
{Getgalleryinfo gallery=$item->fielddefs.galerie.value assign="galleryinfo"}
<div class="listitem">
<div class="titel">{$item->title}</div>
{if $item->fielddefs.kurzbeschreibung!= ''}<div class="text">{$item->kurzbeschreibung}</div>{/if}
{if $item->galerie != ''}<img src="/{$galleryinfo.thumb}"/>{else}<img src="/images/keinbild.png">{/if}
</div>
{/foreach}
{/if}

Mein Detail-Template:

<h1>{$item->title}</h1>
{if $item->fielddefs.subline!= ''}<h2>{$item->fielddefs.subline.value}</h2>{/if}
{if $item->fielddefs.details!= ''}<div class="text">{$item->details}</div>{/if}
{Gallery dir=$item->fielddefs.galerie.value}

Nun habe die Thumbs auf "Beschneiden" eingestellt weil ich in diesem Fall quadratische Thumbs benötige. Das Albumcover-Thumb kommt aber nur noch im original Seitenverhältnis raus. Quadratisch beschnittenen kommt es nur noch, wenn ich beim Erstellen einer neuen Galerie mein Template im Dropdown extra auswähle. Bisher reichte aber "Voreinstellungen verwenden" aus, es musste nichts extra gewählt werden.

Ich würde die Gallery-Template-Auswahl gerne wieder von meinen Kunden verstecken beziehungsweise die Wahl dazu unnötig machen. Im normalen Gebrauch kann man ja mit...

das Template erzwingen.

Wenn das im Plugin möglich wäre, wär das Problem schon gelöst. Ich glaube mir wird an dieser Stelle das Pretty-Photo-Template als Standard-Template untergejubelt?

So ein Mist, bisher hat das schon mehrfach wunderbar funktioniert, ich weis wirklich nicht was da jetzt falsch läuft.

Weis jemand Rat?

Beitrag geändert von parsec (11. Juni 2020 22:12)


"Es ist unmöglich, alles zu wissen" - Horaz

Offline

#2 11. Juni 2020 06:17

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

Re: Albumcover einer Galerie als Thumb-Vorschaubild in ListIt Summary

Das Beschneiden hast du in der Gallery eingestellt?

Nur zwei Gedanken:

  • Das Beschneiden könntest du auch per CSS lösen, in dem du das Bild z.B. mit Flexbox anzeigst und den overflow verscheckst.

  • Du kannst natürlich auch das Bild in einer Funktion beschneiden.


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

Offline

#3 11. Juni 2020 10:29

parsec
kennt CMS/ms
Registriert: 04. Oktober 2012
Beiträge: 193

Re: Albumcover einer Galerie als Thumb-Vorschaubild in ListIt Summary

Hallo,

ja Beschneiden wurde eingestellt. CSS mäßig hab ich mich schon versucht und bin gescheitert, bin mir auch nicht sicher ob das dann an der Stelle so sauber rüber kommt. Programmtechnisch wär mir schon lieber. Ich benutze isotope.js zum sortieren, was aber in Verbindung damit auch nie Probleme gemacht hat. Wie gesagt, bisher hat das alles wunderbar funktioniert. Ich hab viel überlegt was das ausgelöst haben könnte und wollte schon mal alles von vorne neue aufsetzen in der Hoffnung das es wieder passt. Ich vermutete eine Cache Überschreibung, nachdem ich zu Beginn mit den Thumb-Einstellungen im Backend rum gespielt habe. An irgendwas muss es ja gelegen haben.

Wie gesagt die Albumbilder kommen korrekt, wenn ich händisch mein Standard-Gallery-Template auswähle. Mir fiel an dieser Stelle im Frontend auf, das die Default-Album-Thumbs bei "Voreinstellungen verwenden" aus einem anderen Ordner geladen werden. Hab dir dazu mal nen Screenshot gemacht.

Screenshot

Zur Ergänzung noch mein Gallery Template, vielleicht hat sich ja da ein Fehler eingeschlichen. Vier Augen sehen doch mehr als zwei.

<div id="galleria">
	{foreach from=$images item=image}
	<div class="img">
		{if $image->isdir}
		<a href="{$image->file}" data-title="{$image->titlename}">
		<img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" data-description="{$image->titlename}" data-title="{$image->comment}" /></a>
		{else}
		<a class="group" href="{$image->file|escape:'url'|replace:'%2F':'/'}"  >
		<img src="{$image->thumb|escape:'url'|replace:'%2F':'/'}" data-description="{$image->titlename}" data-title="{$image->comment}"/></a>
		{/if}
	</div>
	{/foreach}
</div>

Danke und Gruß aus Bayern

Beitrag geändert von parsec (11. Juni 2020 10:30)


"Es ist unmöglich, alles zu wissen" - Horaz

Offline

#4 11. Juni 2020 10:39

parsec
kennt CMS/ms
Registriert: 04. Oktober 2012
Beiträge: 193

Re: Albumcover einer Galerie als Thumb-Vorschaubild in ListIt Summary

Nur nochmal mit Nachdruck, wenn ich auf "Details" gehe, kommt auch bei "Voreinstellungen verwenden" mein richtiges Standard-Template und auch die Thumbs werden Quadratisch richtig ausgegeben. Ergo die Einstellungen im Backend greifen schon. Es geht hier nur um das Coverbild/Albumbild das im "Summary" nicht richtig verlinkt/angezeigt wird!

Beitrag geändert von parsec (11. Juni 2020 10:43)


"Es ist unmöglich, alles zu wissen" - Horaz

Offline