Summera innehåll från flera text-fält i ett nytt fält.

Göran's picture

Hur ska man bära sig åt för att infoga innehåll från flera befintliga fält, (av typen textfält) till att bli ett innehåll i ett annat fält (som är befintligt, tomt och skapat för ändamålet)?

Finns det någon modul?

Denna lösning har jag hittat, men den är inte "användarvänlig": https://www.drupal.org/node/1000200. Exemplet rör ett fält till ett annat, men det går väl att utvidga så att man får fem fältvärden, eller?

I det aktuella fallet vill jag visa ett värde i fältet som kan finnas som värde i någon av fem andra olika andra fält.

visatFältvärde = Fältvärde1 + Fältvärde2...(n)

( Fyra fält av fem är alltid tomma, och det är svarens innehåll som bestämmer vilket, så man måste addera innehållet från alla fälten för att det ska funka)

Comments

Det finns en module som heter Computed fields

Göran's picture

Testade modulen https://www.drupal.org/project/computed_field, men den kräver goda kunskaper i php, och det har inte jag ;(.

Jag har lyckats skriva en kod, enligt anvisningarna i modulen, som samlar in värdet i från fem olika fält. Den lägger också upp värden i det nya "computed"-fältet, som har samlats in från de fem olika fältens värden.
Fälten som värderna samlas in ifrån ligger i en profile2 profil (entity_type = profile2) som tillägg till användaren. (uid).

När man tittar på en användares uppgifter så har innehållet i från de fem alternativa fälten överförts till det nya fältet av typen "computed"

Problemet är att en visning med Views inte presenterar innehållet för mitt "computed"-fält. Fältet i en Views-lista över användarna, har inget värde = ???
(I Views har jag skapat en "relationship" till aktuell profil2 och värden från de andra profil2-fälten jag använder syns. Fältet "entity_id" finns med i "FIELDS")

Tittar jag i databasen för innehållet i "computed"-fältet så finns bara "entity_id" som identifikation.

Databastabellen för "computed"-fältet har följande fält:

KEY entity_type (entity_type),
  KEY bundle (bundle),
  KEY deleted (deleted),
  KEY entity_id (entity_id),
  KEY revision_id (revision_id),
  KEY language (language)

Hur ska jag gå vidare för att Views ska kunna lista värden i "computed"-fältet?

Vore mycket tacksam för hjälp i denna fråga, kan för lite om "back_end" och php för att lösa problemet.

Så här ser min php-kod ut

NOTERA - Fältens maskinnamn i exemplet är :  field_1_som_ska_samlas_in'...till...'field_5_som_ska_samlas_in'

$field_a = field_get_items($entity_type, $entity, 'field_1_som_ska_samlas_in');
$field_b = field_get_items($entity_type, $entity, 'field_2_som_ska_samlas_in');
$field_c = field_get_items($entity_type, $entity, 'field_3_som_ska_samlas_in');
$field_d = field_get_items($entity_type, $entity, 'field_4_som_ska_samlas_in');
$field_e = field_get_items($entity_type, $entity, 'field_5_som_ska_samlas_in');

$entity_field[0]['value'] = $field_a[0]['value'] . "" . $field_b[0]['value'] . "" . $field_c[0]['value'] . "" . $field_d[0]['value'] . "" . $field_e[0]['value'];

Och Display koden ser ut så här:
$display_output = $entity_field_item['value'];

Finns det någon chans att få hjälp vore jag tacksam.

Bästa Julhälsningar / Göran

// Göran

Annan modul...

maxmannen's picture

Hej,
Kan du inte prova med https://www.drupal.org/project/views_field_view ?
Har inte provat själv (än) men om du skapar en vy med dina värden och sedan bakar in vyn i en ny vy med denna modul så får du både kakan och kan äta upp den.
Med en vy över dina värden kan du ju sortera dem och göra annat som du inte kan göra genom att "bara" slå ihop dem. Inte enkelt i alla fall...

Den här vägen är framkomlig, tack för tipset

Göran's picture

Testade detta med gott resultat. Tack för bra svar, borde ha tänkt på detta...;)
Men har nu bestämt mig för att lösa det med Rules i ställlet.

Det uppstod en tankevurpa (från min sida) i grundupplägget som innebär att om användaren ändra i fältet "Huvudgrupp" så finns det gamla fältvärdena kvar i det f d fältet som varit kopplad som "undergrupp". (Det är undergruppsvärdena som summeras enligt tidigare inlägg i tråden)

Respektive olika undergruppsfält tillhör och visa relaterat till värdena i huvudgruppen. När valet i huvudgruppen ändras så är det ett annat undergruppsfält som får ett värde, istället. (2 stegs listval).

Med Rules kan jag styra vilket undergrupps-fält som ska kopieras över till ett annat fält (typ summa-fält) genom att i steg 1 kontrollera värdet i huvudgruppen och därefter kopiera över värdet ifrån användarens val i respektive undergruppsfält, som kan vara 5 olika fält beroende på huvudgruppens värde. (5 if-satser i rules, som triggar vid spara).

off topic
(Användaren ser olika undergruppsfält (fält-med-val) beroende på valet i huvudgruppen.
Alternativet vore att bara ha ett fält, då med en oändligt mycket längre lista och risken att användaren väljer fel värde)

// Göran

Modulförslag.

Anskelt's picture

Hej, vet inte om jag förstått dig helt och hållet här, men jag tror jag snubblade över en modul för ett tag sedan som skulle kunna hjälpa dig: https://www.drupal.org/project/field_collection

Det är att man skapar ett summeringsfält som innehåller flera olika andra fält. sen är det väl bara att se till att ett av dem enbart kan fyllas i?

Hoppas det hjälper dig.

Field collection ?

Göran's picture

Jag har använt modulen i olika sammanhang.
Men jag tror inte att den fungerar för att summera fält med varandra.
citat:
"A field collection is internally represented as an entity, which is embedded in the host entity. "

Tack för tipset i alla fall ;)

// Göran