Page 1 of 1

[ISSPRESTA] Naujienos ir Mailer

Posted: Mon May 17, 2010 7:25 pm
by Airidas
Sveiki,

Norejau pasiteirauti ar imanoma padaryti taip, kad idejus i portala naujiena, ji butu issiusta el. pastu nurodytiems adresatams?

Jeigu, kas numanot, gal galite patarti nuo ko pradeti :)?

Pagarbiai,
Airidas

Re: Naujienos ir Mailer

Posted: Mon May 17, 2010 7:39 pm
by vilkis
Naujienlaikraščių siuntimui skirtas yra NMS modulis.

vilkis

Re: Naujienos ir Mailer

Posted: Tue May 18, 2010 6:35 pm
by Airidas
Sveikas vilki,

Nesu anksciau susidures su tokio tipo moduliu, kol kas perziurejes nesuprantu kaip ji reikia sukonfiguruoti.
Kaip suprantu jo paskirtis siusti sukurtus mailus kas kazkiek laiko prisiregistravusiems vartotojams.
Na man viskas tinka, tik mano ideja yra padaryti taip, jog editoriuo idejus naujiena, ja gautu visi i emaila, (kaip facebook notifications)...

Pagarbiai,
Airidas

Re: Naujienos ir Mailer

Posted: Tue May 18, 2010 7:27 pm
by vilkis
Airidai,
man kažkada irgi reikėjo tokio funkcionalumo, bet tai nebuvo pirmos būtinybės dalykas, taigi dėl darbų gausos atsisakiau tokios idėjos.
Yra keletas galimybių:
1. naudoti tik NMS modulį:
Prikabinu trumpą NMS aprašymą (doc failas). Principas sukuri naujieną ir siunti ją užsiregistravusiems naudotojams. Jei išsiųstos naujienos neištrinsi, tai yra galimybė rodyti jau išsiųstas naujienas svetainėje. Šitu atveju žinoma netenki galimybės turėti naujienų kategorijų, rodymo/nerodymų ir kitų News modulio privalumų, todėl man toks variantas netiko.

2. Sukurti savo UDT, kuris 'gaudytų' News įvykį NewsArticleAdded ir  siųstų laiškus pasirinktais e. pašto adresais. Trūkumai: gali būti sunkumų, jei naujienoje bus paveiksliukų; e pašto adresus reiks rankiniu būdu įrašyti į UDT, o tai paprastam naudotui patartina neleisti daryti.

3. Sukurti UDT, kuris 'gaudytų' News įvykį NewsArticleAdded ir naudodamasis NMS funcijomis siųstų laiškus atitinkamo NMS sąrašo (žr. prikabintą aprašymą) naudotojams. Man toks variantas atrodo geriausias.

Deja 2 ir 3 atvejais teks paprogramuoti.

vilkis

Re: Naujienos ir Mailer

Posted: Wed May 19, 2010 2:55 pm
by Airidas
Sveikas vilki,

Pasirinkau antra varianta ir tikiuosi kiek pagilinti savo programavimo zinias, na jos yra menko, todel jei turi kazkiek laiko labai prasysiu padeti :). (Antra varianta pasirinkau, nes naudotojui prideti adresu nereikes)

Taigi,  UTD:

Kol kas ieskojau funkcijos NewsArticleAdded, ir viskas ka radau:

@CmsEvents::send_event(($this->id == -1 ? 'NewsArticleAdded' : 'NewsArticleEdited'),
      array('news_id' => $this->id, 'category_id' => $this->category_id, 'title' => $this->title, 'content' => $this->content,
      'summary' => $this->summary, 'status' => $this->status, 'start_time' => $this->start_time, 'end_time' => $this->end_time,
      'useexp' => $this->use_expiration));
  }

Nesu dares nieko panasaus, bet principa pagaunu.

Dabar reikia sugeneruoti {if} kad pamatytu jei nauja naujiena atsirado, ir tada nurodyti, kad naujos naujienos medziaga siustu nurodytiems adresatams.

Na pirmiausia tai nezinau, kaip patikrinti, ar atsirado nauja naujiena.
Tada galvoju naudoti php mail funkcija:



Na ieskojau bet gerai nesupratau, kaip istraukti news modulio medziaga i UTD turbut naudojant smarty.

Taigi, vilki paprasysiu, kad nukreiptum, kaip istraukti info is news modulio ir kaip patikrinti NewsArticleAdded :)

Busiu labai dekingas uz pagalba,
Airidas

Re: Naujienos ir Mailer

Posted: Wed May 19, 2010 3:13 pm
by vilkis
dėl NewsArticleAdded: nieko programuoti nereikia. Kai sukursi UDT tiesiog reiks nueiti į Extensions->Event Manager rasti įvykį NewsArticleAdded ir  priskirti jam tavo UDT.

vilkis

EDIT: Kita irgi galima kultūringiau padaryti (pvz išsiųsti laiškus naudojant CMSMailer modulį, galėsiu vėliau parašyti, dabar neturiu laiko.

Re: Naujienos ir Mailer

Posted: Wed May 19, 2010 5:36 pm
by Airidas
Radau UTD skirta ispeti kai pakeistas turinys.
Tai priskiriame sia UTD ContentEditPost veiksmui.
Pats UTD:

global $gCms;
$content =& $params['content'];

$editedby = $gCms->variables['username'];

$bodytext = '
A page on the web site has been changed.

Page Name: '.$content->Name().'
Page Alias: '.$content->Alias().'
Page Type: '.$content->Type().'
Page Created: '.$content->GetCreationDate().'
Modified on: '.$content->GetModifiedDate().'
Modified by: '.$editedby.'
Page URL: '.$content->GetURL();

$cmsmailer =& $gCms->modules['CMSMailer']['object'];
$cmsmailer->AddAddress('info@pavyzdys.lt');
$cmsmailer->SetBody($bodytext);
$cmsmailer->IsHTML(false);
$cmsmailer->SetSubject('Page change notification--' .$content->Name());
$cmsmailer->Send();


Sis UTD veikia, bet pakeitus Extensions veiksma i --> NewsArticleAdded
Mailai i pasta neateina, pridejus naujiena.
Nezinau kur detis, bandziau supaprastinti vis UTD iki:

global $gCms;

$bodytext = '
A page on the web site has been changed.

$cmsmailer =& $gCms->modules['CMSMailer']['object'];
$cmsmailer->AddAddress('info@pavyzdys.lt');
$cmsmailer->SetBody($bodytext);
$cmsmailer->IsHTML(false);
$cmsmailer->SetSubject('Page change notification--' .$content->Name());
$cmsmailer->Send();

Vis tiek su naujienom neveikia. Ieskau bet niekur nerandu news articlia params. ($news =& $params['xxxxxx'];

Na jei kas atsilieps i pagalbos sauksma busiu dekingas ;)

Pagarbiai,
Airidas

Re: Naujienos ir Mailer

Posted: Wed May 19, 2010 7:08 pm
by vilkis
Supaprastintas variantas ir neturi veikti - jame yra klaida.
vilkis

Re: Naujienos ir Mailer

Posted: Wed May 19, 2010 7:21 pm
by vilkis
Na ir nekantrus gi tu.

pratestavau - žemiau esantis kodas veikia - žinoma jį dar galima ištobulinti.

Code: Select all

global $gCms;
$bodytext = $params['content'];
$cmsmailer =& $gCms->modules['CMSMailer']['object'];
$cmsmailer->AddAddress('vilkis@gmail.com');
$cmsmailer->SetBody($bodytext);
$cmsmailer->IsHTML(true);
$cmsmailer->SetSubject($params['title']);
$cmsmailer->Send();

return;
vilkis

Re: Naujienos ir Mailer

Posted: Wed May 19, 2010 8:03 pm
by Airidas
Dekoju vilki, man irgi veikia. Prapleciau savo UDT:

global $gCms;

$to  = 'ex@ex.com' . ', '; // note the comma
$to .= 'ex@ex.com';


$bodytext = $params['content'];


$cmsmailer =& $gCms->modules['CMSMailer']['object'];
$cmsmailer->AddAddress($to);
$cmsmailer->SetBody($bodytext);
$cmsmailer->IsHTML(true);
$cmsmailer->SetSubject($params['title']);
$cmsmailer->Send();

return;

Dabar siuncia i visus nurodytus adresus. Funkcija tiesiog puiki.
Labai dekingas vilki :)
Tikiuosi kada nors galesiu atsilyginti.

Pagarbiai,
Airidas