[gelöst] - CMS portierung zu Drupal 7 mit dem Modul "Feeds"
am 15.05.2011 - 00:55 Uhr in
Hallo, wie bereits im Anfängerforum vorgewarnt bin ich neu bei Drupal und sauge im Moment alles, auf was ich unter die Finger bekomme. Bei einer meiner Hauptproblematik suche ich im Moment eine funktionierende Lösung.
Bestand: Ich habe ein CMS-System, bei dem eine Vielzahl von Artikeln (nodes) von registrierten und geprüften Usern geschrieben wurde. Jeder der User hat ein eigenes Profil mit unterschiedlichen Angaben. Die Artikel selbst sind ganz einfach aufgebaut, Headline, Text, Tags. Alle Artikel sind in einer entsprechenden Kategorie abgelegt. Das CMS wurde mit PHP geschrieben und als Datenbank dient MySQL.
Soll: Der ganze Spaß sollte jetzt zu Drupal (7!) portiert werden. Nach einer Recherche gibt es keine out-of-the-box Lösung. Ich bin lediglich über diesen Modul gestolpert: http://drupal.org/project/migrate - fand in diesem Forum allerdings keinen entsprechenden Post dazu. Die Doku, wenn dies so bezeichnet werden kann, habe ich mir angeschaut. Kann aber nicht ganz nachvollziehen, wie es im Endeffekt funktioniert.
Daher suche ich hier einige Tipps, wie ich dem großen Ganzen entgegen treten kann. Optimal wäre es, wenn bereits jemand aus diesem Forum ähnliche oder gleiche Erfahrungen sammeln konnte. Bin wirklich für jeden Tipp sehr dankbar.
Vielen Dank im Voraus.
LG.
- Anmelden oder Registrieren um Kommentare zu schreiben
Das adäquate Modul dafür ist
am 15.05.2011 - 09:19 Uhr
Das adäquate Modul dafür ist [do:node_import Node Import], aber das gibt es noch nicht in eriner Version für Drupal 7. Es soll aber bereits daran gearbeitet werden.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Nicht zu vergessen das
am 15.05.2011 - 14:24 Uhr
Nicht zu vergessen das großartige Feeds-Modul, mit dem sich auch Nodes importieren lassen. Feeds gibt es bereits in einer 7er Version. Hier gibt es Videos zur Handhabung des Moduls.
Do it with Drupal.
Migration
am 15.05.2011 - 16:20 Uhr
Momentan kann man keinem empfehlen von D6 zu D7 zu migrieren. Da ist viel Handarbeit dabei.
-> Bilder, die vorher mit image_attach an Nodes gehängt wurden sind erstmal weg; es gibt keinen funktionierenden Out-of-the-Box Migrationsassistenten.
-> Eigene Felder, die mit CCK erzeugt wurden sind erstmal weg. Der CCK7 Migrationsassistent funktioniert nicht richtig.
-> Teile der URL Aliase gehen verloren
Status quo: Für mich ist es derzeit die bessere Alternative mir ein Export-Skript zu schreiben und die D6-Seite bei Bedarf nach typo3 zu migrieren. Der derzeitig aufwändige Migrationspfad für "neue" Basismodule ist bullshit und nicht akzeptabel.
@wla @Anton - vielen Dank für
am 15.05.2011 - 16:27 Uhr
@wla @Anton - vielen Dank für die Tipps, ich werde mir die Module anschauen. Feeds hört sich spannend an und ist wohl nicht so Komplex.
@sweih - ähm, glaube Du bist etwas falsch - ich nutze kein D6, sondern ein externes CMS welches ich jetzt zu D7 portieren möchte. Daher Suche ich im Moment eine passende und vor allem funktionierende Lösung für mich. Denoch danke für Deine Mühe und das umschreiben von aktuellen D6/D7 Schwierigkeiten.
Ansonsten, ist leider immer noch aktuell...wenn sich jemand mit dem Modul migrate beschäftigt hat - würde ich mich über Vorschläge und Tipps freuen.
Migrate ist wohl doch etwas
am 22.05.2011 - 02:32 Uhr
Migrate ist wohl doch etwas zu komplex. Mit Feeds habe ich mich inzwischen angefreundet.
Die Userdaten sind zumindest inzwischen drin, mit etwas Feintuning auch die Extrafelder.
Hätte jemand für mich einen Tipp, wie ich mit Feeds die Kategorien ins D7 rein bekomme. Desweiteren sollten die Tags an die Artikel und die Artikel an Kategorien und User Verknüft werden. Sehe im Moment irgendwie keine Möglichkeit darin.
Ach ja, noch ein kleines Problem habe ich bei den Artikeln. Die wurde direkt aus der Datenbank exportiert, als CSV abgespeichert, das Problem nur dabei - die Inhalte sehen so aus:
Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Aenean+commodo+ligula+eget+dolor.+Aenean+massa.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Donec+quam+felis%2C+ultricies+nec%2C+pellentesque+eu%2C+pretium+quis%2C+sem.+Nulla+consequat+massa+quis+enim.+Donec+pede+justo%2C+fringilla+vel%2C+aliquet+nec%2C+vulputate+eget%2C+arcu.+In+enim+justo%2C+rhoncus+ut%2C+imperdiet+a%2C+venenatis+vitae%2C+justo.
Wie bekomme ich die Strings decodiert?
Vielen Dank im voraus.
schreibe dir ein mini-modul,
am 18.05.2011 - 20:35 Uhr
schreibe dir ein mini-modul, wo du per schleife alle "nodes" aus deinem abenteuer-cms holst und mittels node_save(); speicherst. tutorials, wie du nodes aus einem eigenmodul speichern kannst, sollte es zu hauf geben.
- Mein Profil auf Drupal.org
- Mein Profil auf LinkedIn
Nun ja, wäre ich nicht neu
am 22.05.2011 - 02:33 Uhr
Nun ja, wäre ich nicht neu bei Drupal und könnte das Problem selbst lösen - würde ich sicher die Resourcen von der Community nicht verbrauchen, oder? ;) DasFeeds-Modul scheint schon das richtige zu sein, nur wie bekomme ich die utf8 Codierung raus aus meinem CSV Export? Und eben das ganze auch noch miteinander verknüpft, wie oben aufgeführt?
hä? weis nicht was du mit
am 19.05.2011 - 00:39 Uhr
hä? weis nicht was du mit deiner community-resourcen geschichte ausdrücken wolltest.
zu der zeichenkodierung:
jeder editor, der etwas taugt, kann den zeichensatz umstellen. auf dem mac empfehle ich für layoutarbeit (css und html sowie "bisschen" php) coda. wobei damit au h die umstellung der zeichenkodierung von den meisten textdateien klappen sollte.
- Mein Profil auf Drupal.org
- Mein Profil auf LinkedIn
Ich will damit nur sagen,
am 19.05.2011 - 16:41 Uhr
Ich will damit nur sagen, dass ich keine Zeit von den Leuten in Anspruchen nehmen würde, wenn ich selbst die Lösung kenne.
Es geht nicht um die Layoutarbeit, wie bereits oben erwähnt. Es geht um eine exportierte CSV direkt aus der Datenbank die wohl mit UTF8 codiert ist. Wenn ich diese nun mit Feeds importiere, habe ich die "+"-Zeichen sowie die UTF8 Codierung direkt im Node, statt dem ganz normalen Text. Ich verwende generell Notepad++ - da eben eine Windowsmaschine, jedoch hilft mir dies leider nicht bei meinem kleinen Problem.
Die Tatsache, daß die Blanks
am 19.05.2011 - 18:04 Uhr
Die Tatsache, daß die Blanks als +-Zeichen ausgegeben werden wurde ich als fehlerhafte Ausgabe betrachten. Das ist aus meiner Sicht nicht normal. UTF8-Codierung ist in Ordnung, damit arbeitet Drupal ganz normal.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
@wla - so ist der Inhalt auch
am 19.05.2011 - 22:49 Uhr
@wla - so ist der Inhalt auch in der DB abgespeichert, das CMS behandelt den Inhalt wohl so. Das einziges was ich jetzt machen kann, die + Zeichen ersetzen - und hoffen das es klappt. Ansonsten für Tipps wie immer Dankbar.
Ansonsten fehlt mir leider
am 19.05.2011 - 23:35 Uhr
Ansonsten fehlt mir leider immer noch eine Antwort.
Wie verknüpfe ich am besten die Artikel an Kategorien und User, und die Tags eben an die Artikel selbst.
PS: Ihr könnt euch nicht vorstellen wie ich mich im Moment ärger. Hätte ich mal auf keine postmodernen HypeCMSysteme gesetzt :(
Ich weiß, ich muss ziemlich
am 20.05.2011 - 19:28 Uhr
Ich weiß, ich muss ziemlich viele langweilen. Hoffe aber immer noch, dass mir jemand bei der Portierung hilft.
pure Verzweifelung
am 22.05.2011 - 04:05 Uhr
Langsam bin ich am verzweifeln.
Zwischenstand:
- Kategorien als Taxonomy importiert - check
- Tags als Taxonomy importiert - check
- Inhalte importiert und mit Usern und Kategorien verknüpft - check
Alles in einem funktioniert das Feeds Modul super, meine Aufgabe ist nahezu gelöst. Auch wenn ich unzählige Stunden bei DC.de und drupal.org verbracht habe. Ich glaube ich kann inzwischen so ziemlich jedes giftige Format ins D7 pumpen.
Was bleibt:
Lorem+ipsum+dolor+sit+amet%2C+consectetuer+adipiscing+elit.+Aenean+commodo+ligula+eget+dolor.+Aenean+massa.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Donec+quam+felis%2C+ultricies+nec%2C+pellentesque+eu%2C+pretium+quis%2C+sem.+Nulla+consequat+massa+quis+enim.+Donec+pede+justo%2C+fringilla+vel%2C+aliquet+nec%2C+vulputate+eget%2C+arcu.+In+enim+justo%2C+rhoncus+ut%2C+imperdiet+a%2C+venenatis+vitae%2C+justo
Ich habe leider absolut keine Ahnung, was das alte CMS da abgespeichert hat. Es scheint eine Kodierung zu sein, die ich jedoch nicht decodiert bekomme - selbt mit http://sourceforge.net/projects/phputf8/ nicht.
Ich habe das ganze über diese Funktion in der FeedsCSVParser.inc vom Feeds Modul ausgeführt bzw getestet.
<?php
protected function parseItems(ParserCSV $parser, ParserCSVIterator $iterator, $start = 0, $limit = 0) {
$parser->setLineLimit($limit);
$parser->setStartByte($start);
$rows = $parser->parse(encode($iterator)); // meine encode funktion die ich ausgeführt habe
return $rows;
}
?>
Vielleicht habe ich auch einen Denkfehler, müsste aber die richtige Stelle sein, wenn ich über Feeds meinen Inhalt importiere.
PS: Ach ja, die "+" Zeichen habe ich testweise manuel über Notepad++ entfernt. So das die Ausgabe so aussah:
Lorem ipsum dolor sit amet%2C consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes%2C nascetur ridiculus mus. Donec quam felis%2C ultricies nec%2C pellentesque eu%2C pretium quis%2C sem. Nulla consequat massa quis enim. Donec pede justo%2C fringilla vel%2C aliquet nec%2C vulputate eget%2C arcu. In enim justo%2C rhoncus ut%2C imperdiet a%2C venenatis vitae%2C justo
Vom D7 bzw Feeds wurde der Buchstabensalat jedoch nicht decodiert.
Update: Habe mir inzwischen eine Funktion gebastelt um den String zu entwirren, es passiert jedoch nichts. Kann mir jemand sagen an welcher Stelle ich bei Feeds die Funktion aufrufen müsste?
<?php
public function fuctUEncode($narcsimportstring)
{
$zuentfernen = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D');
$neuerwert = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
return str_replace($neuerwert, $zuentfernen, urlencode($narcsimportstring));
}
?>
Ich würde mich wirklich sehr freuen wenn mir bei DC jemand helfen könnte, damit ich endlich durchstarten kann und an der neuen Struktur im D7 arbeiten.
Vielen Dank im voraus.
Die return-Zeile ist
am 22.05.2011 - 09:30 Uhr
Die return-Zeile ist natürlich Mist. Das muß heißen:
return str_replace($neuerwert, $zuentfernen, $narcsimportstring);
Ansonsten kann ich leider nicht helfen, da ich mich mit Drupal 7 noch nicht ernsthaft befaßt habe. Das ist mir noch etwas früh.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Danke Werner für den Tipp,
am 23.05.2011 - 01:55 Uhr
Danke Werner für den Tipp, macht jedenfalls Sinn ;)
narc schrieb Niemand sonst
am 23.05.2011 - 01:54 Uhr
Niemand sonst einen Tipp, an welcher Stelle und in welcher Datei die Strings von dem Modul Feeds verarbeitet werden? Nach weiterer Recherche, entdeckte ich das alle Inhalte vom alten CMS mit
<?php
urlencode
?>
<?php
urldecode
?>
Ich glaube ich habe die ensprechende Stelle gefunden, für alle die eventuell das selbe Problem haben.
Datei ParserCSV.inc des Modulordners Feeds,
<?php
//die zeile 198
$line = trim($lineIterator->current(), "\r\n");
//durch folgendes ersetzen
$line = urldecode(trim($lineIterator->current(), "\r\n"));
?>
Bei meinen Testdaten lief die Prozedur durch. Sobald ich die original CSV-Datei durch jagen wollte, bekam ich folgende Fehlermeldung zu gesicht.
Ein AJAX-HTTP-Fehler ist aufgetreten HTTP-Rückgabe-Code: 200 Im Folgenden finden Sie Debugging-Informationen. Pfad: /drupal/?q=batch&id=236&op=do Statustext: OK Antworttext: ( ! ) Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 79636416 bytes) in E:\_webserver\_www\drupal\includes\database\database.inc on line 2039 Call Stack #TimeMemoryFunctionLocation 10.0002679576{main}( )..\index.php:0 20.196429280960menu_execute_active_handler( )..\index.php:22 30.201830499184call_user_func_array ( )..\menu.inc:501 40.201830499448system_batch_page( )..\menu.inc:0 50.201930499448_batch_page( )..\system.admin.inc:2282 60.202030500336_batch_do( )..\batch.inc:81 70.202030500336_batch_process( )..\batch.inc:162 81.124436269680call_user_func_array ( )..\batch.inc:285 91.124436269728feeds_batch( )..\batch.inc:0
Sieht für mich nach einem Overkill der MySQL Verarbeitung. Nun weiß ich nicht, ob es daran liegt das ich meine Änderung an der falschen Stelle gesetzt habe, meine CSV (50mb) zu groß ist oder an etwas anderem. Läuft im moment eh noch alles lokal, daher Speicher für PHP auf 512 MB gesetzt, max zu verarbeitende Dateien beim Upload auf 128MB.
PS: Das wird ja bald schon zu einem Blog in diesem Thread, sorry dafür. Aber vielleicht findet sich jemand der mir bei dem Weg in die Drupalwelt einzusteigen etwas hilft.
Wie immer vielen Dank im voraus.
Ich habe das Problem gelöst,
am 23.05.2011 - 22:57 Uhr
Ich habe das Problem gelöst, somit ist dieser "Blog" geschlossen ;)
Für die es wissen möchten oder ein ähnliches Problem haben.
1. Die Datenbank wie auch die Tabellen MÜSSEN die Collation "utf8_general_ci" haben.
2. Die Datei ParserCSV.inc vom Modul Feeds muss wie folgt angepasst werden.
Zeile: 275
<?php
$fields[] = $currentField;
?>
zu
<?php
$fields[] = urldecode($currentField);
?>
Zeile: 281
<?php
$fields[] = $currentField;
?>
zu
<?php
$fields[] = html_entity_decode(urldecode($currentField), ENT_QUOTES, 'UTF-8');
?>
3. Die CSV Datei nach folgendem durchsuchen ";-+" und das "-+" entfernen, da es sonst zu Importfehlern kommt.
4. Ganz normal den Mapper nach Lust und Laune einstellen und importieren. Ich habe so über 10.000 Datensätze problemlos impotiert bekommen.
Mit dem Core Update auf D7.2
am 27.05.2011 - 19:30 Uhr
Mit dem Core Update auf D7.2 funktioniert die oben erwähnte Methode leider nicht mehr.
Diese muss durch folgendes ergänzt werden.
<?php
$fields[] = mb_convert_encoding(html_entity_decode(urldecode($currentField), ENT_QUOTES, 'UTF-8'),'UTF-8','UTF-8');
?>
vielleicht in diesem
am 16.06.2011 - 13:49 Uhr
vielleicht in diesem zusammenhang interessant:
http://www.drupalcenter.de/node/24064#comment-127299
||||||||||||||||||||||||||
www.diesachbearbeiter.de
||||||||||||||||||||||||||
Die selbe Aufgabe
am 22.06.2011 - 17:10 Uhr
Hi,
ich bin absoluter Drupal Neuling und stehe vor einer ähnlichen Aufgabe, das Feeds Modul könnte Abhilfe verschaffen.
Ich möchte Feeds nach Schlagwörter einlesen (Bsp. "Bosch", oder "Siemens"...), dann möchte ich nur News zu dem Schlagwort erhalten.
Bin ich auf dem richtigen Dampfer mit Tags oder Nodes wie in dem tutorial Beispiel beschrieben?
Hier
WIe hast du die folgenden Punkte gemacht?
- Kategorien als Taxonomy importiert - check
- Tags als Taxonomy importiert - check
- Inhalte importiert und mit Usern und Kategorien verknüpft - check
da tut sich bei mir nichts, die Tags werden nicht angezeigt und es werden irgendwelche feeds eingelesen (spiegel).
Viele Grüße,
Banditblau