Hallo zusammen!
Ich muss die Suche von tt_news so umstricken, das nach einem bestimmtem Datum, Monat oder Jahr gesucht werden kann.
Die Funktionalität hab ich schon so gecoded, aber so wie ich es habe kann ich tt_news nicht mehr updaten. :o
Kann mir jemand nen Tipp geben wie ich das mit den Hooks hin bekomme?
Laut Doku gibts bei der Suche ja sogar zwei Hooks!
Nur finde ich die "Doku" da etwas dürftig:
Hook to add fields to search form in function displayList() (additionalFormSearchFields)
Hook to post-process search condition in function searchWhere() (searchWhere)
Gibts da irgendwo genaueres?
Oder gibt es irgend ne andere Suche die man "einfacher" erweitern kann und auch tt_news-Einträge findet?
sind wir also schon zu dritt bei diesem Problem ...
kannst Du deine Änderungen mal posten?
Könnte nen bischen viel Code sein. :o
Im Grunde habe ich die searchWhere() um die Suche nach Timestamps (CRDATE) verweitert.
Hi zusammen so langsam mache ich Fortschritte.
Ich habe es immerhin hinbekommen, das mir die Marker für neuen Auswahlfelder ersetzt werden.
Dazu hänge ich mich in den Hook 'additionalFormSearchFields'.
ext_localconf.php:
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
require_once(t3lib_extMgm::extPath('user_searchfields').'pi1/class.user_searchfields_pi1.php');
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['additionalFormSearchFields'][] = 'user_searchfields_pi1';
?>
Wenn ich aber versuche mich in den Hook 'searchWhere' einzuhängen passiert gar nix.
ext_localconf.php:
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
require_once(t3lib_extMgm::extPath('user_searchwhere').'pi1/class.user_searchwhere_pi1.php');
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['searchWhere'][]='user_searchwhere_pi1';
?>
Hat da jemand nen Tipp was ich falsch mache?
Meine Class & die Function darin werden gar nicht erst aufgerufen, so scheint es mir?!
Ok... das war blöd... #angry#
Die searchWhere wird nur aufgerufen, wenn ein Suchbegriff eingegeben wird.
Ich hatte einfach keinen Suchbegriff eingegeben... #paralyzed#
Jedenfalls hab ich jetzt ne eigene Extension die tt_news erweitert in dem Sie die Hooks nutzt.
Man muss noch im tt_news SEARCH_TEMPLATE felde für den Tag,Monat & Jahr definieren und schon funzt es.
ext_localconf.php:
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
require_once(t3lib_extMgm::extPath('user_ttsearch').'pi1/class.user_ttsearch_pi1.php');
$TYPO3_CONF_VARS['EXTCONF']['tt_news']['searchWhere'][] = 'user_ttsearch_pi1';
$TYPO3_CONF_VARS['EXTCONF']['tt_news']['additionalFormSearchFields'][] = 'user_ttsearch_pi1';
?>
Hooks sind gar nicht mal so komplziert wie ich dachte.
Aber irgendwie ist die tt_news Doku seit meinem ersten Post hier auch überarbeitet worden.
Hallo parallaxis
Kannst Du diese Erweiterung nicht als Downlaod bereitstellen, damit man das Rad nicht wieder neu erfinden muss?
Merci und Gruss
Servus parallaxis,
könntest Du Deinen Lösungsweg hier vielleicht nochmal etwas genauer aufschreiben? Ich sitze demnächst vor demselben Problem und ein praktisches Beispiel mit den Hooks für die Suche von tt_news würde mir ungemein helfen... mir und bestimmt ganz vielen anderen auch 😉 .
Beste Grüße!
Hi!
Leider habe ich nicht die Zeit das ganze mal "vernünftig" zu Coden und als Extension bereit zu stellen.
Sorry!
Aber im Grunde steht in den codes oben, wie man die Hooks nutzt, die funktionen die dann aufgerufen werden, hängen dann ja eh vom speziellen Fall ab.
parallaxis schrieb
Hi!
Leider habe ich nicht die Zeit das ganze mal "vernünftig" zu Coden und als Extension bereit zu stellen.
Sorry!
Aber im Grunde steht in den codes oben, wie man die Hooks nutzt, die funktionen die dann aufgerufen werden, hängen dann ja eh vom speziellen Fall ab.
Ja parallaxis,
das wäre für mich persönlich auch ganz essentiell, der Lösungsweg.
Ich sitze seit einer Woche an dem Problem und komme nicht weiter.
Google hat auch schon die Nase voll von meinen Suchanfragen... #angry#
Bitte poste doch mal deine "class.user_ttsearch_pi1.php".
Bitte Bitte Bitte. o.O
Danke im Voraus
André
Was genau ist denn dein Problem?
Was die Hooks machen steht in der tt_news-Doku.
Wie man die Hooks nutz erkläre ich oben, sogar mit dem entsprechen Code.
parallaxis schrieb
Was genau ist denn dein Problem?
Ich habs verstanden wie Hooks eingesetzt werden, jetzt hab ich keine Ahnung was ich in meine Funktion schreiben soll,
wenn ich ein weiteres Suchfeld mit den tt_news-Kategorien haben will.
Mein bisheriger Ansatz:
ext_localconf.php meiner Extension:
<?php
if (!defined ("TYPO3_MODE")) die ("Access denied.");
require_once(t3lib_extMgm::extPath('sp_reise_ttnews').'class.tx_spreisettnews.php');
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['additionalFormSearchFields'][] = 'tx_spreisettnews';
?>
class.tx_spreisettnews.php:
<?php
class tx_spreisettnews {
function additionalFormSearchFields($parentObj, $searchMarkers) {
// select über alle tt_news_cat... und in eine option-list bauen
...
$markerArray['###SCATEGORY###'] = ???
}
}
?>
In meinem tt_news-Template hab ich einen entspr. Marker ###SCATEGORY### der jetzt durch meine Funktion ersetzt werden müsste.
Nur ich weiß nicht wie?!
Hook to add fields to search form in function displayList() (additionalFormSearchFields)
Hook to post-process search condition in function searchWhere() (searchWhere)
Also für die SQL-Anfragen ist ein anderer Hook zuständig:
searchWhere
Wenn ich dein Problem richtig verstanden hab, brauchst du den auch.
Ansonsten würd ich dir raten die entsprechenden aufrufe der Hooks in tt_news genauer anzuschauen.
Das 'searchWhere' ist erst im 2. Schritt dran.
Ich muss doch erstmal mit dem 1. Hook das neue Suchfeld reinbekommen.
Nur welchen Code muss in meine Funktion, der mir die Kategorie-Selectbox zaubert?
Ich glaub du stehst aufm schlauch. 😉
Ist ganz einfach:
Du schreibst dir entweder eine Funktion die alle Kategorien aus der Datenbank ausliest und dir den HTML-Source für eine Selectbox ausgibt.
Welchen du dann in den Marker schreibst.
function additionalFormSearchFields($this, $searchMarkers) {
$searchMarkers['###SCATEGORY###']= *php funktion*
return $searchMarkers;
}
Oder du haust die Selectbox von Hand ins tt_news-search-template.
<!-- ###TEMPLATE_SEARCH### begin
Subpart for the search-form
-->
Mir gehts konkret um die magische "php funktion", aber ich werds schon irgendwie hinbekommen...
Dachte nur, weil du auch die Kategorien als Selectbox brauchtest und es hinbekommen hast,
dass du genau DIESE PAAR ZEILEN PHP postest, aber egal.
Ich probiers selber...
Nö, sowas hab ich gar nicht gemacht.
Deswegen kann ichs auch nicht posten.
So, das Formular schaut gut aus :-)
Jetzt hab ich noch den searchWhere-Hook:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['additionalFormSearchFields'][] = 'tx_spreisettnews';
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news']['searchWhere'][]='tx_spreisettnews';
meine Funktion in der Klasse:
function searchWhere($this, $sw, $where) {
...
$where .= " AND datetime > UNIX_TIMESTAMP('2009-01-01')";
return $where;
}
Problem: keine Auswirkung auf das Suchergebnis, keine Fehlermeldung.
Egal was ich in die $where reinschreib, es scheint nicht beachtet zu werden.
Was hast du drin steht parallaxis?
parallaxis schrieb
Ok... das war blöd... #angry#
Die searchWhere wird nur aufgerufen, wenn ein Suchbegriff eingegeben wird.
Ich hatte einfach keinen Suchbegriff eingegeben... #paralyzed#
Tatsache!
Erst wenn ein Suchbegriff mit angegeben wird kommt die searchWhere ins Spiel.
Ich hab das ganze mit einem hidden-parameter im Formular gelöst:
<input class="csc-mailform-submit" type="hidden" name="tx_ttnews[search]" value="1" />
und in der class.tx_ttnews.php die if-Abfrage erweitert:
if ($this->piVars['swords'] || $this->piVars['search'])
Hi !
Ich bin Französisch und ich ferstehe nicht sehr güt was du erklären.
Ich bin neu bei typo3 une ich verstehe nicht Hooks. Ich versuche, deinem Beispiel zu verstehen, aber est ist nicht klar... Können Sie mich ihre Dateien zeigen ?
Oder können Sie eine Erklärung in englischer Sprache geben?
Niemand fur mir zu helfen ?
Ich habe immer noch Probleme mit hooks...
Danke !