Hi,
OXID hat hier schon direkt das Handling vorgesehen und der shop übernimmt dadd, deswegen greift das über htaccess nicht.
Im File modules/functions.php braucht man einfach nur den den error handler einzusetzen.
Die software prüft auf
( !function_exists( ‘error_404_handler’ )
und die verarbeitenden Files nutzen auch brav “error_404_handler()” wenn was nicht verfügbar ist.
Hier meine Lösung
Fehler abfangen und zu einem eigenen tpl-fiel weiterleiten. Bei Mir ist das eine angepasste Kopie des search.tpl
ACHTUNG: ich habe noch ein “slash-Problem” das funktioniert noch nicht richtig den “nichgefunden” String als Suche auszuführen, bin für Hinweise dankbar!
In modules/functions.php einfügen
/**
* catch not found arguments and pass them to custom search template as custom 404 page
*/
function error_404_handler( $args )
{
#$args = stripslashes( htmlentities( $args ) );
#$args = str_replace("/", "", $args);
header("Location: http://localhost/ce401/index.php?cl=search&searchparam=$args&tpl=404-search.tpl");
exit();
}
Kopie von search.tpl > 404-search.tpl
[smarty]
[{assign var=“search_title” value=“SEARCH_TITLE”|oxmultilangassign}]
[{assign var=“template_title” value="$search_title - $searchparamforhtml"}]
[{include file="_header.tpl" title=$template_title location=“SEARCH_LOCATION”|oxmultilangassign }]
[{assign var=“pageNavigation” value=$oView->getPageNavigation() }]
404 - Page not found
Your requsted page was not found
Some more text for customer here, you may implement google ajax search here.
Post some categorie links here, implement cms page content here...
[{if $pageNavigation->iArtCnt }]
Your requsted page has not been found, here are some serch results which my be useful for you.
[{include file="inc/list_locator.tpl" PageLoc="Top"}]
[{else}]
[{*
DONT SHOW 404 SEARCH WITH NO RESULTS TO CUSTOMER
[{ oxmultilang ident=“SEARCH_NOITEMSFOUND” }]
*}]
[{/if}]
[{if $oView->getArticleList() }]
[{assign var=“search_head” value=“SEARCH_HITSFOR”|oxmultilangassign}]
[{assign var=“search_head” value=$pageNavigation->iArtCnt|cat:" “|cat:$search_head|cat:” “”|cat:$oView->getSearchParamForHtml()|cat:"""}]
[{if $rsslinks.searchArticles}]
[{assign var="search_head" value="`$search_head` \"`$rsslinks.searchArticles.link`\""}]
[{oxscript add="oxid.blank('rss.searchArticles');"}]
[{/if}]
[{foreach from=$oView->getArticleList() name=search item=product}]
[{if $smarty.foreach.search.first && !$smarty.foreach.search.last}]
[{assign var="search_class" value="firstinlist"}]
[{elseif $smarty.foreach.search.last}]
[{assign var="search_class" value="lastinlist"}]
[{else}]
[{assign var="search_class" value="inlist"}]
[{/if}]
[{include file="inc/product.tpl" product=$product size="thin" head=$search_head class=$search_class testid="Search_"|cat:$product->oxarticles__oxid->value test_Cntr=$smarty.foreach.search.iteration}]
[{assign var="search_head" value=""}]
[{if !$smarty.foreach.search.last }]
[{/if}]
[{/foreach}]
[{/if}]
[{if $pageNavigation->iArtCnt }]
[{include file=“inc/list_locator.tpl” PageLoc=“Bottom”}]
[{/if}]
[{ insert name=“oxid_tracker” title=$template_title }]
[{include file="_footer.tpl"}]
[/smarty]
Wie gesagt, ich habe da noch ein slash problem, zum testen auf einer Standardinstallation wie es funktionieren soll:
http://localhost/ce401/index.php?cl=search&searchparam=uhr&tpl=404-search.tpl
Viele Grüße
Magnus