Calcul avec flexicontent

8 months 1 week ago #68872 by id-pop
Bonjour,
Je suis en train de réaliser un site de formation. Chaque formation comporte plusieurs séquences (deux dans l'exemple ci-dessous) et chaque séquence comporte une ou plusieurs sous-séquence. Comme les formations peuvent comporter des sous-séquences semblables, je procède de la manière suivante :
J'ai créé deux types de contenus :
- Sous-séquence
- Formation
Les champs présents dans ces types de contenus sont (en réalité, il y a plus de champs mais pour éviter que l'exemple soit incompréhensible, j'ai simplifié) :
- Sous-Séquence :
- Titre : champ natif
- Durée : champ texte avec masque horaire (00:00)
- Formation (pour simplifier, je ne mets que deux "modules":
- Titre de la séquence 1 : champ texte
- Sous-séquence en lien 1 : champ relation (pour sélection un ou plusieurs articles de type "séquence"
- Séquence 1 : champ load module (module séquences en lien 1)
- Titre de la séquence 2 : champ texte
- Sous-séquence en lien 2 : champ relation (pour sélection un ou plusieurs articles de type "séquence"
- Séquence 2 : champ load module (module séquences en lien 2)
Dans le template en vue détail, je n'affiche que les champs "titre" et "séquence"
J'ai créé également en parallèle deux modules :
- Module séquences en lien 1
- Module séquences en lien 2
Chacun des modules est configuré de la même manière :
- Liste des articles : sélection :
- Types : inclure "sous-séquence"
- Elément connexe "sous-séquence en lien (1 ou 2 en fonction du module)
- Affichage : sélection des champs
- Custom fields : "description" et "durée"

Ma question est la suivante :
Comment faire pour calculer automatiquement la durée d'un module et la durée d'une formation pour pouvoir l'afficher en vue catégorie et/ou en vue détail ?


Exemple
Sous-séquences créées :
- SS1 : 00:10
- SS2 : 00:15
- SS3 : 00:20
- SS4 : 00:05
La formation 1 comporte :
- Séquence 1 qui comporte SS1 + SS2 + SS3
- Séquence 2 qui comporte SS2 + SS4

Je souhaite donc afficher en vue détail :
"Formation 1"
" Durée totale : 01:05 "
" Séquence 1 "
" Durée séquence 1 : 00:45"
" SS1 : 00:10"
" SS2 : 00:15"
" SS3 : 00:20"
" SS4 : 00:05"
" Séquence 2 "
" Durée séquence 2 : 00:20"
" SS2 : 00:15"
" SS4 : 00:05"

Merci !!

Please Log in or Create an account to join the conversation.

8 months 1 week ago #68882 by ggppdk
Hello

if only for displaying,
-- but not for searching

you can do like this
- create a text field
- create a custom layout for it and select it in field configuration
- and inside the custom layouts use the value of other fields via the array:

$item->fieldvalues


e.g. the value of fields 45 and 57
will be inside:

$item->fieldvalues[45]

$item->fieldvalues[57]



-- FLEXIcontent is Free but involves a big effort on our part.
Like the our support? (for a bug-free FC, despite having a long list of functions) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing with a 5-star review. Thanks!

Please Log in or Create an account to join the conversation.

8 months 1 week ago #68885 by id-pop
I will try. Thanks a lot. You're the Best !!

Please Log in or Create an account to join the conversation.

8 months 1 week ago #68886 by ggppdk
Hello

while making this you should turn ON error reporting in Global configuration
to be able to see php notices and warning

e.g.

$item->fieldvalues[45]


is always an array


-- FLEXIcontent is Free but involves a big effort on our part.
Like the our support? (for a bug-free FC, despite having a long list of functions) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing with a 5-star review. Thanks!

Please Log in or Create an account to join the conversation.

8 months 1 week ago #68900 by id-pop
Hi,
I have tried to find by myself but I don't really understand your explainations.
What do you mean by "create a custom layout " ? Is it in "viewing > value display > values layout" of the created text field ? Do I have to keep a "time" mask ?
And what do you mean by "use the value of other fields via the array" ? Do I have to create a php file ?
Thanks

Please Log in or Create an account to join the conversation.

8 months 1 week ago - 8 months 1 week ago #68925 by ggppdk
Hello

steps:

1. copy file:
plugins/flexicontent_fields/text/text/tmpl/value_default.php

as (new filename)
plugins/flexicontent_fields/text/text/tmpl/value_mycustom.php

2. in field configuration at "Viewing" TAB at parameter value layout select the new layout

3. edit new file (value_mycustom.php)
and use
if ( isset($item->fieldvalues[45][0]) )
{
  echo '(First) value of field with ID 45 is : '  .  $item->fieldvalues[45][0];
}

or use for more complex fields:
if ( isset($item->fieldvalues[45][0]) )
{
  echo '(First) value of field with ID 45 is : ' .  print_r( $item->fieldvalues[45][0] , true);
}


-- FLEXIcontent is Free but involves a big effort on our part.
Like the our support? (for a bug-free FC, despite having a long list of functions) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing with a 5-star review. Thanks!

Please Log in or Create an account to join the conversation.

8 months 1 week ago #68931 by id-pop
Hi,
Thanks. I have created the fied and the new plugin template but I think I am missing elements...

Here is what I have done :

Fields for "sous-sequence" type (type id = 1) :
- Title
- Durée (field_id=166) : text field with time mask

Modules :
Module "sequence 1" :
- Article selection > Types : "sous-sequence" (type_id=1)
- Article selection > items : "Séquences en lien 1" (field_id=213)
- Display : select fields > custom fields : durée (field_id=166)
Module "sequence 2" :
- Article selection > Types : "sous-sequence" (id=1)
- Article selection > items : "Séquences en lien 1" (field_id=230)
- Display : select fields > custom fields : durée (field_id=166)

Fields for "Formation" type (type id = 2):
- Title
- Séquences en lien 1 (field_id = 213) : relation from "sous-sequence" type
- Séquence 1 mod (field_id = 310) : loadmodule "sequence 1"
- Séquences en lien 2 (field_id = 230) : relation from "sous-sequence" type
- Séquence 2 mod (field_id=311) : loadmodule "sequence 2"
- Durée totale (field_id=412) : textfield with value_custom.php fdisplay (not displayed in formular)
- Durée séquence 1 (field_id=413) : textfield with value_custom.php fdisplay (not displayed in formular)
- Durée séquence 2 (field_id=414) : textfield with value_custom.php fdisplay (not displayed in formular)

Template "formation" :
- Title
- Durée totale (field_id=412)
- Séquence 1 mod (field_id = 310)
- Durée séquence 1 (field_id=413)
- Séquence 2 mod (field_id=311)
- Durée séquence 2 (field_id=414)

Items :
item_id=1 :
- Type_id=1
- Title : SS1
- Durée (field_id=166) : 00:25
item_id=2 :
- Type_id=1
- Title : SS2
- Durée (field_id=166) : 00:05
item_id=3 :
- Type_id=1
- Title : SS3
- Durée (field_id=166) : 00:30
item_id=4 :
- Type_id=2
- Title : F1
- Séquences en lien 1 (field_id = 213) : item_id = 1 & 2
- Séquences en lien 2 (field_id = 230) : item_id = 2 & 3

It should display :
- F1
- Durée totale : 01:05 (00:25 + 00:05 + 00:05 + 00:30)
- SS1 : 00:25
- SS2 : 00:05
- Durée séquence 1 : 00:30 (00:25 + 00:05)
- SS2 : 00:05
- SS3 : 00:30
- Durée séquence 2 : 00:35 (00:05 + 00:30)

Thanks for your help

Please Log in or Create an account to join the conversation.

8 months 5 days ago - 8 months 5 days ago #68980 by ggppdk
Hello

please do it in steps, edit file:
plugins/flexicontent_fields/text/text/tmpl/value_mycustom.php

Remove all code from it !
and do the following

Example:
Field 45 is number
Field 46 is number

and e.g. we want the sum of them
<?php
$val45 = !empty($item->fieldvalues[45])
  ? $item->fieldvalues[45][0]
  : 0;

$val46 = !empty($item->fieldvalues[46])
  ? $item->fieldvalues[46][0]
  : 0;

echo "Sum of fields is : " . ($val45 + $val46);

-- Also remember to go to the you new custom text field and set a default value e.g. "Dummy"
and set it to be loaded always, thus the field will be shown even if it has no value
(the field does not need value, since it is show values of other fields)


-- FLEXIcontent is Free but involves a big effort on our part.
Like the our support? (for a bug-free FC, despite having a long list of functions) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing with a 5-star review. Thanks!

Please Log in or Create an account to join the conversation.

Moderators: vistamediajoomlacornerggppdk
© 2018 Flexicontent. All Rights Reserved.