drupal devel generate szolgáltatás bővítése

aboros képe

rengeteget használom a devel generate modult. jellemzően drushból. amíg csak fejlesztői változatokba generáltatok tartalmat, remekül elvagyok a sok lóremmel és “adásszünet” képpel. abban a fázisban viszont, mikor már a smink is készül, nagyon zavaróak tudnak lenni ezek a teljesen fiktív tartalmak. grafikust zavarja az adásszünetkép rikító figyelemelvonása, ügyfél nem érti mi ez a sok blabla szöveg, oktatóvideó készítésekor zavaró a latin kiejtésem :)

a képekre vonatkozóan vannak már törekvések, foltok is:
http://drupal.org/node/1133310
http://drupal.org/node/1238344

szeretném, ha lehetőségem lenne megmondani a devel generatenek, hogy éppen milyen adatforrásokat használjon a tartalmak, felhasználók, taxonómia kifejezések generálásához. ezt jellemzően drushból fogom hívni, felhasználói felületet nem várok.

példa:
drush genc 100 8 --titles:my-title-file.txt --images:path/to/my-images
generálj 100 nodeot, nodeonként legfeljebb 8 commenttel, címeket a my-title-file.txt -ből válogass, képeket a path/to/my-images könyvtárból.

ugyan ilyen elven szeretném a drush genu és drush gent parancsokat is használni.

érdekelne, hogy kinek van kedve és tudása megvalósítani a fentieket? mennyi munkaóra nagyjából ennek kivitelezése? lenne e még valaki (rajtam kívül persze:) aki anyagilag támogatná a munka elvégzését?

kérlek ne írj nekem ezzel kapcsolatban privátot, hozzászólásokban várom a kérdéseket, javaslatokat, óraszámajánlatokat, szponzori jelentkezést.

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
york képe

A szoveg torzse maradna ipsum?
Vagy ott is lehetne forrast megaddni?
Es akkor meg el lehet gondolkodni a taxonomiarol es a kulonbozo mezokrol.

0
0
Bálint képe

Szeptember elejétől szívesen foglalkoznék a feladattal, ha mások is éreznek kedvet hozzá, akkor akár velük közösen.

Érdekes lehet egy hook bevezetése, amely megengedi, hogy más modulok szolgáltassák a szöveget és a képeket, onnantól bővülnének a lehetőségek, pl. flickr tag megadása a képek használatához stb.

Hogy mennyi óra? Érzésre minimum 15, de ennek megbecsüléséhez jobban bele kellene mélyednem a Devel Generate működésébe, amire sajnos most nincs időm. Részemről úgy gondolom, elég motíváció, hogy egy ilyen modul / patch gazdagítaná a drupal.org profilomat ahhoz, hogy azt mondjam, szívesen eltekintek egy szigorúan vett árképzéstől.

3
0
hosszu.kalman képe

Csatlakozom! Egy code sprint-en összedobhatnánk, mondjuk a szeptemberin, már ha le tudsz/akarsz majd jönni Szegedre.

3
0
segi képe

Code sprinten én is belemásznék, jól hangzik!

2
0

Drupal developer at Cheppers

Bálint képe

Csináljuk meg akkor a szeptemberi kódsprinten, nagy lesz!

0
0
aries képe

Egy CSV-táblázat nem lenne egyszerűbb, ahol az első sor tartalmazza mezők nevét, mondjuk a következő formában: „user:name”, „article:field_body”, „vocabulary:title” stb?

0
0
vorvor képe

Ez a módszer azért is jó lenne, mert teszteléskor, mondjuk egy views listánál sokszor nehéz leszűrni, hogy valóban a megfelelő tartalmak jelennek-e meg a sok lipsum szöveg miatt. Így lehetne koherens a szerző-tartalom, és rögtön látszana melyik tartalom kié.

0
0
hosszu.kalman képe

Pont azt veszíti el ami a lényege, hogy ne kelljen időt tölteni a tartalom létrehozásával. Ha lenne időm egy ilyen táblázatot kitölteni, akkor felvenném azt a pár tartalmat manuálisan

1
0
aries képe

Nálam ennél sokkal összetettebb igények szoktak felmerülni, pl. felhasználó létrehozása különböző alapértelmezett nyelvekkel, időzónával, többnyelvű tartalmak, hierarchikus taxonómia, mindezek jogosultságok szerinti létrehozása, nemlatin alapú ABC-k használata, stb.stb.

1
0
aboros képe

de szerintem ez már nem teszt adat. vagy igen? ha ez végleges adat, arra kiváló a feeds és roppant rugalmas és létező tartalmakat is tud "frissíteni" és akár saját elemzőket is írhatsz bár van szinte mindenre.

0
0

-
clear: both;

aboros képe

nagyon izgalmas felvetések. jó lenne minél könnyedebb megoldást találni. persze tudjon mindent :) az alap probléma :)

arra mindenképp igény lenne, hogy a forrásfileban meg tudjam határozni node entitás esetén, hogy melyik lehetőség melyik userekre vonatkozik. valóban erre praktikus egy csv file lenne.

másik ami eszembe jutott az eddig felvetesék nyomán, hogy a mezőket is kéne valami okos módon irányítani. mondjuk f_ -al kezdjük kapcsolóként a mezőneveket, ha bármelyik generálandó bundlebe van az a mező, bumm, a megadott forrásfilet használjuk. persze erre is kéne akkor, hogy melyik mező milyen értéket vehet fel per author, szóval itt is praktikusan akkor csv, * jokerrel.

és még.. és még..
tadaaa, ott vagyunk, hogy ez már pihekönnyű nem lesz, sőt feje búbjától a talpáig kell átnyálazni, félig átírni a devel generate. :(

nem egyszerűbb akkor bepakolni hamar egy feedst és azzal olvastatni a csvket, sutty sutty be? tartok tőle, hogy igen. azt a vonalat, hogy a szerző alapján választódjon ki véletlenszerűen a title vagy x mező, szerintem nem kell ide beépíteni, akkor már feedst használok és bumm.

egyszerűen csak megadhassak más random forrást is a loremen kívül. nekem amúgy úgy tűnik arra megy a devel_generate, hogy hookokat fog adni arra, hogy modulok beleszólhassanak a generálási folyamatba. nemtom, utánaolvasok még, de ahogy nézegettem a devel_generate modult elég sok függvényt érintene egy ilyen kis beavatkozás, nem két óra :)

0
0

-
clear: both;

Robert Petras képe

Érdeklődni szeretnék, hogy vannak-e új fejlemények a fenti Devel Generate bővítésére tett kezdeményezéssel kapcsolatban?

Egy év távlatából nem lehet tudni, hogy sikerült-e megtartani a 2011-es kód sprintet és ha igen, akkor milyen eredménnyel.

Megtennéd, hogy adsz egy friss helyezetjelentést a projektről (elő, inaktív, stb)? Előre is köszönöm!

1
0
Sk8erPeter képe

Erre a topicra most tök véletlenül találtam rá, de nagyon érdekesnek tűnik, és engem szintén érdekelne, ezzel mi újság, mikre jutottatok! :)

0
0
Sk8erPeter képe

Lenne is egy ötletem rá, én hogyan indulnék neki:
épp ma találtam egy itt ajánlott modult a devel_generate kiegészítéseként, mégpedig a Faker modult:
https://drupal.org/project/faker
ez egy kiegészítő library-vel együtt működőképes:
https://github.com/fzaninotto/Faker/archive/v1.1.0.tar.gz

Biztosít egy hookot, ami a hook_node_presave() implementációjában hívódik meg, és ahol a Faker ún. providereit érjük el, aminek különböző tulajdonságai vannak random generálva, és ezekkel tudjuk módosítani a node mezőit, így például egy Lorem ipsum-blabla helyett lehet az article típus címe egy random személynév/cégnév/akármi, és ugyanígy lehet a szóbanforgó ronda adásszünet-kép is helyettesítve tetszőleges képpel, tetszőleges helyről behozva. Legalábbis ha minden igaz, megvalósítható ezzel is.
A "providerek" külön-külön osztályok, ezek alapból elérhetők - ilyen Provider osztályok vannak, mint az Address, Company, DateTime, Internet, Lorem, Miscellaneous, Person, PhoneNumber, UserAgent, meg egy Base osztály, amit a többi bővít -, de itt jön a lényeg, hogy saját osztály is hozzáadható providerként egy hookon keresztül. Abban pedig elég szabadon variálhatjuk a kódot, és majd egy hookban felhasználhatjuk a vonatkozó részeket.

Itt van a kapcsolódó hook-példa:

  1. /**
  2.  * Alter the instantiated faker object. This gives modules a method for adding
  3.  * custom providers in a centralized place without needing to do it within the
  4.  * generate hook. See the Faker library documentation for information about
  5.  * creating custom providers.
  6.  *
  7.  * @param $faker An instantiated Faker\Generator object.
  8.  */
  9. function hook_faker_alter($faker) {
  10. $faker->addProvider(new ExampleProvider($faker));
  11. }
  12.  
  13. /**
  14.  * Alter a node object that has generated by devel_generate, but before it is
  15.  * saved. This hook itself is called from hook_node_presave, so anything that
  16.  * can be done to the node object in that hook can also be done here.
  17.  */
  18. function hook_faker_node_generate($node, $faker) {
  19. if ($node->type == 'bio') {
  20. $node->title = $faker->name;
  21.  
  22. // Generate an opening paragraph, followed by a 2-4 sections comprised of
  23. // a heading followed by 1-3 paragraphs, each with 5-10 sentences.
  24. $body = '<p>' . $faker->paragraph(3,5) .'</p>';
  25. for ($i = 0; $i < rand(2,4); $i++) {
  26. $body .= '<h3>' . $faker->sentence . '</h3>';
  27. for ($j = 0; $j < rand(1,3); $j++) {
  28. $body .= '<p>' . $faker->paragraph(rand(5,10)) . '</p>';
  29. }
  30. }
  31. $node->body['und'][0]['value'] = $body;
  32. $node->body['und'][0]['format'] = 'full_html';
  33.  
  34. $node->field_email['und'][0]['value'] = $faker->email;
  35. $node->field_phone['und'][0]['value'] = $faker->phoneNumber;
  36. }
  37. }

A legrövidebb példa a legkisebb Provider-osztályból csak szemléltetésként:

namespace Faker\Provider;
 
class PhoneNumber extends \Faker\Provider\Base
{
  protected static $formats = array('###-###-###');
 
  /**
   * @example '555-123-546'
   */
  public static function phoneNumber()
  {
    return static::numerify(static::randomElement(static::$formats));
  }
}

Most így elsőre valószínű, hogy nem teljesen érthető, de érdemes megnézni a kódját, meg kipróbálni a modult (persze a fentebbi minimális kódolás szükséges hozzá, de a példa egy az egyben felhasználható, kivéve nyilván alapból a field_email, field_phone mezőket), mert ötletadónak elég jó lehet, szerintem lehetne vele mit kezdeni épp a kívánt célra is.

3
0
zionduc képe

Pedro Cambra megírta a modult: https://drupal.org/project/devel_image_provider

2
0

Írj rám, ha érdekel a Győri Drupal Használói Találkozó.