Eintrag in tblIndex erstellen bei we_document.class

Fragen zum Erstellen von Templates für webEdition.
Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 643
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover

Eintrag in tblIndex erstellen bei we_document.class

Beitragvon Carrear » Di 16. Mai 2017, 14:25

Hey Leute,

die Erstellung von Objekten über die oben genannte Klasse (bzw über child klassen) funktioniert einwandfrei mit allen notwendigen Einstellungen. Leider wird ein Eintrag in der tblIndex erst erstellt, wenn man das Dokument im Backend öffnet und neu speichert. Wie kann ich das manuell auslösen für das eine Dokument?

Beste Grüße
Martin

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1322
Registriert: Di 7. Mär 2006, 16:50
Kontaktdaten:

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon WBTMagnum » Di 16. Mai 2017, 14:48

Hallo Martin,

Wie schaut denn dein Code konkret aus bzw. speicherst du die Objekte? we_save() & we_publish() oder nur we_publish()? webEdition 7.0.3 nehme ich an?

Liebe Grüße,
Sascha

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 643
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon Carrear » Di 16. Mai 2017, 14:59

Ich glaube es liegt doch nicht daran. Die Einträge scheinen doch zu entstehen. Aber Trotzdem sind die Dokumente erst in der Suche auffindbar, wenn ich sie in wE geöffnet und neu gespeichert habe. Die Einträge in der tblFiles und in tblIndex scheinen sich dabei aber nicht zu ändern, meines Erachtens nach.

Woran könnte es noch liegen, dass ich diese Dokumente in einem listview vom type=search erst finde wenn ich sie manuell neu abspeichere im Backend?

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 643
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon Carrear » Di 16. Mai 2017, 15:00

Hey :)

ja es ist v 7.0.3

Zuerst hatte ich nur we_publish drin, im Zuge meiner Fehlersuche habe ich das um we_save ergänzt.

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 643
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon Carrear » Mo 29. Mai 2017, 08:57

Gibt es denn noch anderen Tabellen und Felder, die darauf Einfluss haben können? Irgendwas muss es ja sein!

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1322
Registriert: Di 7. Mär 2006, 16:50
Kontaktdaten:

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon WBTMagnum » Mo 29. Mai 2017, 20:48

Hallo Martin,

Ist jetzt schwer zu sagen woran das liegen könnte. Ich habe jetzt mal ein paar unserer Code-Schnipsel zur Erstellung von Dokumenten und Objekten durchgeschaut und habe diesbezüglich nichts spezielles finden können.

Du hast geschrieben, dass alle "notwendigen Einstellungen" bei der Erstellung gesetzt werden. Bist du dir da auch ganz sicher? Sind die Objekte wirklich durchsuchbar gesetzt? Hast du ein "$obj->IsSearchable = 1;" drinnen?

Gerade eben ist mir in einem Migrations-Script noch "$obj->we_save(true)" (= resave) untergekommen. Könntest du auch noch probieren.


HTH,
Sascha

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 643
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon Carrear » Di 30. Mai 2017, 08:49

Es handelt sich in diesem Fall um kein Objekt sondern ein Bild-Dokument. Ich zeige dir hier einfach mal den Code:

Code: Alles auswählen

$img = new we_imageDocument();
$img->Filename = $pathinfo['filename']; // Ohne Dateiendung
$img->Extension = '.'.strtolower($pathinfo['extension']);
$img->IsSearchable = 1;
$img->CreatorID = 11;
$img->ModifierID = 11;
$img->Language = "de_DE";
$img->Text = $img->Filename.$img->Extension;
$img->Path = $GLOBALS['imagepath'] . $folderAddition .'/'. $img->Text;
$img->setParentID($folderid); // Ziel-Verzeichnis
$img->setElement("Title", $meta['title'], "attrib");
$img->setElement("Description", $meta['description'], "attrib");
$img->setElement("Keywords", $keywords, "attrib");
$img->setElement("filesize", filesize($fileserverpath), "attrib");
$img->setElement("type", getContentTypeFromFile($target_file), "attrib");
$img->IsSearchable = 1;
$img->Table = FILE_TABLE;
$img->Published = time();
$img->DocChanged = true;
$img->we_publish();
$img->we_save();
$img->we_rewrite();


Die letzten beiden Zeilen sind eigentlich nur aus Verzweiflung entstanden :D Ich habs dann mal mit dem Parameter in save versucht - das bringt leider nichts.

Ich habe aber noch eine Erkenntnis, die vielleicht weiterhilft: Ich füge ja kommaseperierte Keywords in die Metadaten Schlüsselwörter ein. Bei einem listview type search findet er die Datei SEHR WOHL über den Dateinamen. Nur die Metadaten werden erst gefunden, wenn ich das Dokument nochmal im Backend speichere.

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 643
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon Carrear » Di 13. Jun 2017, 08:43

?

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1322
Registriert: Di 7. Mär 2006, 16:50
Kontaktdaten:

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon WBTMagnum » Di 13. Jun 2017, 11:56

Sorry Martin,

Hab leider keine weitere Idee. Ev. kann man das Indexing manuell triggern?

Liebe Grüße,
Sascha

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 643
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon Carrear » Di 13. Jun 2017, 13:34

Ich hatte gehofft, dass mir die Core-Entwickler genau auf diese frage eine Antwort geben können ^^

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 643
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon Carrear » Mi 14. Jun 2017, 09:41

Kann sich hier vielleicht mal jemand von euch äußern? Ich erwarte ja keinen Support innerhalb von einer halben Stunde, aber innerhalb von einem Monat wäre es schonmal super, wenn man mal eine Aussage dazu bekommt.

Wie kann ich denn diesen Filehash per PHP generieren und in die tblFile bekommen?

mokraemer
Senior Member
Beiträge: 2369
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon mokraemer » Mi 14. Jun 2017, 10:59

Also wenn du so tief einsteigst, dann mußt du selbst mal in den Quelltext schauen.
Die PHP-Funktionen sind halt nur teilweise darauf ausgelegt extern getriggert zu werden.
webEdition-Kern-Entwickler

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1322
Registriert: Di 7. Mär 2006, 16:50
Kontaktdaten:

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon WBTMagnum » Mi 14. Jun 2017, 21:20

Hallo Martin,

Ich habe jetzt einen Blick in den Core gemacht, folgendes fügte die Inhalte wohl in den Index ein:

Code: Alles auswählen

$img->insertAtIndex();


Aus "we_binaryDocument.class.php" geht hervor, dass insertAtIndex() im Zuge von we_save() aufgerufen wird, sofern die Bilddatei vorhanden ist. insertAtIndex() aktualisiert dann den Index (dh. die Datenbank-Tabelle "INDEX_TABLE"). Das scheint lt. deiner Analyse ja auch zu klappen.

Die Preisfrage ist nun, warum wird das Dokument anhand der Metadaten trotzdem nicht in der Suche angezeigt. Das erschließt sich mir jetzt nicht.

@Marc: Vielleicht kannst du Martin da doch einen Schubs in die richtige Richtung geben. Würde ja schon helfen zu wissen, ob das mit we_save() grundsätzlich funktionieren sollte und etwas bei den erstellten Dokumenten fehlt. Oder muss für die korrekte Index-Erstellung noch eine zusätzliche Funktion aufgerufen werden.

Liebe Grüße,
Sascha

lukasimhof
Junior Member
Beiträge: 16
Registriert: Do 30. Aug 2012, 16:09
Wohnort: Berlin

Re: Eintrag in tblIndex erstellen bei we_document.class

Beitragvon lukasimhof » Fr 16. Jun 2017, 13:42

Hallo Martin,
dies ist im Wesentlichen der Kode, der beim Importieren eines Bildes von WE ausgeführt wird (weggelassen ist nur sowas wie Fokus setzen, Image-Metas importieren, verschiedene Tests):

$we_doc = new we_imageDocument();
$we_doc->Filename = $filename;
$we_doc->Extension = strtolower($extension);
$we_doc->Text = $we_doc->Filename . $we_doc->Extension;
$we_doc->setParentID($parentID);
$we_doc->Path = rtrim($we_doc->getParentPath(), '/') . '/' . $we_doc->Text;
$we_doc->IsSearchable = $searchable;
$we_doc->setElement('type', $we_doc->ContentType, "attrib");
$we_doc->setElement('data', $tempFile);
$we_doc->we_save();
$we_doc->we_publish();

Wenn ich nun im Uploder-Kode ergänze:$we_doc->setElement('description', 'dummy description', 'attrib');
und mit "durchsuchbar" importiere, sind alle neu hochgeladenen Bilder sofort in der Suche auffindbar.
=> Solange also bei Binaries eins der drei Standard-Metas gesetzt ist und IsSearchable = 1 wird beim Speichern automatisch in tblIndex übetragen.

In deinem Kode fehlt also m.E. nichts:
Wird denn das Bild überhaupt angelegt und funktioniert normal (d.h. es hat eine Vorschau, lässt sich ausspielen etc)?
Probier das ganze doch erst mal für ein einfaches webEdition-Dokument statt mit Images...
Core-Entwickler webEdition e.V.


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast