Aufbau einer Provider Extension
└── ibkprovider
├── Configuration
| ├── ExtensionBuilder
| ├── TCA
| └── TypoScript
| ├ config.ts
| ├ constants.ts
| └ setup.ts
├── Documentation.tmpl
| ├── Administrator
| ├── [...]
| └── User
└── Resources
├── Private
| ├── Ke_search
| ├── News
| ├── Layouts
| ├── Partials
| └── Templates
└── Public
├── bootstrap
├── css
├── js
└── lib
Configuration
TypoScript
config.ts
config {
xmlprologue = none
uniqueLinkVars = 1
linkVars := addToList(L(1),type(3))
absRefPrefix = /
cache_period = 1
## Character sets
renderCharset = utf-8
metaCharset = utf-8
## Sys Variablen
sys_language_uid = 0
sys_language_overlay = 1
sys_language_mode = content_fallback
## Sprache
language = de
locale_all = de_DE.UTF-8
htmlTag_langKey = de
## META Angaben
pageTitleFirst = 1
noPageTitle = 1
sendCacheHeaders = 1
message_page_is_being_generated = Die angeforderte Seite wird Ihnen gleich angezeigt.
spamProtectEmailAddresses = 2
spamProtectEmailAddresses_atSubst = (at)
## RealURL Configuration
tx_realurl_enable = 1
simulateStaticDocuments = 0
}
constants.ts
##############################################################
### IBK Provider Extension - Template Paths ###
##############################################################
plugin.tx_ibkprovider {
view {
# cat=plugin.tx_ibkprovider/file; type=string; label=Path to template root (FE)
templateRootPaths {
10 = EXT:ibkprovider/Resources/Private/Templates/
}
# cat=plugin.tx_ibkprovider/file; type=string; label=Path to template partials (FE)
partialRootPaths {
10 = EXT:ibkprovider/Resources/Private/Partials/
}
# cat=plugin.tx_ibkprovider/file; type=string; label=Path to template layouts (FE)
layoutRootPaths {
10 = EXT:ibkprovider/Resources/Private/Layouts/
}
}
}
##############################################################
### KE Facetted Search - Template Paths Search Box ###
##############################################################
plugin.tx_kesearch_pi1 {
templateRootPath = EXT:ibkprovider/Resources/Private/Ke_search/Templates/
templateRootPaths {
10 = EXT:ibkprovider/Resources/Private/Ke_search/Templates/
}
}
In neueren Versionen von KE_SEARCH werden die Constants in der Extension selber so gesetzt, dass man sie nun mit dieser Eingabe überschreiben kann:
plugin.tx_kesearch.templateRootPath = EXT:ibkprovider/Resources/Private/Ke_search/Templates/
setup.ts
Bis zur Version 8.7 von TYPO3:
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ibkprovider/Configuration/TypoScript/config.ts">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:ibkprovider/Configuration/TypoScript/constants.ts">
page = PAGE
page {
[...]
}
Seit der Version 9.5 von TYPO3:
@import "EXT:ibkprovider/Configuration/TypoScript/config.ts"
page = PAGE
page {
[...]
}
Resources
Private
Page Template
Eingebunden über:
ext/ibkprovider/Resources/Private/Templates/
<f:section name="div_content">
<f:cObject typoscriptObjectPath="lib.reiseberichte" />
<f:format.raw>{page_content_h1}</f:format.raw>
<f:format.raw>{page_content_h2}</f:format.raw>
<f:if condition="{page_content_grid}">
<div class="page_content_grid">
<f:format.raw>{page_content_grid}</f:format.raw>
</div>
</f:if>
<f:format.raw>{page_content_text}</f:format.raw>
<f:if condition="{page_accordion}">
<div id="accordion">
<f:format.raw>{page_accordion}</f:format.raw>
</div>
</f:if>
<f:format.raw>{kasten_content_zeile}</f:format.raw>
<f:cObject typoscriptObjectPath="lib.sitemap" />
<div class="div_kasten">
<f:cObject typoscriptObjectPath="lib.werbebanner" />
</div>
</f:section>
KE Search
Einbindung eines eigenen Template für das Formular auf der Startseite der Suche.
<f:layout name="General" />
<!--
=====================
Templates/SearchForm.html
-->
<f:section name="content">
<form method="get"
id="form_kesearch_pi1"
name="form_kesearch_pi1"
action="{f:uri.page(pageUid: targetpage)}">
<fieldset class="kesearch_searchbox">
<f:if condition="{targetpage}">
<input type="hidden" name="id" value="{targetpage}" />
</f:if>
<f:if condition="{lparam}">
<input type="hidden" name="L" value="{lparam}" />
</f:if>
<f:if condition="{mpparam}">
<input type="hidden" name="MP" value="{mpparam}" />
</f:if>
<f:if condition="{typeparam}">
<input type="hidden" name="type" value="{typeparam}" />
</f:if>
<div class="kesearchbox">
<input type="text"
id="ke_search_sword"
name="tx_kesearch_pi1[sword]"
value="{searchword -> f:format.raw()}"
placeholder="{searchwordDefault}" />
<div class="clearer"> </div>
</div>
<input id="kesearchpagenumber" type="hidden" name="tx_kesearch_pi1[page]" value="{page}" />
<input id="resetFilters" type="hidden" name="tx_kesearch_pi1[resetFilters]" value="0" />
<input id="sortByField" type="hidden" name="tx_kesearch_pi1[sortByField]" value="{sortByField}" />
<input id="sortByDir" type="hidden" name="tx_kesearch_pi1[sortByDir]" value="{sortByDir}" />
<f:if condition="{filters}">
<div id="kesearch_filters">
<f:render partial="Filters"
arguments="{conf: conf, numberofresults: numberofresults, resultrows: resultrows, filters: filters}" />
</div>
</f:if>
<span class="submitbutt"><input type="submit" class="button button_search_list" value="Finden" /></span>
</fieldset>
</form>
</f:section>
Boxen
Eingebunden über:
ibkprovider/Resources/Private/Partials/
<f:if condition="{0:pageuid} != {0:'290'}">
<f:render partial="Box/Boxsuche" />
</f:if>
<f:if condition="{0:pageuid} != {0:'490'}">
<f:render partial="box/Boxwohnung" />
</f:if>
<f:if condition="{0:pageuid} != {0:'240'}">
<f:render partial="Box/Boxnews" />
</f:if>
<f:render partial="Box/Boxaktion" />
<f:render partial="Box/Boxwetter" />
<f:render partial="Box/Boxaktuell" />
Eingebunden über:
ibkprovider/Resources/Private/Partials/Box/
<div class="div_box"> <div class="div_box_titel"> Aktuelles </div> <div class="div_box_inhalt"> <f:cObject typoscriptObjectPath="lib.aktion" /> </div> </div>
<div class="div_box">
<div class="div_search">
<div class="tx-kesearch-pi1">
<form method="get" id="form_kesearch_pi1" name="form_kesearch_pi1" action="/index.php?id=290">
<input type="hidden" name="id" value="290" />
<div class="kesearchbox">
<input type="text"
id="ke_search_sword_box"
name="tx_kesearch_pi1[sword]"
value=""
placeholder="Geben Sie einen Suchbegriff ein" />
<input class="button button_search_box" type="submit" value="Suchen" />
</div>
</form>
</div>
</div>
</div>