Hallo zusammen,
folgende Frage, ich möchte Tabellen aus einer bestehenden Datenbank exportieren, um diese zu entlasten. Ich möchte mit Hilfe von Typo3 + evtl. Extensions, die Tabellen importieren und über eine Webpräsenz für User durchsuchbar machen.
Ist dies generell möglich?
Welche Voraussetzungen müssen gegeben sein?
Welche Extensions benötige ich?
Gruß
Hallo
MB1 schriebIst dies generell möglich?
Mit TYPO3 ist alles möglich 🙂
Wenn ich das richtig entnehme, dann ist es eine umfangreichere Datenbank (Produktdaten odgl.). Ist es nur eine Tabelle oder ein Tabellengeflecht?
Das Durchsuchbar-machen dürfte sinnvoller ohne die Indexed Search werden. Sie indiziert nämlich Seiten und wird sich immer entsprechend verhalten. Wenn Du hingegeb als Treffer einzelne Datensätze haben willst, ist sie unsinnig (und i.d.R. ineffizient).
Um Dir besser helfen zu können, wären etwas mehr Info gut: Welche Menge an Daten sind das? Wie hängen sie ggf. zusammen? Was soll (durch)suchbar sein?
Viele Grüße
Julian
installiere crawler und leg einen entsprechenden Datensatz an.
Hallo zusammen,
hat sich doch alles ein wenig verschoben, sodass ich erst jetzt mit der Bearbeitung beginne.
Mittlerweile habe ich eine Tabelle angelegt mit dem Namen MASTER. In diese Tabelle werden die Datensätze importiert, wie der Import aussehen soll, weiß ich bislang noch nicht. Es handelt sich also um eine einzige Tabelle.
Über das von mir erstellte Menü im Frontend, soll der FE-Benutzer auf die Suche gelangen und die Möglichkeit haben, durch eingabe einer Nr, die entsprechenden Datensätze, in denen diese Nummer enthalten ist angezeigt bekommen.
Bin mir allerdings nicht bewusst wie ich das realisieren könnte, kann mir Jemand einen Denkanstoß geben?
Hat Jemand so etwas evtl. realisiert?
Gruß
Neuster Stand..
also die Datensätze liegen mir im .xml Format vor.
Eine entsprechende Tabelle habe ich auch angelegt.
Die Frage ist nun, wie bekomme ich die einzelnen Datensätze am einfachsten in meine Tabelle und wie kann ich diese dann durchsuchen, sodass beim Eingeben einer bestimmten Zahl, der Datensatz angezeigt wird, der diese Zahl enthält?
Steh leider auf dem Schlauch, komme nicht weiter, die Webpräsenz steht soweit, es fehlt "nur" noch die Umsetzung des Imports und das Durchsuchen der Tabelle.
Hoffe auf eure Hilfe!
Gruß
MB1
Das einfachste dürfte eine eigene Extension sein, bestehend aus:
1. Backendmodul zum importieren
2. Frontend-Plugin zum Durchsuchen bzw. Ausgeben der Treffer.
Ich werde den Versuch starten.
Die Daten könnte ich mir allerdings auch ins .csv Format konvertieren.
Gibt es dann die Möglichkeit diese in die vorgesehene Tabelle zu importieren und dann evtl. mit der Tabelle tt_content zu verknüpfen?
Durch die Verknüpfung würden somit die Datensätze gefunden?
Oder stell ich mir das zu einfach vor?
Wie bereits per PM gesagt, befasse Dich zumindest mal kurz mit dem TCA von TYPO3. Denn solange Du Deine Tabelle (bzw. ergänzte Spalte in schon vorhanden Tabellen) nicht registrierst, wirst Du innerhalb von TYPO3 überhaupt nicht ode rnur schwer an die Inhalte kommen.
Ob XML oder CSV ist letztlich egal udn nur eine Frage, was für Dich einfacher ist zu importieren.
Hallo Julian,
danke für den super Tipp, die Tabelle ist jetzt angelegt -> über eine eigene Extension. Ich bin jetzt soweit, dass ich meine Daten per wil_importcsv einlesen kann und ich dort auch "meine neue Tabelle" auswählen kann, also der Import funktioniert einwandfrei.
Jetzt ist die Frage, wie ich das ganze mit dem Durchsuchen dieser Tabelle löse, gibt es auch hier Tipps von deiner Seite? 😉
Reicht hier die Typo3 Hausmittel oder doch eine weitere Extension?
Ich bin sehr Dankbar über die Hilfe, die ich bis jetzt bekommen habe! 🙂
Gruß
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?