Přeskočit přímo na text


externí import do drupalu?

Kategorie: Jak na to?
Týká se verze: Drupal 6.x

Ahoj, řeším teď problém, jak elegantně vytvořit můstek z jedné offline aplikace pro vkládání obsahu na drupal stránky, předpokládám export do db dle určitýho schéma (CCK pole) a pak přes ftp upload obrazku.. máte někdo nějakou zkušenost v tomto ohledu?

díky moc za tipy, jakýkoliv

 

Ja som nedavno robil exporty

Ja som nedavno robil exporty z drupal ua este ma caka jeden import. Este som sa na to nepozeral, ale vypisal som si cez devel $node pri $op = presave(teraz ma nenapadne ktory to bol hook) a podla tejto struktury si vytvorim objekt pre kazdy zaznam a ulozim to cez node save.

no to už je ovšem vyšší

no to už je ovšem vyšší drupalovská ;-D

Já to osobně neřešil, ale je

Já to osobně neřešil, ale je na to modul;-) Nejsíš tento: http://drupal.org/project/deploy Ale jelikož teď drupal.org nejede, tak to nemohu ověřit

ExportImport API

nějak mi uniká při pročítání

nějak mi uniká při pročítání výše zmíněných modulů, jak probíhá ta komunikace, aniž by se kdokoliv do drupalu logoval a něco tam pouštěl.. já potřebuju do externí aplikace dát do menu „Export to drupal“ vč. fotek a obsahu..

metoda se spojit rovnou s mysql a přidat do tabulek data a na ftp uploadnout fotky je špatná? připadá mi to nejjednodušší řešení, tedy pokud to není můj blud ;-D

sreality to ale myslím mají přes XML

to neni tak jednoduchy

to neni tak jednoduchy protoze obsah(stejne jako treba kategorie) neni v jedne tabulce(je tam node, node_revisions + field tabulky, term_node atd – obslouzit to tak aby programator na nic nezapomnel a DB byla konzistentni nebude zadna sranda. zrejme Vam jde o „mustek“ mezi eshopem a vasim fakturacnim systemem, obavam se ze tohle by bylo dilo za statisice Kč a musela by tam byt jasna a nemenna struktura dat. neco by se mozna dalo vymyslet s tim xml…

jasná a neměnná struktura dat

jasná a neměnná struktura dat tam je, je to databaze realit, vsechna pole jsou presne definovana a je mi jasný, že to legrace nebude

musim najit vsechny tabulky co se pri zadani node naplnujou, soubory, cck, node data, url aliasy, autora apod..

s tim xml vůbec netuším jak se to potom praktikuje, uploadne se někam xml a obrazky a drupal to pri cronu natahne? fakt netuším.. díky všem za radu..

Zkuste se podívat i na modul

Zkuste se podívat i na modul Node Import (nejsem si jistej názvem). Dokázal importovat z CSV. Netusim, jestli umí i nějaké automatické funkce, ale možná že ano – já je tenkrát nepotřeboval…

dík, node import používám a

dík, node import používám a funguje dobře, snad by řešení, kdy by to bylo automatické (při cronu) a uživatelská aplikace jen uploadnula csv a obrázky, přemýšlím nad tím už pár hodin..

Koukal jsem, že už jsi psal

Koukal jsem, že už jsi psal do Issue Queue k tomuhle modulu. Našel jsi tam i tenhle odkaz na Node Import vie CRON http://drupal.org/project/ni_cron Je to k něčemu?

našel, teď jsme instaloval,

našel, teď jsme instaloval, dám vědět jak to dopadlo

Ani v psaní vlastního modulu

Ani v psaní vlastního modulu bych problém neviděl.. Nodeimport je fajn, ale co si pamatuju, tak xml neumí..

Ale viděl bych schůdnej následující scénář:
  • Externí aplikace vyexportuje XMLko a pošle ho (ftp/ssh, http) na server – do domluvenýho adresáře.
  • Budeš mít modul, co v hook_cron koukne na xmlko v domluvenym adresáři a rozparsuje. Tím že jsi v modulu, můžeš používat api na node_save – ručně to sypat do tabulek bych si netroufal..
  • Akorát bude třeba držet nějak informaci o mapování drupal nody ↔ externí záznamy. U nodu si můžeš držet informaci o jeho id v externím systému třeba jako CCK pole.
  • Při synchronizaci koukneš, jestli už takovej nod s externím id máš – provedeš update, jinak vytvoříš novej

vcelku chápu, ale na tohle si

vcelku chápu, ale na tohle si netroufnu, nutno přiznat ;-(

Já jsme dneska náhodou

Já jsme dneska náhodou narazil na nějaké FEED API který automaticky dokáže ukládat XML do podoby node včetně klíčování do CCK polí. Nezkoušel jsem to, jen dávám tip…

no nakonec to asi dopadne

no nakonec to asi dopadne přes CSV node_import, klient stejně všechny příspěvky kontroluje a takhle bude aspon vedet, co tam dává

z uživatelské aplikace se na ftp uploadne CSV a fotky, to se zobrazí v seznamu importu a správce www jen odklikne import..

ale na FEED API mrknu

a co nějak takhle?

našel jsem tenhle script, funguje fajn, pokud by se tohle dalo nějak propojit s XML, nebo CSV importovaným na ftp, mělo by to fungovat, ne? nenapadá mě teda jak sem načítat hodnoty z externího souboru, ale snad jo…? nebo nechat si exportovat data v tomhle formátu a pak je načítat po jednom?

<?php
// Construct the new node object.
$node = new stdClass();

// Your script will probably pull this information from a database.
$node->title = "My imported node";
$node->body = "The body of my imported node.\n\nAdditional Information";
$node->type = 'story';   // Your specified content type
$node->created = time();
$node->changed = $node->created;
$node->status = 1;
$node->promote = 1;
$node->sticky = 0;
$node->format = 1;       // Filtered HTML
$node->uid = 1;          // UID of content owner
$node->language = 'cs';
// If known, the taxonomy TID values can be added as an array.
//$node->taxonomy = array(2,3,1,);

node_save($node);
?>

taky mě napadlo – a vyzkoušel jsem, že to funguje – když dám několik těchto scriptů za sebe, jen změním obsahy samozřejmě, naimportují se všechny, takže čistě teoreticky, pokud mi z externí apliakce vypadne tenhle kod, můžu si to takhle hromadně naimportovat? ptám se místních Drupal Guru, jestli nemůže nastat nějakej extra problém, zhroucení systému, apod.. tenhle script dávám do těla článku – PHP vstupní formát samozřejmě, při zobrazení článku se ten kod provede a nové nody se uloží, myslím, že CCK pole by se taky daly takhle plnit, ne? na základě $node->type = ‚ccknodetype‘.

no a tohle dej do vlastniho

no a tohle dej do vlastniho modulu, kterej se bude ptat (nejspis v fci hook_cron) externi databaze.. a mas import za sto tisic, co tu nekdo odhadoval:)

tak už mi to funguje i dál,

tak už mi to funguje i dál, CCK pole tam dát je jednoduchý, jediný pole, který mi tam nejde je image field, nedokážu tomu vnutit správnou syntaxi.. prosím o radu..

mám tam filefield ‚field_picture_test‘, typ image, 3 hodnoty [0], [1] a [2], ale jak do každé z nich uložit hodnotu, to je otázka

myslel jsem, že tohle bude stačit, ale ne..

<?php
$node->field_picture_test[0]['value']  = 0.jpg;
$node->field_picture_test[1]['value']  = 1.jpg;
$node->field_picture_test[1]['value']  = 2.jpg;
?>

protože na např. select field se třema hodnotama tohle stačí

<?php
$node->field_select[0]['value'] = 2;
?>

podivej se na strukturu node

podivej se na strukturu node objektu..

<?php
 dsm(node_load(CISLO_EXISTUJICIHO_NODU_S_OBRAZKEM));
?>

musis poskytnout ty samy informace pri programovym vytvareni nodu

ještě mě napadá, jelikož jsem

ještě mě napadá, jelikož jsem rozjel externí XML s daty, dá se v node těle použít podmínka?

dejme tomu, XML má 3 záznamy, tak já dám

<?php
$index = 1;
if($index > 3)
{
break;
}
//prováděj script s ukladanim nodů, tj, uloží 3
}
?>

<?php field_picture_test

<?php
field_picture_test (Array, 3 elements)
0 (Array, 10 elements)
fid (String, 2 characters ) 29
list (String, 1 characters ) 1
data (Array, 3 elements)
uid (String, 1 characters ) 1
filename (String, 16 characters ) 123456789-yy.jpg
filepath (String, 36 characters ) sites/default/files/123456789-yy.jpg
filemime (String, 10 characters ) image/jpeg
filesize (String, 5 characters ) 17764
status (String, 1 characters ) 1
timestamp (String, 10 characters ) 1263773015
1 (NULL)
2 (NULL)
?>

Necpi to do nodu, ale do

Necpi to do nodu, ale do vlastního modulu. daleko líp se pracuje s kódem a celkově to je jinak cesta do pekel..

no pokusím se, zkušenost

no pokusím se, zkušenost s tím bohužel ještě nemám.. -(

Na Interval.cz vyšela nedávno

Na Interval.cz vyšela nedávno série článků pro začátečníky, jak psát modul.

než proniknu do tajemnství

než proniknu do tajemnství výroby modulu, je možný to řešit v těle node? i s podmínkou a zacyklením vytváření jednotlivých nodů?

kurnnik, pořád tam nemůžu

kurnnik, pořád tam nemůžu dostat ty cck filefield obrázky.. vím, že je to jen v syntaxi. ;-( ale už mi importuje z externího xml x nodes najednou, tak jsme spokojenej, ještě ten obrázek a je to vyřešený (doufám)

Jak uložit víc obrázků najednou do Array?

Tak tenhle kod funguje! Potřeboval bych poradit, jak ukládat víc obrázků najednou ($node->field_picture_test[0], $node->field_picture_test[1], $node->field_picture_test[2]), pole imagefield obsahuje 3 obrázky v Array a mě se nedaří tenhle kód přepsat tak, aby se uložilo víc, než jeden obrázek, díky za tip

<?php
function drupal_add_existing_file($file_drupal_path,$uid=1,$status=FILE_STATUS_PERMANENT) {
  $file=(object)array(
    'filename' =>basename($file_drupal_path),
    'filepath' =>$file_drupal_path,
    'filemime' =>file_get_mimetype($file_drupal_path),
    'filesize' =>filesize($file_drupal_path),
    'uid'      =>$uid,
    'status'   =>$status,
    'timestamp'=>time()
  );

  drupal_write_record('files',$file);

  return field_file_load($file_drupal_path);
}

$file_drupal_path =  "sites/default/files/170703750-img_2408.jpg";
$node = new StdClass();
$node->type = 'importtest';
$node->body = 'body';
$node->title = 'Osm';
$node->field_picture_test = array(drupal_add_existing_file($file_drupal_path));
$node->uid = 3;
$node->status = 1;
$node->active = 1;
$node->promote = 0;
node_save($node);
?>

Update..

můj XML import funguje dle mýho ideálně, jediný co zatím nemám vyřešený je příspěvek nad tímhle, tj „Jak uložit víc obrázků najednou do Array?“, je mi jasný, že je to jen v syntaxi, ale fakt už nevím kde, zkusil jsme snad už všechny možnosti ;-(

Aktualizace

hoj chtěl jsem se zeptat, zda si bude Node Import brát aktuální data. Chtěl bych to použít na zobrazení produktů z e-shopu pod článek a chtěl bych aby se mi průběžně aktualizovaly ceny.

http://drupalmodules.com/…/fe

http://drupalmodules.com/…/feed-import

ještě jsem ho nevyzkoušel, ale vypadá slušně

Myslim ze to chcel pre Drupal

Myslim ze to chcel pre Drupal 6, cize toto mu nepomoze. Ja to riesim modulom feeds. A import pomocou csv.

Poslat nový komentář

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
  • You can use Texy! to format and alter entered content.
  • Povolené HTML značky: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <p> <br> <b> <i> <h2> <img> <pre> <sup> <sub> <pre class="php"> <span class="php-keyword1"> <span class="php-var"> <span class="php-num"> <img class="screenshot"> <p class="beginner"> <a class="greybox"> <h3> <h4>

Více informací o možnostech formátování

Mollom CAPTCHA (play audio CAPTCHA)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated.

Drupal meet-up mobilni web 2011

Hledat

Přihlášení

Poslední komentáře