Zum Inhalt springen

YAG Theme Library Pt_Extlist: Wie kann ich nach Kriterien filtern UND mir dabei ALBEN anzeigen lassen ?

Erstellt am 9. Juni 2015 · 4 Antworten · letzte Antwort am 10. Juni 2015

Tags: YAG Gallery, TYPO3 6.x, Frage

berber17 ·

Hallo zusammen,

ich bin Newbie in Sachen Typo3 bzw. YAG. Habe YAG zum Laufen bekommen und auch ein Filter gesetzt. Dieser filtert nach Kategorien, die ich angelegt und den einzelnen Alben zugewiesen habe. Ziel ist es also, je nach ausgewählter Kategorie eine entsprechende Liste von Alben angezeigt zu bekommen.

Leider bekomme ich statt den Alben (Thumbs) nur das erste (?) Bild des jeweiligen Albums angezeigt. Beim Klick auf das Bild wird dieses in der Lightbox angezeigt und nicht, wie gewünscht, die Liste mit den Bildern in diesem Album.

Hoffe das war einigermaßen verständlich ausgedrückt°°

Meine umfangreichen Recherchen hierzu, lassen mich vermuten, dass ich einen eigenen Renderer auf Albenebene schreiben muss, wüsste aber nicht wie ich das anstellen soll, wenn das tatsächlich die Lösung ist.

Jemand eine Idee ?

Vorab bedankt !

Hier meine ItemList.ExtList.ts:

####################################################
# Extlist configuration of the album 
#
# @author Daniel Lienert <daniel@lienert.cc> 
# @author Michael Knoll <mimi@kaktusteam.de>
# @package YAG
# @subpackage Typoscript
####################################################

plugin.tx_yag.settings.themes.library.extlist.itemList >
plugin.tx_yag.settings.themes.library.extlist.itemList {

	backendConfig < plugin.tx_ptextlist.prototype.backend.typo3
    backendConfig {

	    repositoryClassName = Tx_Yag_Domain_Repository_AlbumRepository

		tables (
            sys_category  cat,
            sys_category_record_mm  cat_alb
			tx_yag_domain_model_item	item,
			tx_yag_domain_model_album	album,
			tx_yag_domain_model_gallery	gallery
		)

        baseFromClause (
            tx_yag_domain_model_album album
            INNER JOIN tx_yag_domain_model_item item  ON item.album = album.uid
            INNER JOIN sys_category_record_mm cat_alb ON cat_alb.uid_foreign = album.uid
            INNER JOIN sys_category cat ON cat.uid = cat_alb.uid_local
            INNER JOIN tx_yag_domain_model_gallery gallery ON gallery.uid = album.gallery
        )

        baseWhereClause (
        	album.uid > 0
        )

        baseGroupByClause (
        	album.uid
        )
    }

    fields {

    	pid {
    		table = album
    		field = pid
    	}

        itemUid {
            table = item
            field = uid
        }

        itemTitle {
            table = item
            field = title
        }

		albumUid {
			table = album
            field = uid
		}

		albumName {
			table = album
			field = name
		}
        
        albumDescription {
            table = album
            field = description
        }

		galleryUid {
			table = gallery
			field = uid
		}

		galleryName {
			table = gallery
			field = name
		}

        itemDescription {
            table = item
            field = description
        }

       catUid {
             table = cat
             field = uid
          }

        catTitle {
             table = cat
             field = title
          }

    }

    columns {
        10 {
            label = Album
            columnIdentifier = album
            fieldIdentifier = albumUid
        }
	    20 {
            label = Name
            columnIdentifier = albumName
            fieldIdentifier = albumName
        }
    }

	pager.itemsPerPage = 12

    rendererChain {
        rendererConfigs {
            100 {
                rendererClassName = Tx_Yag_Extlist_Renderer_ImageObjectRenderer
            }
        }
    }


    filters {

		internalFilters {
			filterConfigs {
				10 {
					partialPath = EXT:pt_extlist/Resources/Private/Partials/Filter/Special/ProxyFilter.html
					filterClassName = Tx_Yag_Extlist_Filter_PidFilter
					filterIdentifier = pidFilter
					fieldIdentifier = pid
				}

				20 {
                    partialPath = EXT:pt_extlist/Resources/Private/Partials/Filter/Special/ProxyFilter.html
                    filterClassName = Tx_Yag_Extlist_Filter_GalleryFilter
                    filterIdentifier = galleryFilter
                    fieldIdentifier = galleryUid
                }

				30 {
					partialPath = EXT:pt_extlist/Resources/Private/Partials/Filter/Special/ProxyFilter.html
					filterClassName = Tx_Yag_Extlist_Filter_AlbumFilter
					filterIdentifier = albumFilter
					fieldIdentifier = albumUid
				}
			}
		}

        metaFilterBox {
            filterConfigs {

                10 < plugin.tx_ptextlist.prototype.filter.checkbox
				10 {
					filterIdentifier = category
					fieldIdentifier = catUid, catTitle
					label =
					filterField = catUid
					displayFields = catTitle
					#inactiveOption = [ Alle anzeigen ]
                    showRowCount = 1
                    submitOnChange = 1
                    invert = 0
                    invertable = 0
					#multiple = 1
					partialPath = EXT:pt_extlist/Resources/Private/Partials/Filter/Options/CheckBoxFilter.html
				}
            }
        }

    }
brucelie ·

Hallo,

so wie ich das sehe, hast du das Query ja schon so angepasst, dass es nur ein Bild pro Album selektiert und rendert. Jetzt könnte vielleicht die Typoscript Config:

plugin.tx_yag.settings.themes.library.itemList.linkMode = show
plugin.tx_yag.settings.themes.library.itemList.linkTargetPluginMode = album

schon reichen.

berber17 ·

Hi Bruce,

und danke für deine schnelle Rückantwort. Ich hatte den Gedanken auch schon. Leider hilft in meinem Fall scheinbar auch nicht.
Hab jetzt die Extlist.ts nochmal angepasst und alles rausgeschmissen, was m.E. unnötig ist.
Meine Config sieht aktuell wie folgt aus:

# Setup of library yag theme
plugin.tx_yag.settings.themes {
  library {
    
    #include magnific popup js
    includeJS.magnificLightBox = fileadmin/templates/ext/yag/Resources/Public/Js/MagnificPopup/dist/jquery.magnific-popup.min.js
    
    #use own controller action templates -> controller.<ControllerName>.<actionName>.template = <PathToYourTemplate>
    controller.ItemList.list.template = fileadmin/templates/ext/yag_theme_library/Resources/Private/Templates/ItemList/List.html
    controller.ItemList.unCachedList.template = fileadmin/templates/ext/yag_theme_library/Resources/Private/Templates/ItemList/List.html
    
    #item
    item.lightBoxMetaPartial = fileadmin/templates/ext/yag/Resources/Private/Templates/Themes/LightBox/Partials/LightBoxMeta.html
    item.showPager = 1
    item.lightbox.showPermaLink = 0
     
    #itemlist
    itemList.imageThumbPartial = fileadmin/templates/ext/yag_theme_library/Resources/Private/Partials/Image/LightboxImageThumb.html
    itemList.itemsPerPage = 12
    itemList.linkMode = show
    itemList.linkTargetPluginMode = album
    
    #albumlist
    albumList.showPager = 1
    albumList.itemsPerPage = 12
    
    #general
    showBreadcrumbs = 1
    resolutionConfigs.thumb.width = 120c
    resolutionConfigs.thumb.height = 120c
    resolutionConfigs.albumThumb.width = 120c
    resolutionConfigs.albumThumb.height = 120c
  } 
}

####################################################
# Extlist configuration of the album 
#
# @author Daniel Lienert <daniel@lienert.cc> 
# @author Michael Knoll <mimi@kaktusteam.de>
# @package YAG
# @subpackage Typoscript
####################################################
 
plugin.tx_ptextlist.settings.listConfig.tmCategoryList {

      backendConfig < plugin.tx_ptextlist.prototype.backend.typo3
      backendConfig {

            datasource {
                # no configuration required here
            }

            tables (
                sys_category,
                sys_category_record_mm,
                tx_yag_domain_model_album
            )

            baseFromClause (
                sys_category
                INNER JOIN sys_category_record_mm ON (sys_category.uid = sys_category_record_mm.uid_local)
                INNER JOIN tx_yag_domain_model_album ON (tx_yag_domain_model_album.uid = sys_category_record_mm.uid_foreign)
            )

            baseWhereClause (
            )

            baseGroupByClause(
            )
        }


        fields {
          category {
             table = sys_category
             field = title
          }
        }

        columns {

            10 {
                label = Category
                columnIdentifier = category
                fieldIdentifier = category
            }
            
        }


        filters {
            tmFilterbox {
                filterConfigs {

                    10 < plugin.tx_ptextlist.prototype.filter.checkbox
                    10 {
                        filterIdentifier = tmFilterbox
                        label =
                        fieldIdentifier = category
                        filterField = category
                        displayFields = category
                        showRowCount = 1
                        submitOnChange = 1
                        invert = 0
                        invertable = 0
                    }

                }
            }
        }
    
}

Leider hänge ich hier fest und bin ideenlos o.O
further help is highly appreciated

brucelie ·

Hey Berber,

Eventuell werden deine TS Dateien in falsche Reihenfolge inkludiert und die Konfiguration greift nicht. Du kannst die Einstellung auch noch mal im Backend in der Konfiguration der Plugininstanz vornehmen - das sollte immer gewinnen.

Pass einfach mal Probeweise die Datei

fileadmin/templates/ext/yag_theme_library/Resources/Private/Partials/Image/LightboxImageThumb.html

an, so dass nur noch die gewünschte Bedingung vorhanden ist.

Gruß
Daniel

berber17 ·

Hey Daniel,

danke für die erneute Rückmeldung und Geduld !
Die o.a. config war/ist bereits im Backend hinterlegt.
Ich habe mir die LightboxImageThumb.html mal genauer zur Brust genommen. Die Datei sieht aktuell so aus:

<div class="tx-yag-thumb-outerframe yag-item-thumb-outerframe" id="yag_{image.uid}">
	<div class="tx-yag-thumb-innerframe yag-item-thumb-innerframe">
		<f:if condition="{0:config.itemListConfig.linkMode} == {0:'show'}">
			<f:then>
				<a href="{yag:resource.image(item: image, resolutionName: 'medium')}"
					 class="yag-lightbox-link"
					 rel="album_{image.album.uid}"
					 title="{f:if(condition:config.settings.item.showTitle, then:'{image.title}', else:'')}">
					<f:if condition="{0:''} == {0:hideThumb}">
						<yag:image item="{image}" resolutionName="thumb" alt="{image.album.name}"/>
					</f:if>
				</a>

                <f:if condition="{config.settings.item.showTitle}"><div class="titleBox">{image.title}</div></f:if>

				<div class="yag-lightbox-meta">
					<f:render partial="{config.settings.item.lightBoxMetaPartial}" arguments="{config: config, image: image}"/>
				</div>
			</f:then>
			<f:else>
				<f:if condition="{0:config.itemListConfig.linkTargetPluginMode} == {0:'gallery'}">
					<yag:link.gallery gallery="{image.album.gallery}" pageUid="{config.itemListConfig.linkTargetPageUid}">
						<yag:image item="{image}" resolutionName="thumb"/>
					</yag:link.gallery>
				</f:if>

				<f:if condition="{0:config.itemListConfig.linkTargetPluginMode} == {0:'album'}">
					<yag:link.album album="{image.album}" pageUid="{config.itemListConfig.linkTargetPageUid}">
						<yag:image item="{image}" resolutionName="thumb"/>
					</yag:link.album>
				</f:if>

				<f:if condition="{0:config.itemListConfig.linkTargetPluginMode} == {0:'image'}">
					<yag:Link.image item="{image}">
						<yag:image item="{image}" resolutionName="thumb"/>
					</yag:Link.image>
				</f:if>
			</f:else>
		</f:if>
		<f:if condition="{config.settings.itemList.showTitle}">
				<div class="tx-yag-thumb-caption">{image.title}</div>
		</f:if>
	</div>
</div>

Solange der linkMode auf "show" ist, wird der "else" Teil mit den Bedingungen für den linkTargetPluginMode übersprungen und ein Klick auf das Image löst sofort die Lightbox aus, wie eingangs beschrieben.
Ist er nicht auf "show", dann greift der else Teil, was dazu führt, dass ein Klick auf das Image mich zur Startseite bringt o.O

Gruß
Berber