Installation 

Requirements 

  • TYPO3 11.5 LTS, 12 LTS, 13 LTS or 14
  • PHP 8.1 or higher
  • ke_search extension (version 4.0 or higher)

Installation with Composer 

The recommended way to install the extension is via Composer:

composer require davidkohr/ke-search-honeypot
Copied!

Installation via Extension Manager 

  1. Go to the Extension Manager in the TYPO3 Backend
  2. Search for "ke_search_honeypot"
  3. Click on "Install"

Activation 

After installation:

  1. Clear all TYPO3 caches
  2. Add the honeypot partial to your ke_search form template
  3. Configure the RouteEnhancer (see below)

Quick Start 

1. Add Partial to Template 

Edit your ke_search form template and add:

<f:render partial="honeypot" />
Copied!

Example complete search form:

<f:form name="searchForm" method="get" 
        pageUid="{searchPage}" 
        id="kesearch-form">
    
    <f:form.textfield 
        name="tx_kesearch_pi1[sword]" 
        value="{searchParams.sword}" 
        placeholder="Suchbegriff eingeben..." />
    
    <f:render partial="honeypot" />
    
    <f:form.submit value="Suchen" />
</f:form>
Copied!

2. Configure RouteEnhancer 

Add to config/sites/<your-site>/config.yaml:

routeEnhancers:
  KeSearch:
    type: Plugin
    namespace: tx_kesearch_pi1
    routePath: '/{sortByField}/{sortByDir}/{resetFilters}/{page}/{sword}/{__hp}'
    _arguments:
      sortByField: sortByField
      sortByDir: sortByDir
      resetFilters: resetFilters
      page: page
      sword: sword
    defaults:
      __hp: ''
      sortByField: ''
      sortByDir: ''
      resetFilters: ''
      page: '0'
      sword: ''
Copied!

3. Clear Caches 

# Clear all caches
vendor/bin/typo3 cache:flush

# Or in Backend: Admin Tools > Maintenance > Flush TYPO3 and PHP Cache
Copied!

4. Test 

  1. Search for a term on your search page
  2. Check that the URL contains the empty honeypot parameter: /search/.../searchterm//
  3. Navigate through result pages - URLs should maintain the // at the end

Example:

<form action="..." method="post">
    <input type="text" name="tx_kesearch_pi1[sword]" />
    <input type="hidden" name="tx_kesearch_pi1[page]" value="{page}" />
    
    <f:render partial="honeypot" />
    
    <button type="submit">Search</button>
</form>
Copied!

That's it! The honeypot field is now active.

Verification 

To verify the installation is working:

  1. View the source code of a page with your search form
  2. Look for an input field named tx_kesearch_pi1[__hp]
  3. This field should be positioned off-screen (margin-left: -99999px)

The middleware will automatically reject any search request where this field contains a value.