Was sind für die TYPO3-Hausmittel?
Irgendwie muss TYPO3 ja mal erfahren, in welcher Tabelle und in welcher Spalte gesucht werden soll. Die flexibelste Lösung ist, ein eigenes Frontend-Plugin (das Du in die gleiche Extension packen kannst, über die Du auch die Tabelle angelegt hast - gehört ja logisch auch zusammen). Mit der TYPO3-API, insbesondere den Klassen t3lib_pibase und t3lib_DB solltest Du dann ans Ziel kommen.
Julian.Hofmann schrieb
Was sind für die TYPO3-Hausmittel?
Ich dachte hierbei vielleicht an das "Suche"-Plugin was Typo3 bietet ohne Extensions, o.ä.
Julian.Hofmann schrieb
Irgendwie muss TYPO3 ja mal erfahren, in welcher Tabelle und in welcher Spalte gesucht werden soll. Die flexibelste Lösung ist, ein eigenes Frontend-Plugin (das Du in die gleiche Extension packen kannst, über die Du auch die Tabelle angelegt hast - gehört ja logisch auch zusammen). Mit der TYPO3-API, insbesondere den Klassen t3lib_pibase und t3lib_DB solltest Du dann ans Ziel kommen.
Naja das Frontendplugin habe ich eingebunden und die Daten meiner Tabele werden auch schon im Frontend angezeigt, einzige was mir jetzt noch fehlt, ist die Suche, leider komme ich auch mit den von dir genannten Begriffen nicht weiter, eher gesagt wo muss ich der Extension sagen das sie in der Tabelle suchen soll und vorallem wie?
Benötige ich hierfür PHP oder bin ich damit völlig auf dem Holzweg?
Komme leider wirklich nicht weiter 🙁
Wenn Du den Weg über die pibase-Funktionen gegangen bist, dann hast Du wahrscheinlich pi_list_searchBox übersehen.
Falls Du ein alleinstehendes Feld (ohne Liste) haben willst, dann sollte die Übergabe des sword-Parameter an Deine Listenansicht genügen.
Beispiel:
Deine Extension hat als prefixId = user_bsp_pi1
Dann sollte via
http://www.example.com/index.php?id=1&user_bsp_pi1[sword]=suchbegriff
die Liste nur passende Einträge zeigen.
Ich habe das ganze über den Kickstarter gemacht und dort die Tabelle und die entsprechenden Spalten erzeugt. Dann mit hilfe der csv-Datei die Daten in die Tabelle importiert.
Dann habe ich ein Frontendplugin angelegt, ebenfalls über den Kickstarter und eine Liste mit den Datensätzen in meinem Frontend erhalten.
Leider verstehe ich von deinen letzten beiden Antworten nicht viel 🙁
Muss ich für die Suche irgendwelche Dateien verändern oder im Kickstarter entsprechende Einstellungen treffen?
Hier ein Teil aus der class.tx_XXXdata_pi1.php
class tx_XXXdata_pi1 extends tslib_pibase {
var $prefixId = 'tx_XXXdata_pi1';
Muss ich in dieser Datei dann auch meine Einstellungen bzgl. der Suche vornehmen?
MB1 schriebMuss ich in dieser Datei dann auch meine Einstellungen bzgl. der Suche vornehmen?
Ja. Der Kickstarter liefert im wesentlichen den Rahmen einer Extension (Verzeichnisstruktur, Dateien, Registrierung von Tabellen, BE-Modulen, FE-Plugin,...), aber keine fertigen Extensions.
Diesen Rahmen gilt es selbst zu füllen - mittels PHP.
In der Klasse tx_XXXdata_pi1 hat der Kickstarter nur einfachen Beispielcode platziert. Dieser kann fast beliebig geändert werden udn an die eigenen Bedürfnisse angepasst werden. Am besten ist's den code einfach mal Stück für Stück durchzugehen und zu schauen, was eigentlich wo passiert. Dann solltest Du auch die Stelle finden, wo
a) eine Suchbox an die Liste rangebaut werden könnte.
b) eine andere Ansicht abgefangen werden könnte (siehe main())
// Adds the search box:
$fullTable.=$this->pi_list_searchBox();
in dieser tx_XXdata_pi1.php wird an der oben genannten stelle ja die searchBox schon geaddet. habe dann innerhalb meiner Installation nach pi_list_searchBox gesucht und solch ein eintrag wurde nur in den locallang und in der setup.txt gefunden, in beiden find ich allerdings keine Möglichkeit zu sagen wo er suchen soll...
Ich würde gerne alle Datensätze anzeigen lassen, in denen der Suchbegriff vorkommt und nicht nur eine Spalte.
Das ist jetzt ein Stück weit ein Grund, warum manche den vorgenerierten Code vom Kickstarter nicht ganz so mögen... Es ist nicht alles selbsterklärend.
Über die Searchbox wird ein Parameter 'sword' gesetzt. Wenn der nun in der Listenansicht berücksichtigt wird, muss er irgendwo in t3lib_pibase auch berücksichtigt werden. Also schauen wir dort einmal rein. In der Funktion pi_list_query() stoßen wir auf:
if ($this->piVars['sword'] && $this->internal['searchFieldList']) {
$WHERE.=$this->cObj->searchWhere($this->piVars['sword'],$this->internal['searchFieldList'],$table).chr(10);
}
Von dort aus lohnt sich dann ein Blick in die Funktion selectWhere
Anfangs ist es etwas nervig und zeitraubend, dem verarbeitungswega uf den grund zu gehen, udn zus chauen, was eigentlich wie abläuft. Aber dadurch versteht man nach und nach wie TYPO3 tickt, und davon profitiert man dann indem man selbst schneller ans Ziel kommt weil man der API vieles überlassen kann.
Mal eine generelle Frage, was sagt dieses $this aus und was bedeutet der "->" ?
Auch der Begriff "internal" tauch ziemlich häufig auf, was hat es damit auf sich?
in meiner class.tx_XXXdata_pi1.php habe ich folgendes gefunden, bin ich an dieser Stelle richtig?
leider finde ich den Begriff sword nicht und leider stehe ich auch total auf dem Schlauch ob ich überhaupt ans Ziel komme damit?
if ($this->piVars['showUid']) { // If a single element should be displayed:
$this->internal['currentTable'] = 'tx_XXXdata_protokoll';
MB1 schrieb
Mal eine generelle Frage, was sagt dieses $this aus und was bedeutet der "->" ?
Auch der Begriff "internal" tauch ziemlich häufig auf, was hat es damit auf sich?
Ähm, Du weißt aber schon, dass Extensionprogrammierung nicht nur bisschem Rumgeklicke in irgendwelchen Konfigurationsoberflächen ist?
Was Deine Frage angeht, verweise ich mal direkt an die Quelle: http://www.php.net/manual/de/language.oop5.php
MB1 schrieb
in meiner class.tx_XXXdata_pi1.php habe ich folgendes gefunden, bin ich an dieser Stelle richtig?
(...)
// If a single element should be displayed:(...)
Möchtest Du irgendetwas an der SingleAnsicht ändern? Wenn ja, dann bist Du richtig. Wenn nein, nicht.
MB1 schriebleider finde ich den Begriff sword nicht und leider stehe ich auch total auf dem Schlauch ob ich überhaupt ans Ziel komme damit?
Du kommst ans Ziel, nur musst Du Dich mit dem Code auch befassen, ihn verstehen. Spontan könnte ich Dir auch nicht sagen, wo Du überall was genau reinschreiben müsstest, damit es funktioniert. Aber die Richtung ist mir klar, der Ansatz. Deshalb ist das Verstehen auch immer wichtig. Wenn man fremden Code versteht, dann merkt mana uch bald, wo man (s)eine Änderungen unterbringen kann/soll/muss.
ja leider ist mir das klar 😉
Ich werd mal gucken was sich machen lässt 😉
Hallo lieber MB1 und Julian.Hofmann,
bin neu hier und versuche mich dem Thema Typo3 vorsichtig anzunähern.
Ich habe das gleiche Problem. Ein Kunde arbeitet mit einer Excel-Datei, die er idealerweise selber updaten möchte, und der FE-User soll diese Tabelle durchsuchen können.
Idealerweise soll jede Spalte als Filter fungieren können.
Beispiel: Autosuchmaschine
Nach Marken sortiert, sollen nur noch die betreffenden Optionen der Marke übrigbleiben. Dann z.B.: die Farben, Ausstattung, Motorisierung usw. So das am Ende nur noch eine ganz kleine Auswahl übrig bleibt.
Mich wundert, dass dieses Problem nicht schon über Xtensions/Plugins/Module gelöst wurde. Ich dachte das Thema wäre ein FAQ.
@MB1: wo stehst Du jetzt mit Deinem Verständnis?
Hi vanlent,
also ich habe das Problem mit der Extension "mh_omsqlio_2.1.0.t3x" gelöst, alelrdings bekommst du da nur eine Volltextsuche angeboten, ich weiß nicht in wie weit dir diese Extension helfen kann, aber probieren kostet ja nichts und vielleicht klappt es ja.
Mein Denkfehler lag beim Erstellen einer neuen DB-Tabelle. Hierbei unbedingt mit der Kickstarter Extension arbeiten, wirklich einfach!
Gruß
vanlent schrieb
Mich wundert, dass dieses Problem nicht schon über Xtensions/Plugins/Module gelöst wurde. Ich dachte das Thema wäre ein FAQ.
Sicherlich wurde das schon tausend Mal gelöst - aber jeweils speziell für einen Anwendungsfall. Ansich ist so eine Extension nicht weiter schwer: ein BE-Modul zum Importieren der Excel-/CSV-Datei in die DB, ein FE-Plugin zur Ausgabe. Für eine generelle Extension wäre das Drumherum mit Templating, Konfiguration usw. viel Overhead,w eshalb es die wohl im TER (noch) nicht gibt.