Zum Inhalt springen

[Frage] [TYPO3 CMS 7+] Eigenes Extension Problem mit Fluid Widget Paginate und CoolUri

Erstellt am 25. Juli 2016 · 2 Antworten · letzte Antwort am 26. Juli 2016

Tags: Fluid, URLs & Routing, Frage

bttnr_ ·

Hey Community,

ich habe für ein Projekt eine Extension geschrieben, die es mir ermöglicht verschiedene "Kollektionen" sowie verschiedene "Teppiche".

Den "Kollektionen" werden dann die angelegten "Teppiche" zugeordnet.
Soweit so gut. Das funktioniert soweit auch alles wunderbar.

Jedoch habe ich nun noch ein Problem, wenn ich in meiner "liste" der Teppiche die Fluid Paginierung in Verbindung mit CoolUri einbauen möchte.

In meinem Template für die Darstellung der einzelnen Kollektionen mit Listing der Teppiche habe ich folgenden Code für die Darstellung der Paginierten Teppiche eingebunden:

<f:widget.paginate objects="{collection.carpet}" as="carpetPagination" configuration="{itemsPerPage: 6, insertAbove: 0, insertBelow: 1, maximumNumberOfLinks: 4}">
    <div class="row">
        <f:for each="{carpetPagination}" as="paginatedCarpet" iteration="iteration">
            <f:if condition="{paginatedCarpet}">
                <f:then>
                    <div class="col-xs-offset-2 col-xs-8 col-md-offset-0 col-md-4 margin-bottom">
                        <div class="carpetimage">
                            <img src="{paginatedCarpet.image.originalResource.publicUrl}">
                        </div>
                        <div class="carpetinfos">
                            <h4>{paginatedCarpet.title}<span>&nbsp;</span></h4>
                            <p>{paginatedCarpet.origin}, {paginatedCarpet.material}</p>
                            <f:link.action pluginName="carpetShow" controller="Carpet" action="show"
                                           pageUid="{settings.carpetShowPid}"
                                           arguments="{carpet:'{paginatedCarpet}', collection:collection}"
                                           class="btn btn-sm btn-primary detailLinkList">mehr erfahren
                            </f:link.action>
                        </div>
                    </div>

                    <f:if condition="{iteration.cycle} % 3">
                        <f:else>
                            </div>
                            <div class="row">
                        </f:else>
                    </f:if>
                </f:then>
            </f:if>
        </f:for>
    </div>
</f:widget.paginate>

Das Listing innerhalb der Kollektion wird auch korrekt dargestellt und funktioniert soweit 1a wenn ich die Urls noch im Standardformart vom ExtensionBuilder lasse. Sprich diese nicht mittels der CoolUri-Config umschreibe. (Ausgenommen sind natürlich die "predefinedparts" dies ich schon entfernt habe. (Action & Controller & cHash)

Beispiel URL:
domain.de/teppiche/collection/?tx_teufelsrenzcarpetworld_carpetlist[collection]=2&tx_teufelsrenzcarpetworld_carpetlist[@widget_0][currentPage]=5

Schreibe ich nun die Urls um, löscht es mit beim klick auf die nächste Seite meine ID der Kollektion, und die Paginierung funktioniert somit nichtmehr.
Beispiel URL:

domain.de/teppiche/collection/moderne-collection-2/

öffnet mir die gewünschte Kollektion.

Sobald ich auf Seite 2 Klicke, bekomme ich folgende URL:

domain.de/teppiche/collection/?tx_teufelsrenzcarpetworld_carpetlist%5B@widget_0%5D%5BcurrentPage%5D=2

Aus irgendeinem Grund, den ich mit derzeit nicht erklären kann, entfernt er mir meine umgeschrieben Kollektion komplett aus der URL. Trage ich den Part "moderne-collection-2/" händisch in die URL an die benötigte Stelle ein, komme ich auch auf der gewollten Seite heraus.

Die Urls habe ich folgendermaßen mittels der CoolUri-Config umgeschrieben (uriparts):

<part>
      <parameter>tx_teufelsrenzcarpetworld_carpetlist[collection]</parameter>
      <lookindb>
        <to>
          SELECT
          CONCAT (title, '-', uid)
          FROM
          tx_teufelsrenzcarpetworld_domain_model_collection
          WHERE
          uid=$1
        </to>
        <t3conv>1</t3conv>
      </lookindb>
    </part>

Die Action, sowie den Controller und den cHash habe ich wie oben schreiben schon in die "predefinedparts" geschrieben.

Leider komme ich hier nicht drauf, warum die Paginierung mit den "unschönen" urls die vom ExtensionBuilder gegeben sind funktioniert und sobald ich diese umschreibe der Komplette "Kollektions-Parameter" entfernt wird.

Hättet Ihr gegebenenfalls eine Idee, woran das liegen könnte?
Liegt es eher an meiner eigenen Extension oder doch eher an CoolUri?

Gruß

bttnr_ ·

Sorry für das mehrfache Onlinestellen der Meldung aber mein Internet ist genau in dem Moment abgeschmiert :/ Bitte nur einen Post Beachten

jenses ·
bttnr_ schrieb

Liegt es eher an meiner eigenen Extension oder doch eher an CoolUri?

Na was sagt dir denn die Logik, wenn es ohne CoolUri funktioniert?
An deiner Ext liegt es jedenfalls nicht ;-)
Zu CoolUri kann ich nichts sagen, ich benutze seit ewig den Klassiker RealUrl...