FEEDS - Terms Mapping - Mini Modul Hilfe benötigt
am 24.11.2010 - 13:16 Uhr in
In der aktuellen Version des FEEDS Modules, der BETA.10 ist es leider nicht mehr möglich, Taxonomie Begriffe zu mappen, wenn es mehrere durch Kommas getrennte davon in einer CSV Zelle gibt. Bei einer Zelle mit den Inhalten "Auto, Gutscheine" wird ein einziger Taxonomie Begriff "Auto Gutscheine" ausgegeben, anstelle von zwei separaten Begriffen "Auto" und "Gutscheine"
Der Maintainer empfiehlt mir aufgrund meines ISSUES ein ähnliches Mini-Modul einzusetzen, um meine Taxonomie Begriffe einzeln zu mappen.
Einen angepasstenr Feed mit \# als Zellenseparator habe ich erstellt: http://www.gewinnspiele.be/gewinnspielfeed-neu/csv
und wie im Handbuch beschrieben, habe ich einen Mini Modulordner "term_separator" angelegt. Eine term_separator.info mit folgenden Werten reingesetzt:
; $Id: term_separator.info,v 1.0 2010/11/24 12:00:00 thoor Exp $
name = MultiValueCSVParser
description = Create single Terms with Feeds Module
core = 6.x
package = Mini modules
version = VERSION
; Information added by thoor on 2010-11-24
version = "6.x-dev"
project = "term_separator"
und das modul term_separator.module
<?php
define('MULTI_VALUE_CUSTOM_DELIMITER', '\#');
/**
* Extends FeedsCSVParser to explode row cells by a custom delimiter.
*
* Cells that start with \# will be exploded by the delimiter \#.
*
* So a cell that reads:
*
* \#one\#two\#three
*
* will be exploded into an array with the values
*
* 'one'
* 'two'
* 'three'
*/
class MultiValueCSVParser extends FeedsCSVParser {
/**
* Parse all of the items from the CSV.
*/
protected function parseItems(ParserCSV $parser, ParserCSVIterator $iterator, $start = 0, $limit = 0) {
$rows = parent::parseItems($parser, $iterator, $start, $limit);
foreach ($rows as &$row) {
foreach ($row as &$cell) {
if ($cell && is_string($cell) && strpos($cell, '\#') === 0) {
$cell = substr($cell, 2);
$cell = explode(MULTI_VALUE_CUSTOM_DELIMITER, $cell);
$cell = count($cell) == 1 ? array_shift($cell) : $cell;
}
}
}
return $rows;
}
}
Das Mini Modul erscheint in der Modulverwaltung, allerdings beim aktivieren gibts die Fehlermeldung:
Fatal error: Class 'FeedsCSVParser' not found in C:\xampplite\htdocs\gewinn-umsonst\sites\all\modules\term_separator\term_separator.module on line 20
Tja ... und da bin ich wieder am Ende mit meinem Latein. Kann mir jemand nen Tip geben, wie das Modul abzuändern ist, damit dieser Fehler nicht auftritt?
- Anmelden oder Registrieren um Kommentare zu schreiben
Nochmal hochschieb ... Keiner
am 27.11.2010 - 15:22 Uhr
Nochmal hochschieb ... Keiner unserer PHP Cracks hier, der einen Tip für mich hat?
Drupal 7 Screencasts in deutsch!
Also, dem Minimodul fehlt
am 27.11.2010 - 21:56 Uhr
Also, dem Minimodul fehlt anscheinend die Klasse FeedCSVParser.
Das Feed-Modul bringt im Ordner 'plugins' in der Datei FeedParserCSV.inc die benötigte Klasse mit.
Warum die aber (noch) nicht geladen ist, kann ich jetzt auch nicht nachvollziehen, da ich das Feeds-Modul nicht benutze.
Testweise könntest du in Zeile 2 des Minimodules mal ein
include_once('pfad-zum-feedmodul'/plugins/FeedsCSVParser.inc');
einbauen. Damit wird die Datei eingebunden und die Klasse steht dem Mini Modul zur Verfügung.
Das kann aber Nebenwirkungen haben je nach dem ob und wie die Datei später vom Feed Modul eingebunden wird.
Vll. hilft dir das ja weiter