|
|
 |
createAndPublishObject() et champs de type xmlblock |
 |
Vous devez être connecté pour utiliser le forum. Vous pouvez le faire ici.
|
Auteur
|
Message
|
|
Peggy Gadiou
|
Mercredi 11 Juin 2008 5:25:50 pm
createAndPublishObject() et champs de type xmlblock
Bonjour,
J'utilise ezpublish 4.
Je suis en train de créer un import de données automatique et j'utitlise pour cela la fonction createAndPublishObject() de la classe eZContentFunctions.
Lorsque j'insère des données dans des champs dont le datatype est text bloc ou text line ou mail ou url ou image tout fonctionne à merveille !! mais dès que je veux insérer du texte (plusieurs lignes avec balises html) dans un champ de datatype xmlbloc, rien ne se fait !!
merci de m'aider au mieux...
Peggy
riastudio.fr
|
|
Philippe VINCENT-ROYOL
|
Mercredi 11 Juin 2008 5:48:50 pm
Re: createAndPublishObject() et champs de type xmlblock
Bonsoir,
En effet il faut transformer ton texte en xml comprehensible pour ezpublish .. bon je vais te donner une partie du code que j utilise pour le faire 
//fetch
$testnode = eZFunctionHandler::execute( 'content', 'node', array( 'node_id' => $obj->attribute('main_node_id')));
$testobject =& $testnode->object();
$parser = new eZSimplifiedXMLInputParser( $testobject->attribute( 'id' ), true);
$parser->setParseLineBreaks( true );
$texte = $rows[$i][$value2];
$txt_ini = $texte;
$texte = nettoyage($texte);
$doc = $parser->process($texte);
// Creation de la structure xml
if(!is_object($doc))
{
echo "\r\nno dom document returned by xml parser\r\n";
$errors = $parser->getMessages();
foreach ( $errors as $error )
{
echo '* ' . $error . "\r\n";
}
echo $txt_ini;
echo "###################";
echo $texte;
echo "@@@@@@@@@@@@@@@@@@@";
echo string_convert($texte);
}
$xmlstring = eZXMLTextType::domString( $doc );
foreach( $testobject->contentObjectAttributes() as $contentObjectAttribute )
{
if(isset($xmlstring) && $xmlstring!=""
{
if( array_search($contentObjectAttribute->attribute( 'contentclass_attribute_identifier' ),$valid)!==FALSE)
{
$contentObjectAttribute->setAttribute( 'data_text', $xmlstring );
$contentObjectAttribute->store();
}
}
}
bon il y a des lignes que tu peux supprimer mais l idee est là.. en gros tu crees ton objet sans remplir les champs xml
tu recuperes l id de l objet que tu viens de creer
et via le code tu remplis les champs xml 
(la fonction nettoyage verifie que mes balises html soit correct.. si tu as un texte du type <p><u>texte </p> ezpublish ne va pas du tout aimer )
Si besoin de plus d aide contacte moi par mail : vincent.royol@gmail.com
A+
|
|
Peggy Gadiou
|
Mercredi 11 Juin 2008 6:11:57 pm
Re: createAndPublishObject() et champs de type xmlblock
Est-il possible alors de modifier les valeurs en bon xml avant de tout transmettre à la fonction create.. ??? car ca m'éviterais de tout recoder...
mais si il faut passer par là...
Autre question, est-ce qu'avec ta méthode tu as pu enregistrer des images...
Merci
riastudio.fr
|
|
Philippe VINCENT-ROYOL
|
Jeudi 12 Juin 2008 10:08:44 am
Re: createAndPublishObject() et champs de type xmlblock
Selon cette methode il te faut l id de l objet. Donc celà sera dur de tout balancer d un coup.
Pour les fichiers j utilise le createAndPublishObject comme suit:
$attributes_file = array( 'name' =>$nom_fichier,
'credit' => '',
'file' => $fichier
);
$params_file['creator_id'] = 14;
$params_file['parent_node_id'] = $object->attribute("main_node_id" ;
$params_file['class_identifier'] = 'file';
$params_file['attributes'] = $attributes_file;
$obj_file = eZContentFunctions::createAndPublishObject( $params_file );
ou $fichier est le chemin ou se trouve ton fichier. Avec cette methode le fichier est contenu dans un noeud.
Voilà en espérant t avoir aider
|
|
|
 |
|