Vous n'êtes pas identifié(e).
[25 janvier 2021] - Publication de Wanewsletter 3.1.0
Pages : 1
Bonsoir,
Tout d'abord, un monument ce wanewsletter. Bravo et merci.
J'ai voulu utiliser assign_block_tags comme je le fais avec assign_block_vars pour créer un tableau dans un mail du genre :
----------------------------------------------------------------
<!-- start_block winners -->
Email : %winners.EMAIL% Code : %winners.CODE%
<!-- end_block winners -->
-----------------------------------------------------------------
code :
do
{
$quiz_form->mailer->assign_block_tags('winners', array(
'EMAIL' => $rowWarned['abo_email'],
'CODE' => $rowWarned['register_key']
));
$i++;
}
while( $rowWarned = $result->fetch() );
-------------------------------------------------------------------
Mais, il n'est créé qu'une ligne.
En regardant le code, ça paraît normal. Est-ce volontaire ? Est-ce que je fais une mauvaise interprétation de cette fonction ?
Y-a-t-il une méthode pour faire ce que je veux faire ?
Merci de votre aide,
Chami
Hors ligne
salut
En effet, le fonctionnement n'est pas le même qu'avec le système de templates. Dans Wamailer, c'est un bête système de blocs conditionnels.
Ce que vous pourriez faire, c'est utiliser la classe template pour générer le texte de l'email en amont, puis le faire passer à la classe wamailer.
PHP et MySQL, un duo gagnant !
Hors ligne
Merci Bobe,
Entre temps, j'ai fait ces modifications. Peut-être peuvent-elles servir à d'autres ?
/**
* @param string $name Nom du block et des éventuels sous blocks
* @param array $tags Tableau des tags à remplacer dans le message
*
* @access public
* @return void
*/
function assign_block_tags($name, $tags = null)
{
if( preg_match('/^[[:alnum:]_-]+$/i', $name) )
{
//if( !isset($this->block_tags[$name]) ) $this->block_tags[$name] = array();
$this->block_tags[$name][] = $tags;
}
/**
* @param string $texte
*
* @access private
* @return string
*/
function replace_block_tags($texte)
{
$total_blocks = preg_match_all(
"/<!-- start_block ([[:alnum:]_-]+) -->(.*?)<!-- end_block \\1 -->([\r\n]+)/is",
$texte,
$matches
);
for( $i = 0; $i < $total_blocks; $i++ )
{
$block_name = $matches[1][$i];
$tmp = '';
if( isset($this->block_tags[$block_name]) && $nb_items = count($this->block_tags[$block_name]) )
{
for( $j=0; $j<$nb_items; $j++ )
{
$keys = $values = array();
foreach( $this->block_tags[$block_name][$j] as $key => $val )
{
$keys[] = '/(?:(%)|(\{))' . $block_name . '\.' . $key . '(?(1)%|\})/i';
$values[] = $val;
}
$tmp .= preg_replace($keys, $values, trim($matches[2][$i])) . $matches[3][$i];
}
}
$texte = str_replace($matches[0][$i], $tmp, $texte);
}
return $texte;
}
Donc, peu de choses modifiées et un fonctionnement un peu amélioré permettant de construire un tableau simple.
C'est quand même pratique pour dresser un listing vers le webmaster.
La nouvelle function assign_block_tags est peut-être un peu simpliste ?
Je ne pense pas qu'il y ait incompatibilité avec l'existant.
C'est une sacrée usine à gaz ce wanewsletter.
Cordialement,
Chami
Dernière modification par Chami (2011-03-31 18:55:00)
Hors ligne
Pages : 1