dla / dla_opac_ng
Find configuration for DLA Catalog
Package info
github.com/dla-marbach/dla-opac-ng
Language:HTML
Type:typo3-cms-extension
pkg:composer/dla/dla_opac_ng
Requires
- php: ^8.1
- dla/find: ^6
- fluidtypo3/vhs: ^6.0.1 || ^7
- typo3/cms-core: ^12
- typo3/cms-tstemplate: ^12
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
- typo3-ter/dla_opac_ng: 5.0.7
- dev-main
- 5.0.7
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- dev-copilot/implement-videojs-player
- dev-copilot/new-slideshow-for-images
- dev-copilot/copilotrefactor-fluid-partial-rendering-tests
- dev-copilot/refactor-fluid-partial-rendering-tests
- dev-copilot/review-session-history
- dev-copilot/evaluate-migration-typo3-v14
This package is auto-updated.
Last update: 2026-09-20 06:35:56 UTC
README
TYPO3-Extension für den Katalog des Deutschen Literaturarchivs Marbach https://www.dla-marbach.de/katalog
Installation
Einmalig nach Erstellen eines Codespaces aufrufen:
task install
Verbindung zum Solr
Lokal muss GitHub CLI gh installiert sein.
DLA Testsystem
Auf dem lokalen PC mit aktiver VPN-Verbindung:
gh codespace ssh -- -N -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -R 127.0.0.1:18983:serene.dla-marbach.de:8983
Entwicklungssystem
-
Codespace mit Repo https://github.com/dla-marbach/dla-opac-transform starten und im Codespace
task solrausführen -
Auf dem lokalen PC:
SOLR="127.0.0.1"
gh codespace ssh -- -N -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -R 127.0.0.1:18983:$SOLR:8983
GUIs
Katalog: http://127.0.0.1/katalog
- Trefferliste: http://127.0.0.1/find
- Bestandsübersicht: http://127.0.0.1/bestandsuebersicht
- Thematischer Sucheinstieg: http://127.0.0.1/systematik
TYPO3 Backend: http://127.0.0.1/typo3
- admin
- Dla1337!
Tests
Alle Playwright-Tests für den Katalog ausführen:
task test -- "katalog/"
Einzelnen Test ausführen:
task test -- -g "robots"
Test zum Vergleich auf Produktivsystem ausführen:
BASE_URL=https://www.dla-marbach.de task test -- -g "robots"
PHPUnit-Tests mit Solr-Mockdaten
Die PHP-Unit-Tests (Tests/ in dieser Extension und in dla-find/Tests) laufen gegen
einen lokalen Solr-Mock-Server und benötigen dafür keinen Solr-Tunnel:
task test:php
Der Mock-Server (Tests/Fixtures/Solr/MockSolrServer.php) beantwortet Anfragen anhand aufgezeichneter, echter Solr-Antworten (Tests/Fixtures/Solr/cassettes), die dauerhaft im Repository liegen. Dadurch bleiben die Tests auch dann nutzbar, wenn kein Solr-Zugriff mehr besteht.
Neue Fixtures aufnehmen (nur möglich, solange der Solr-Tunnel aktiv ist, siehe oben):
php Tests/Fixtures/Solr/recorder.php
Dazu vorher das gewünschte Szenario (Pfad + Query-Parameter) in
Tests/Fixtures/Solr/recorder.php ergänzen. Bei unbekannten Anfragen
antwortet der Mock-Server mit HTTP 404 und protokolliert die fehlende Anfrage in
Tests/Fixtures/Solr/missing-requests.log.
Fluid-Partial-Rendering-Tests
Zusätzlich zu den Service-/Ajax-Tests gibt es Tests/Unit/Partials, die einzelne
Fluid-Partials dieser Extension (aus Resources/Private/Partials) direkt
rendern und den erzeugten HTML-Ausschnitt prüfen. Laufen ebenfalls über task test:php, ohne DB/Solr-Tunnel.
Basis ist Tests/Support/FluidPartialTestCase.php: baut eine
minimale Fluid-RenderingContext (ohne vollen TYPO3-Functional-Bootstrap) und rendert
<f:render partial="..." arguments="{_all}"/> mit den im Test übergebenen Variablen. Zwei
Fluid-Kern-ViewHelper sind darin durch schlanke Test-Ersatzimplementierungen ersetzt (siehe
Tests/Support/FluidViewHelperOverrides), weil die echten in
diesem minimalen Bootstrap ohne Weiteres nicht funktionieren:
f:translate– übersetzt immer in die Default-Sprache (keine Sprachauswahl über Request/Backend-User nötig)f:link.action– rendert einen Platzhalter-Link (href="#test-link"), da echtes TYPO3-Routing einen vollständigen Frontend-Request (Site-Konfiguration, TSFE) voraussetzt
Für Partials, die reale Solr-Dokumente/Trefferlisten benötigen (z.B. document.fields.*), stellt
Tests/Support/SolrFixture.php echte Solarium\QueryType\Select\Result\Document-
bzw. \Result-Objekte bereit – erzeugt über einen echten Solarium-Client gegen den Solr-Mock-Server, genauso
wie dla-find/Classes/Service/SolrServiceProvider.php es in Produktion tut. Die zugehörigen Cassetten
(detail-*.json, resultlist-*.json) liegen ebenfalls in
Tests/Fixtures/Solr/cassettes und werden über dieselbe
recorder.php aufgenommen (siehe die entsprechenden Szenarien am Ende der Datei).
Weitere Hinweise
Der Code der Extension ist über Symlinks eingebunden. Nach Änderungen am Code wie beispielsweise in Configuration/TypoScript/setup.ts ist also lediglich ein Löschen des TYPO3-Caches erforderlich:
task cache
Nach einem Neustart des Codespaces ausführen:
task reinstall
Nach Änderungen an der dla-find Extension muss ein neuer Release/Tag erstellt werden: https://github.com/dla-marbach/typo3-find/releases
Datenbankdump für TYPO3-Grundkonfiguration
Bei der Installation (task install) wird ein Datenbank-Dump .devfiles/init.sql eingespielt. Bei einer neuen TYPO3-Version muss dieser Dump ggf. manuell neu erstellt werden.
TYPO3-Grundkonfiguration ohne Datenbankdump
-
Menü Maintenance / Analyze Database Structure: Alle Vorschläge übernehmen (ggf. mehrmals)
-
Menü Page: Neue Seite auf DLA OPAC ziehen und
Startnennen
- Start anklicken und "Create new content" auswählen
- Menu > Sitemap auswählen
- Speichern
- Kontextmenü im Seitenbaum für diese Seite aufrufen und Enable auswählen
- Menü Page: Neue Seite auf Start ziehen und
Katalognennen
- Start anklicken und "Create new content" auswählen
- Plugin TYPO3 Find auswählen
- Reiter Plugin im Pulldown "DlaStart" auswählen
- Speichern
- Kontextmenü im Seitenbaum für diese Seite aufrufen und Enable auswählen
- Menü Page: Neue Unterseite von Katalog und
Findnennen
- find anklicken und "Create new content" auswählen
- Plugin TYPO3 Find auswählen
- Speichern
- Edit page properties > URL Segment /katalog entfernen
- Kontextmenü im Seitenbaum für diese Seite aufrufen und Enable auswählen
- Menü Page: Neue Unterseite von Katalog und
Bestandsübersichtnennen
- Bestandsuebersicht anklicken und "Create new content" auswählen
- Plugin TYPO3 Find auswählen
- Reiter Plugin im Pulldown "DlaCollection" auswählen
- Speichern
- Edit page properties > URL Segment /katalog entfernen
- Kontextmenü im Seitenbaum für diese Seite aufrufen und Enable auswählen
- Menü Page: Neue Unterseite von Katalog und
Systematiknennen
- Systematik anklicken und "Create new content" auswählen
- Plugin TYPO3 Find auswählen
- Reiter Plugin im Pulldown "DlaClassification" auswählen
- Speichern
- Edit page properties > URL Segment /katalog entfernen
- Kontextmenü im Seitenbaum für diese Seite aufrufen und Enable auswählen
- Menü Page: Neuen Ordner unterhalb von Katalog und
Datennennen
- Kontextmenü im Seitenbaum für diese Seite aufrufen und Enable auswählen
- Menü Typoscript für Seite
Start
-
Oben im Pulldown "Edit Typoscript Record" aufrufen
-
Create a root TypoScript record
-
Edit the whole Typoscript record
-
Reiter Advanced Options / Include TypoScript sets auswählen: Alle Fluid und Find Items
-
Reiter General im Bereich Setup einfügen:
page.5 > // Flux-Renderer überschreiben, sonst Ausgabe doppelt page = PAGE page { typeNum = 0 includeCSS.site = EXT:dla_opac_ng/Resources/Public/CSS/site.min.css 10 = FLUIDTEMPLATE 10 { file = EXT:dla_opac_ng/Resources/Private/Templates/Page/Start.html section = Main layoutRootPaths.10 = EXT:dla_opac_ng/Resources/Private/Layouts/ partialRootPaths.10 = EXT:dla_opac_ng/Resources/Private/Partials/ } }
- Menü Typoscript für Seite
Katalog
-
Create an additional TypoScript record
-
Edit the whole Typoscript record
-
Reiter Advanced Options / Include TypoScript sets auswählen: Alle Fluid und Find Items
-
Reiter General im Bereich Setup einfügen:
plugin.tx_find.settings.mainPageUid = 2 plugin.tx_find.settings.indexPageUid = 3 plugin.tx_find.settings.collectionUid = 4 plugin.tx_find.settings.helpUid = 1 plugin.tx_find.settings.orderlink = https://www.dla-marbach.de/cgi-bin/aDISCGI/kallias_prod/lib/ng-ausleihe.html?test=test # Browser-Zurück ermöglichen config.additionalHeaders { 20.header = Cache-control: private, must-revalidate }
- Menü Typoscript für Seite
find
-
Create an additional TypoScript record
-
Setup auswählen und einfügen:
# Trefferliste noindex,nofollow; Detailseite nur nofollow page.meta.robots = noindex, nofollow page.meta.robots.replace = 1 [traverse(request.getQueryParams(), 'tx_find_find/action') == 'detail'] page.meta.robots = nofollow page.meta.robots.replace = 1 [END] # Links rel="canonical" und rel="alternate" deaktivieren config.disableCanonical = 1 config.disableHrefLang = 1
Datenbankdump erstellen
-
TYPO3 Backoffice > Maintenance > Clear Persistent Database Tables (dabei "be_sessions" zuletzt)
-
init.sql ersetzen:
ddev export-db t3example --gzip=false > .devfiles/init.sql