Afficher du php dans un block généré par un module

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,
J'essaye de faire un petit module de météo perso.Il marche très bien en dur, maintenant je souhaite réaliser un module qui génére un block dans lequel s'affiche la méteo.

J'ai récupéré la structure d'un module de base qui affiche hello world

<?php
//////////////////////////////////////////////////////////////////
case 'view' :
      {
       
$bloc = array();
        if (
$delta == 'hello_world') {
         
// Construction du contenu
         
$contenu = "Salut le monde";
           
         
// Ajout du message
         
$contenu = "" . variable_get('hello_world_message', "pas de message défini");
         
$contenu ="test";
         
// Construction du block
         
$bloc['subject'] = t('Hello World');
         
$bloc['content'] = $contenu;
        }
        return
$bloc;
      }
// fin du cas 'view'
//////////////////////////////////////////////////////////////////
?>

Ma question est comment passé du php dans le contenu du block , dans mon cas les resultats de la méteo.

voila le code que je souhaite afficher :

<?php
//////////////////////////////////////////////////////////////////
$i=0;
foreach (
$days as $day)
{
    echo
'<td>';
   
   
$title = $day['day']['t'];
    echo
date_fr('l', strtotime("+$i day", $now)) . " <br />";
    echo
'<img src="' . WEATHER_ICONS_URL . $day['day']['icon'] . '.png"';

    echo
$day['hi'] == 'N/A' ? '&mdash;' : WdWeather::toCelsius($day['hi']) . '°C';
    echo
' &middot; ';
    echo
$day['low'] == 'N/A' ? '&mdash;' : WdWeather::toCelsius($day['low']) . '°C';

    echo
'</td>';
 
$i++;}
//////////////////////////////////////////////////////////////////
?>

Comment passé mon code dans "$bloc['content'] = $contenu;"? Concaténation ? j'aimerai avoir quelques pistes

Merci d'avance

Forum : 
Version de Drupal : 

Bonjour,
Oui il faut concaténer tes valeurs de retour et ne pas faire de echo.
exemple:

$texte= date_fr('l', strtotime("+$i day", $now)) . " <br />";
$texte.= '<img src="' . WEATHER_ICONS_URL . $day['day']['icon'] . '.png"';

Ensuite ne pas oublier de mettre la valeur dans $bloc['content'];

$bloc['content']=$texte

Et pour finir renvoyer le bloc

return $bloc;

Ps: Pour modifier le titre du bloc il faut insérer ta valeur dans $bloc['title']:

$bloc['title']=$day['day']['t'];

Cordialement, Aya
Et bonne Année a tous

Merci, j'ai essayer mais je n'arrive pas a caler mon foreach

$i=0;
foreach ($days as $day)
{
$contenu.= date_fr('l', strtotime("+$i day", $now)) . " <br />";
$contenu.= '<img src="' . WEATHER_ICONS_URL . $day['day']['icon'] . '.png">';
$i++;
}

car je souhaite afficher la méteo de la semaine (4 jours)

C'est bon ca marche super bien, c’était un erreur de ma part.La fonction qui générai le bloc n'arrivai pas appeler la fonction qui gère la météo.

Merci de ton aide , maintenant j'ai mon petit module météo perso