<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pizza By The Slice &#187; phpList</title>
	<atom:link href="http://pizzabytheslice.com/tag/phplist/feed" rel="self" type="application/rss+xml" />
	<link>http://pizzabytheslice.com</link>
	<description>Photography, Illustration, Web Development &#38; Scary Rants</description>
	<lastBuildDate>Tue, 31 Jan 2012 05:32:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>phpList PBTS_Xtra: Multiple-Content Area Plugin Screenshots</title>
		<link>http://pizzabytheslice.com/pbts_extra-screenshots.htm</link>
		<comments>http://pizzabytheslice.com/pbts_extra-screenshots.htm#comments</comments>
		<pubDate>Mon, 03 Oct 2005 22:55:18 +0000</pubDate>
		<dc:creator>Buz</dc:creator>
				<category><![CDATA[Web Development & Tech]]></category>
		<category><![CDATA[phpList]]></category>

		<guid isPermaLink="false">http://localhost.pizzabytheslice.com/?p=341</guid>
		<description><![CDATA[Here are the tools included for managing Templates with custom placeholders. These tools are available after you&#8217;ve properly installed pbts_xtra. To get to these pages click the pbts_xtra link located in the right-sidebar of the admin menu. Then click Template Tools, then choose a Template to begin editng. Note: you must create your template using [...]]]></description>
			<content:encoded><![CDATA[<p>Here are the tools included for managing Templates with custom placeholders. These tools are available after you&#8217;ve properly installed pbts_xtra. To get to these pages click the pbts_xtra link located in the right-sidebar of the admin menu. Then click Template Tools, then choose a Template to begin editng.</p>
<p><span id="more-341"></span></p>
<p>Note: you must create your template using the standard phpList Template editor BEFORE you&#8217;ll be able to use these tools.</p>
<p><a href="/phplist/pbts_xtra/index.htm">return to pbts_xtra documentation</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://pizzabytheslice.com/pbts_extra-screenshots.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpList&#8217;s Available Placeholders</title>
		<link>http://pizzabytheslice.com/phplists-available-placeholders.htm</link>
		<comments>http://pizzabytheslice.com/phplists-available-placeholders.htm#comments</comments>
		<pubDate>Mon, 03 Oct 2005 22:53:51 +0000</pubDate>
		<dc:creator>Buz</dc:creator>
				<category><![CDATA[Web Development & Tech]]></category>
		<category><![CDATA[phpList]]></category>

		<guid isPermaLink="false">http://localhost.pizzabytheslice.com/?p=339</guid>
		<description><![CDATA[I&#8217;ve been pouring over phpList code lately and just for my own sanity need to start tracking what these tags are, where they may be available, and what they mean &#8212; I&#8217;m going nutters. When this is complete I&#8217;ll try to get it added to the phpList wiki. See Also:phpList Mailing Pre-Flight Check List placeholder [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been pouring over phpList code lately and just for my own sanity need to start tracking what these tags are, where they may be available, and what they mean &#8212; I&#8217;m going nutters.</p>
<p><span id="more-339"></span></p>
<p>When this is complete I&#8217;ll try to get it added to the phpList wiki.</p>
<p>See Also:<br /><a href="../index.htm">phpList Mailing Pre-Flight Check List</a></p>
<table cellspacing="0" class="functions">
<thead>
<tr>
<th>placeholder</th>
<th>allowed in</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>CONFIRMATIONURL</td>
<td>Email/Template</td>
<td></td>
</tr>
<tr>
<td>CONTENT</td>
<td>Email/Template</td>
<td>This is where each Message&#8217;s Content (body) will be placed. Every Template MUST have a [CONTENT], and note: that placeholder is case-sensitive. You&#8217;ll get an error if you try to save a template with &quot;[content]&quot;.</td>
</tr>
<tr>
<td>DOMAIN</td>
<td>Email/Template</td>
<td>the text you type for your domain</td>
</tr>
<tr>
<td>FOOTER</td>
<td>Email/Template</td>
<td></td>
</tr>
<tr>
<td>forward</td>
<td></td>
<td></td>
</tr>
<tr>
<td>forwardform</td>
<td></td>
<td></td>
</tr>
<tr>
<td>forwardurl</td>
<td></td>
<td></td>
</tr>
<tr>
<td>LISTOWNER</td>
<td>Email/Template</td>
<td></td>
</tr>
<tr>
<td>LISTS</td>
<td>Email/Template</td>
<td></td>
</tr>
<tr>
<td>PREFERENCES</td>
<td>Email/Template</td>
<td></td>
</tr>
<tr>
<td>PREFERENCESURL</td>
<td>Email/Template</td>
<td>the location of the page where users can update their details</td>
</tr>
<tr>
<td>SIGNATURE</td>
<td>Email/Template</td>
<td></td>
</tr>
<tr>
<td>subscribe</td>
<td></td>
<td></td>
</tr>
<tr>
<td>SUBSCRIBEURL</td>
<td>Email/Template</td>
<td>the location of the subscribe page</td>
</tr>
<tr>
<td>unsubscribe</td>
<td></td>
<td></td>
</tr>
<tr>
<td>UNSUBSCRIBEURL</td>
<td>Email/Template</td>
<td>the location of the unsubscribe page</td>
</tr>
<tr>
<td>USERID</td>
<td>Email/Template</td>
<td></td>
</tr>
<tr>
<td>USERTRACK</td>
<td>Email/Template</td>
<td></td>
</tr>
<tr>
<td>WEBSITE</td>
<td>Email/Template</td>
<td>the address you type for your website</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://pizzabytheslice.com/phplists-available-placeholders.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpList PBTS_Xtra: Installation Instructions for Multiple-Content Area Plugin</title>
		<link>http://pizzabytheslice.com/pbts_extra-instructions.htm</link>
		<comments>http://pizzabytheslice.com/pbts_extra-instructions.htm#comments</comments>
		<pubDate>Mon, 03 Oct 2005 22:51:34 +0000</pubDate>
		<dc:creator>Buz</dc:creator>
				<category><![CDATA[Web Development & Tech]]></category>
		<category><![CDATA[phpList]]></category>

		<guid isPermaLink="false">http://localhost.pizzabytheslice.com/?p=337</guid>
		<description><![CDATA[Detailed instructions fro installation of the PBTS_Xtra plugin for phpList. This page contains two sets of instructions: Installing the plug-ins (basic install, required) Replacing the built-in phpList Message Editor with PBTS_XTRA&#8217;s Template-driven custom Editor To use this plugin you MUST perform the basic install &#8212; making phpList&#8217;s sending engine able to process your new multi-content [...]]]></description>
			<content:encoded><![CDATA[<p>Detailed instructions fro installation of the PBTS_Xtra plugin for phpList.<br />
<span id="more-337"></span></p>
<p>This page contains two sets of instructions:</p>
<ol>
<li><a href="#basic">Installing the plug-ins (basic install, required)</a></li>
<li><a href="#editor">Replacing the built-in phpList Message Editor with PBTS_XTRA&#8217;s Template-driven custom Editor</a></li>
</ol>
<p>To use this plugin you MUST perform the basic install &#8212; making phpList&#8217;s sending engine able to process your new multi-content Templates. However, to really create a nearly seamless system you&#8217;ll also want to switch from phpList&#8217;s default<br />
  Message Editors and use the rich features of the PBTS Editor  that dynamically creates a customized interface based on your own Template regions (hmm, sounds like a kitchen appliance).</p>
<h2><a name="basic" id="basic"></a>Installation (Basic)</h2>
<h3>Overview</h3>
<p>Time to install: 10 minutes</p>
<p>You&#8217;ll need to edit the config files, unzip the plugin into your plugin directory, and make two modifications to one phplist file.</p>
<h3>Steps</h3>
<ol>
<li>open config/config.php and turn off the WSYSIWYG editors via a configuration setting (~line 481):<br />
    <br />&nbsp;<br />
    <br /><code>define(&quot;USEFCK&quot;,0);</code><br />
    <br />&nbsp;
    </li>
<li>Double check that TinyMCE is also turned off:<br />
    <br />&nbsp;<br />
    <br /><code>define(&quot;USETINYMCETEMPL&quot;, 0);</code><br />
    <br />&nbsp;
    </li>
<li>Lastly, you&#8217;ll probably want to turn off the auto-generated text email. Or, turn on the manual text message option:<br />
    <br />&nbsp;<br />
    <br /><code>define(&quot;USE_MANUAL_TEXT_PART&quot;,1);</code><br />
    <br />&nbsp;
    </li>
<li>If you don&#8217;t have your plugin directory defined you&#8217;ll also need<br />
    to set this: define(&quot;PLUGIN_ROOTDIR&quot;,&quot;plugins&quot;); or you may<br />
    specify some other path.<br />
    <br />&nbsp;
    </li>
<li>unzip pbts_xtra.zip files into your plugins directory.<br />
    <br />&nbsp;
    </li>
<li>Modifying the SendEmail Library.<br />
    <br />
    &nbsp;<br />
    <br /><strong>BACKUP YOUR FILE BEFORE PROCEEDING</strong><br />
    <br />&nbsp;</p>
<p>These last two steps are the only ones requiring mods to core<br />
    phpList files. Open admin/sendemaillib.php. Add this line to the<br />
    top of the file:<br />
    <br />&nbsp;<br />
    <br /><code>include_once dirname(__FILE__).'/plugins/pbts_xtra/pbts_xtra.inc.php';</code><br />
    <br />&nbsp;<br />
    <br />Note: if you installed the plugin in a different directory set<br />
    this as needed.
    </li>
<li>Next we replace the current Template tag substitution with the<br />
    PBTS_XTRA calls. Locate the following code (about line 180):<br />
    <br />&nbsp;</p>
<div class="syntax">
<div class="php">
<ol start="181">
<li>
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$cached</span><span class="br0">&#91;</span><span class="re0">$messageid</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&quot;template&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="co2"># template used</span></div>
</li>
<li>
<div class="de1">&nbsp; &nbsp; <span class="re0">$htmlmessage</span> = <span class="kw3">eregi_replace</span><span class="br0">&#40;</span><span class="st0">&quot;\[CONTENT\]&quot;</span>,<br />
        <br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$htmlcontent</span>,<span class="re0">$cached</span><span class="br0">&#91;</span><span class="re0">$messageid</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&quot;template&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">else</span> <span class="br0">&#123;</span> </div>
</li>
</ol></div>
</div>
<p>    Replace (or comment-out) these lines with this: <br />&nbsp;</p>
<div class="syntax">
<div class="php">
<ol start="181">
<li>
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$cached</span><span class="br0">&#91;</span><span class="re0">$messageid</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&quot;template&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="co2"># template used</span></div>
</li>
<li>
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!<span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&quot;/\[PBTS_/is&quot;</span>,<br />
        <br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$cached</span><span class="br0">&#91;</span><span class="re0">$messageid</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&quot;template&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="re0">$htmlmessage</span> = <span class="kw3">eregi_replace</span><span class="br0">&#40;</span><span class="st0">&quot;\[CONTENT\]&quot;</span>, <span class="re0">$htmlcontent</span>,<br />
        <br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$cached</span><span class="br0">&#91;</span><span class="re0">$messageid</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&quot;template&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li>
<div class="de1">&nbsp; &nbsp; <span class="kw1">else</span> </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="re0">$htmlmessage</span> = pbts_replace_content<span class="br0">&#40;</span> <span class="re0">$htmlcontent</span>,<br />
        <br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$cached</span><span class="br0">&#91;</span><span class="re0">$messageid</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&quot;template&quot;</span><span class="br0">&#93;</span> <span class="br0">&#41;</span>;</div>
</li>
<li>
<div class="de1">&nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> </div>
</li>
</ol></div>
<p><!-- php -->
</div>
<p><!-- syntax -->
    </li>
</ol>
<p>That&#8217;s it. (hopefully)</p>
<p class="pgtop"><a href="#">top of page</a></p>
<h6 class="hr"></h6>
<h2><a name="editor" id="editor"></a>Upgrading Message Editor</h2>
<h3>Overview</h3>
<p>Time to install: under 10 mins </p>
<p>As of this writing the plug-in structure provides a less than<br />
  ideal level of integration; if you want to enable the pbts message<br />
  editor as a replacement of the standard phpList editor follow<br />
  the basic installation instructions above, then &#8230;</p>
<h3>Steps</h3>
<p>(REQUIRED TO MAKE THE PBTS EDITOR THE DEFAULT MESSAGE EDITOR)</p>
<p>We&#8217;re going to modify the core phpList file that emits the message<br />
editor. Because this is an important file, please, back it up and<br />
keep a good copy in a safe place, just in case.</p>
<p>We&#8217;re going to make three edits to this file.</p>
<ol>
<li>Backup admin/send_core.php<br />
		<br />&nbsp;
    </li>
<li>Adding the PBTS_XTRA library. Open send_core.php and find<br />
  this line (should be the first one in the file):</p>
<pre class="mycode">require_once dirname(__FILE__).'/accesscheck.php';</pre>
<p>&nbsp;<br />
		<br />We&#8217;ll add a statement telling this file where the PBTS library is:<br />
		<br />&nbsp;</p>
<pre class="mycode">require_once dirname(__FILE__).'/accesscheck.php';

<span class="newcode">include_once dirname(__FILE__).'/plugins/pbts_xtra/pbts_xtra.inc.php';</span></pre>
<p>&nbsp;
    </li>
<li>OK, now let&#8217;s modify where the editor&#8217;s form fields<br />
   get emitted. Jump down to around line 1100 and find<br />
   these statements:</p>
<pre class="mycode">} else {

  $maincontent .= '&lt;textarea name=message cols=65 rows=20&gt;'
     .htmlspecialchars($_POST[&quot;message&quot;]).'&lt;/textarea&gt;';

}</pre>
<p>&nbsp;<br />
		<br />Replace this line with:<br />
		<br />&nbsp;</p>
<pre class="mycode">} else {
<span class="newcode">  # let PBTS emit the form fields based on the Template tags:
  $maincontent .= pbts_send_core_editor();
  # end, PBTS</span>
}</pre>
<p>&nbsp;
    </li>
<li>Lastly, we need to &quot;smarten up&quot; the code that&#8217;s<br />
   executed when you click the Save Edits button.<br />
   Locate the following statements (about line 270?):</p>
<pre class="mycode">if (!$htmlformatted  &amp;&amp; strip_tags($_POST[&quot;message&quot;]) !=  $_POST[&quot;message&quot;])
  $errormsg = '&lt;span  class=&quot;error&quot;&gt;'
    .$GLOBALS['I18N']-&gt;get(&quot;htmlusedwarning&quot;).'&lt;/span&gt;';

$query = sprintf('update %s  set  '.
    'subject = &quot;%s&quot;, '.
    'fromfield = &quot;%s&quot;, '.
    'tofield = &quot;%s&quot;, '.</pre>
<p>&nbsp;<br />
		<br />Let&#8217;s insert a line between the two above:<br />
		<br />&nbsp;</p>
<pre class="mycode">if (!$htmlformatted  &amp;&amp; strip_tags($_POST[&quot;message&quot;]) !=  $_POST[&quot;message&quot;])
  $errormsg = '&lt;span  class=&quot;error&quot;&gt;'.
      $GLOBALS['I18N']-&gt;get(&quot;htmlusedwarning&quot;).'&lt;/span&gt;';

<span class="newcode"># Add PBTS processing to save:
if (isset($_POST['pbts_xtra']))
  $_POST[&quot;message&quot;]= pbts_send_core_save();
# done adding PBTS lines.</span>

$query = sprintf('update %s  set  '.
    'subject = &quot;%s&quot;, '.
    'fromfield = &quot;%s&quot;, '.
    'tofield = &quot;%s&quot;, '.</pre>
<p>&nbsp;
    </li>
</ol>
<p class="pgtop"><a href="#">top of page</a></p>
<h6 class="hr"></h6>
<h2>Sample Templates</h2>
<p>In the zip there is a sample_Template.php. Create a Template and import<br />
this file as the content. It&#8217;s important that the WYSIWYG editor be<br />
turned off, otherwise it will rewrite my custom region tags, replacing<br />
the &amp; with &amp;amp; and that will definitely break this.</p>
<p>The sample template is not necessarily a study in &quot;best email layout<br />
practices&quot;, but serves for illustration purposes. I just had to add<br />
that, not that I&#8217;m ashamed of this one, but I&#8217;d definitely do it<br />
differently.</p>
<p class="pgtop"><a href="#">top of page</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pizzabytheslice.com/pbts_extra-instructions.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpList Pre-flight: Pre-Send/Installation checklist</title>
		<link>http://pizzabytheslice.com/phplist-preflight-checklist.htm</link>
		<comments>http://pizzabytheslice.com/phplist-preflight-checklist.htm#comments</comments>
		<pubDate>Mon, 03 Oct 2005 22:43:23 +0000</pubDate>
		<dc:creator>Buz</dc:creator>
				<category><![CDATA[Web Development & Tech]]></category>
		<category><![CDATA[phpList]]></category>

		<guid isPermaLink="false">http://localhost.pizzabytheslice.com/?p=330</guid>
		<description><![CDATA[Great! You&#8217;ve installed phpList, you&#8217;ve created your mail message. Now, how to get out the door and past the spam filters. Good grief! Run down these check lists and you might just make it. More Pizza phpList stuff: multiple-placeholder plug-in: pbts_xtra or growing list of built-in placeholders Installation &#38; Setup Check List Have you setup [...]]]></description>
			<content:encoded><![CDATA[<p>Great! You&#8217;ve installed phpList, you&#8217;ve created your mail message. Now, how to get out the door and past the spam filters. Good grief!</p>
<p>Run down these check lists and you might just make it.</p>
<p><span id="more-330"></span></p>
<p>More Pizza phpList stuff: <a href="/phplist/pbts_xtra/index.htm">multiple-placeholder plug-in: pbts_xtra</a> or <a href="/phplist/pbts_xtra/placeholders.htm">growing list of built-in placeholders</a></p>
<h4>Installation &amp; Setup Check List</h4>
<ul class="checks">
<li>Have you setup an &quot;<strong>abuse</strong><em>@mydomain.com</em>&quot; account?</li>
<li>Have you setup a &quot;<strong>postmaster</strong><em>@mydomain.com</em>&quot; account? </li>
<li>Verify your reverse DNS? Use <a href="http://www.dnsreport.com" class="newwin" target="_blank">DNSreport.com</a> to verify.</li>
<li>Added a <a href="http://www.openspf.org/" class="newwin" target="_blank">SPF record</a>? (debate continues on how crucial this is, or even whether it&#8217;s even a good idea. <a href="http://postmaster.aol.com/spf/" target="_blank" class="newwin">AOL</a> seems to be throwing their weight behind &quot;yes, do this&quot;) </li>
<li>Does your email/site hosting company limit the number of emails per hour you may send? Are you sure? If so, have you set phpList&#8217;s throttle in <kbd>config.php</kbd>? There are three settings: <kbd>MAILQUEUE_BATCH_SIZE</kbd>, <kbd>MAILQUEUE_BATCH_PERIOD</kbd>, and <kbd>MAILQUEUE_THROTTLE</kbd>.</li>
<li>Have you tested the unsubscribe?</li>
<li>Did you include a note in your email asking people to &quot;safe list&quot;  your sending-from email address, &quot;<em>my-phplist-account@mydomain.com</em>&quot;?</li>
<li>Did you check your bounced mail account setup? phpList requires the IMAP PHP extension. It also requires a valid logon be setup in <kbd>config.php</kbd>. </li>
<li>On the configure page you&#8217;ve set your domain correctly?</li>
</ul>
<h4>Message Sending Check List</h4>
<ul class="checks">
<li>You&#8217;ve added  Users (recipients) to your target List (seems obvious, lots of people remember to add Users, but not make them Members of a List)? </li>
<li>Have you sent a test message? Which desktop mail client and webmail have you viewed it in? Have you test-mailed  AOL? Yahoo! GMail? Hotmail?&nbsp; HelloKitty.com?</li>
<li>You&#8217;ve proofread and spell-checked your HTML <u>AND</u> Text-only email? Even if you&#8217;re sending all HTML emails, 100%, no exceptions&#8230; check the text message. phpList is smart. It will send multi-part emails: that is, it will send your HTML email and, in another hidden bucket inside that email will be the text-only version. Why? If the recipient&#8217;s email client can&#8217;t view HTML emails it will look for the text version. Fails politely. </li>
<li>Verify the from email address. Does it match the one you told people to &quot;safe list&quot;?</li>
<li>Meaningful Subject line? </li>
</ul>
<p>Great. Hit Send&#8230; and then&#8230;</p>
<h4>What went wrong?</h4>
<p>If you send your email and have no problems, fantastic. Wait. Did you say NO PROBLEMS? Ahhhhhhhhh! I mean, Uh-oh. No bounces? No &quot;out of office&quot; auto-responses? Really? Dude, bad news&#8230; you&#8217;re screwed. Time for quick triage: </p>
<ul class="checks">
<li>Was everyone on your list confirmed? </li>
<li>If you imported Users into your List from a file did you set them all as pre-confirmed? </li>
<li>Maybe you exceeded your hosting company&#8217;s limit? FTP in and, if you&#8217;re able to find it, look in your mail directory. Look for sent, bad, etc. You may find a big pile of all of your emails. </li>
<li>Did you inadvertently leave phpList in &quot;Test&quot; mode? In <kbd>config.php</kbd> check your value for this constant (0 is off, 1 is on): <kbd>define (&quot;TEST&quot;,0);</kbd> </li>
<li>Send a test mail. Perhaps you&#8217;ve a basic setup/configuration problem with mail account etc?</li>
<li>Still no ideas? Head over to the  <a href="http://www.phplist.com/forums/" target="_blank" class="newwin">phpList forums</a> and do a <strong>search</strong>. Odds are that someone has had a similar problem. Oh, if you do decide to post a new thread &#8212; don&#8217;t be an asshat. Ask a specif clear, meaningful, well constructed question, details and examples help and people will be more likely to reply. Give it a meaningful post name (not &quot;Help me!!!!!!!! &quot; or &quot;Didn&#8217;t work&quot; or &quot;this program sux&quot;) And, if you solve your problem, please, post the solution. For the next person, who is just exactly like you and me.</li>
<li>Also, don&#8217;t forget your hosting company&#8217;s support forum, knowledgebase, or other options. Might get help configuring there. </li>
</ul>
<h6>See also:</h6>
<ul>
<li><a href="http://www.phplist.com/forums/viewtopic.php?t=3328" target="_blank" class="newwin">Advice: Fix your DNS records so you&#8217;re not seen as spam</a></li>
<li><a href="http://www.phplist.com/forums/viewtopic.php?t=2724" target="_blank" class="newwin">phplist setup walkthrough</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pizzabytheslice.com/phplist-preflight-checklist.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plugin: PBTS_XTRA, add Multiple Content Areas to phpList</title>
		<link>http://pizzabytheslice.com/pbts_extra-overview.htm</link>
		<comments>http://pizzabytheslice.com/pbts_extra-overview.htm#comments</comments>
		<pubDate>Mon, 03 Oct 2005 22:24:34 +0000</pubDate>
		<dc:creator>Buz</dc:creator>
				<category><![CDATA[Web Development & Tech]]></category>
		<category><![CDATA[phpList]]></category>

		<guid isPermaLink="false">http://localhost.pizzabytheslice.com/?p=327</guid>
		<description><![CDATA[Overview This plugin extends phpList&#8217;s Template functionality by allowing you to define multiple Content Regions within your Templates. You are also able to include or exclude sections of your Template based on whether one of these Content Regions is empty or not. Sections on this page: Problem Definition &#124; Basic Usage &#124; Advanced Options Conditional [...]]]></description>
			<content:encoded><![CDATA[<h3>Overview</h3>
<p>This plugin extends phpList&#8217;s Template functionality by allowing you to define multiple Content Regions within your Templates.</p>
<p>You are also able to include or exclude sections of your Template based on whether one of these Content Regions is empty or not.</p>
<p><span id="more-327"></span></p>
<h3>Sections on this page:</h3>
<p><a href="#problem">Problem Definition</a> | <a href="#basic">Basic Usage</a> | <a href="#advanced">Advanced Options</a> <br />
	<a href="#conditions">Conditional Regions</a> | <a href="#faq">faq</a> <br />
	<a href="#thanks">thank yous</a> | <a href="#license">terms of use</a>&nbsp; | &nbsp;<a href="#revs">revision history</a> </p>
<h3>See Also: </h3>
<p><a href="instructions.htm">detailed installation instructions</a>&nbsp; | &nbsp;<a href="screenshots.htm">screenshots</a>, <br />
	More on phpList: <a href="placeholders.htm">phpList&#8217;s standard placeholders</a>&nbsp; | &nbsp;<br />
	<a href="../index.htm">phpList Mailing Pre-Flight Check List</a></p>
<h3>Resources</h3>
<p>Download plugin:<a href="/downloads/pbts_xtra.zip">pbts_xtra.zip</a> <br />
	Current Version: 0.04 [beta] 5-December-05 <br />
	Includes: plugin, install notes, and sample template for practice</p>
<p><a href="http://tincan.co.uk/phplist" target="_blank" class="external">phpList homepage (on tincan.co.uk)</a> <br />
	<a href="http://www.phplist.com/forums/viewtopic.php?t=4059" class="external" target="_blank">discuss this plugin on phpList forums</a></p>
<h6 class="hr"></h6>
<p>&nbsp;</p>
<h2><a name="problem" id="problem"></a>the Problem: why this plugin is needed</h2>
<p>If you know the problem, skip ahead, if not, why are you here? You&#8217;re here? Fine. Here&#8217;s a summary of the Problem.</p>
<p>phpList has a cool method of managing Email Templates, allowing one to divide responsibilities of look-n-feel designer-types from the marketing people that will actually send out the mailings (I need to accept the word &quot;blast&quot; for this action, but it&#8217;s difficult).</p>
<p>There are a handful of special phpList tags that you may include within your Templates, the most important of which is the [CONTENT] tag (others include [FOOTER], [SIGNATURE], [USERID], and [USERTRACK]). Your template may contain on Content; it&#8217;s the guts of the email.</p>
<p>Therein, however, lies the problem. Because it&#8217;s assumed that you have only one &quot;chunk of stuff&quot; per email, that is, it is assumed that the layout only needs on block, this Content area.</p>
<p>Now, while you can embed HTML and whatever else you&#8217;d need to make, say, a multi-column layout, well, this breaches that line separating  Design and Function; suddenly the person sending out the (oh, so help me) &quot;Blast&quot; needs to be an HTML hack.</p>
<p>This kinda sucks for those who want more dynamic layouts. </p>
<p>So this, then, is the problem I set out to solve, which is where the following tweaks come in.</p>
<p class="pgtop"><a href="#">top of page</a></p>
<h2><a name="approach" id="approach"></a>pbts_xtra</h2>
<p>pbts_xtra allows you to define as many dynamic sections within your Template as you want. You&#8217;re also able to choose to have some sections included or excluded depending upon whether there is content available (more later). Finally, the plugin automatically creates an editor for these Content Regions based on settings you provide.</p>
<h2><a name="basic" id="basic"></a>Basic Usage</h2>
<h3>Your Template</h3>
<p>Begin by creating your template. Wherever you wish to insert a Content Region do so by entering the PBTS_XTRA tag:</p>
<pre class="mycode">
[PBTS_XTRA name=&quot;MyNewColumn&quot;]
</pre>
<p>There are more options and features to be covered shortly, but to just get started using this plugin that&#8217;s all you need to do.</p>
<p>Frequently alternative methods are supported by the plugin. On such alternative (shorthand way) of defining a Custom Region is:</p>
<pre class="mycode">
[PBTS_MyNewColumn]
</pre>
<p>Either way informs the plugin that the Template has a Custom Region named &quot;MyNewColumn&quot;.</p>
<h3>Message Content</h3>
<p>To use your Template in a mailing all you need to is create a Message in the usual phpList way with the additional step of marking portions of the Content to match your custom Content Regions.</p>
<p>Backstory: phpList has exactly one Content &quot;chunk&quot; per email. Thus, we need to subdivide this Content by marking the beginning and ending of our custom Content Regions. We do this thusly:</p>
<p>Now, doing this by hand might be tedious and error prone. Also, you might overlook some of your Template&#8217;s Content Regions. To mitigate this a bit pbts_xtra offers it&#8217;s own editor. This editor reads your Template and creates an entry field for each Content Region. </p>
<p class="pgtop"><a href="#">top of page</a></p>
<h6 class="hr"></h6>
<h2><a name="advanced" id="advanced"></a>Advanced Topics: More Options</h2>
<p>pbts_Xtra tags have several parameters (straight from HTML form tags) that allow you to control the auto-generated Message Editor. For example, this would be in your Template:</p>
<pre class="mycode">[PBTS_XTRA name=&quot;MyNewColumn&quot; displayname=&quot;Joke of the Day&quot; 

type=&quot;textarea&quot; rows=&quot;6&quot; cols=&quot;45&quot;]
</pre>
<p>This will cause the Editor to, you guessed it, emit a textarea for MyNewColumn with 6 rows and 45 columns. The label next to it will be Joke of the Day.</p>
<p>Other parameters allow you to set the order in which the fields are emitted and what kind of formatted pbts_xtra will automatically apply to the values entered.</p>
<p>Oh, curious about what happens to the values supplied for all of the fields, are you? Sure.</p>
<p>Well, no new tables or columns are added for pbts_xtra. Instead all of the values are tagged (begin and end markers added) and all stored together in the same single Content area used for normal phpList Messages. (yes, completely denormalized, but quite backwards compatible).</p>
<p>Using the example begun above, the field &quot;myNewColumn&quot; would be marked-up thusly:</p>
<pre class="mycode">
[PBTS_XTRA name=&quot;MyNewColumn&quot;]
Here is the content for a block of stuff called MyNewColumn.
[/PBTS_XTR]
</pre>
<table cellspacing="0" class="functions">
<thead>
<tr>
<th>parameter</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Name</td>
<td>Required (sort of). Any non-reserved word, made up of alphanumeric characters (a-z, 0-9), dashes, and underscores.</td>
</tr>
<tr>
<td>DisplayName</td>
<td>Name displayed to Content Creator within the Editor</td>
</tr>
<tr>
<td>Type</td>
<td>HTML Form Field Type. Allowed values: Text or Textarea. Default is Text.</td>
</tr>
<tr>
<td>Paragraph</td>
<td>Allowed values &quot;always&quot; or &quot;never&quot;. Should the content for this Content Region be wrapped in &lt;p&gt; (paragraph) tags. For example, a large block of text edited in a Textarea typically has the double-newlines replaced with paragraph tags. <br />
				Conversely, if one of the Content Regions is used as a URL in, say, an image tag or anchor tag, then you would want to set this to &quot;never&quot; to have all paragraph tags stripped.</td>
</tr>
<tr>
<td>Description</td>
<td>For Editor any help you might want to include. Please note, until I beef-up the Regular Expressions this needs to following the same rules as the Name for allowed characters.</td>
</tr>
<tr>
<td>Rows</td>
<td>Used by Textareas.</td>
</tr>
<tr>
<td>Cols</td>
<td>Used by Textareas.</td>
</tr>
<tr>
<td>Size</td>
<td>Used by inputs of type Text. Field size.</td>
</tr>
<tr>
<td>Required</td>
<td>For Editor. If set to yes and the field is left blank errors are produced. Allowed values &quot;yes&quot; or &quot;no&quot;. Defaults to yes.</td>
</tr>
<tr>
<td>Style</td>
<td>Inline CSS Style to be applied to Textares with paragraphs set to Always. Any paragraphs tags added will have this style applied.</td>
</tr>
<tr>
<td>TabIndex</td>
<td>For Editor. Set the tabbing order and the order in which fields are emitted in the Editor. Default is the order in which they appear within the Template source.</td>
</tr>
</tbody>
</table>
<p>Note, that all of the arguments added for Editor generation are completely optional: all you need to do is provide the Enhancement with a means of differentiating the blocks, i.e. just provide each Custom Area with a unique name. All else is gravy.</p>
<p>Im also supporting alternate syntaxes (easier than it sounds since I worked from the code I initially had and being lazy found it just as easy to leave some features in).</p>
<p>For example, if you dont like:</p>
<pre class="mycode">
[PBTS_XTRA name=&quot;MyNewColumn&quot;]
</pre>
<p>An alternate, and valid, way to define or mark blocks is:</p>
<pre class="mycode">
[PBTS_MyNewColumn]
</pre>
<p>Behind the scenes it parses the template, no, it doesnt parse it, the Template is scanned for tags that begin &quot;PBTS_&quot;.</p>
<p class="pgtop"><a href="#">top of page</a></p>
<h6 class="hr"></h6>
<h2><a name="conditions" id="conditions"></a>Advanced Topics: Conditional Regions</h2>
<p>PBTS_Xtra supports conditionally including or excluding sections of the email, based on the presence of a particular Content Region.</p>
<p>For example, say your email Template has  an Urgent_Action block that usually has some call to action for your list members. Usually, but not always. Well, rather than creating two templates, instead, just have one thats smart enough to recognize that if the Urgent_Action Content Region is empty dont emit that section&#8217;s block:</p>
<pre class="mycode">
[pbts_if condition=&quot;not_blank&quot; name=&quot;Urgent_Action&quot;]
&lt;h5&gt;Urgent Action&lt;/h5&gt;
[pbts_xtra name=&quot;Urgent_Action&quot;]
&lt;p&gt;For how you can get involved contact Bob &lt;/p&gt;
[/pbts_if]

&lt;p&gt;Just a blank line between ifs&lt;/p&gt;

[pbts_if condition=&quot;empty&quot; name=&quot;Urgent_Action&quot;]
&lt;h5&gt;No Urgent Actions This Month&lt;/h5&gt;
[/pbts_if]
</pre>
<p>The syntax is hopefully vaguely familiar. You have two tags that mark the block. The block begins with the pbts_if and ends with the [/pbts_if]. Please, NO NESTING OF IFs. </p>
<p>The two arguments allowed in the if statement are the desired condition and the name of the Content Region to be checked. The conditions supported at this time are only whether the named Content Region is blank or not. </p>
<p>ELSE statements are not offered. </p>
<p>As with the other stuff variants are supported. The following means &quot;the section is not blank&quot;:</p>
<pre>
Condition=&quot;defined&quot;
</pre>
<p>These are alternate means of saying the same thing:</p>
<ul>
<li>&quot;defined&quot;</li>
<li>&quot;is set&quot;</li>
<li>&quot;not blank&quot;</li>
<li>&quot;not empty&quot;</li>
</ul>
<p>Also note that the two word values, such as &quot;is defined&quot; might include (optionally, of course) a dash or underscore between &quot;is&quot; or &quot;not. That is, these are synonymous:</p>
<ul>
<li>&quot;defined&quot;</li>
<li>&quot;is defined&quot;</li>
<li>&quot;is_defined&quot;</li>
<li>&quot;is-defined&quot;</li>
<li>&quot;isdefined&quot;</li>
</ul>
<p>It is important to note that <strong>NESTED IFs are NOT SUPPORTED</strong>.</p>
<p>HHH</p>
<p class="pgtop"><a href="#">top of page</a></p>
<h6 class="hr"></h6>
<h2><a name="faq" id="faq"></a>faq</h2>
<p class="faq_q">What is PBTS?</p>
<p class="faq_a">PBTS? That&#8217;d be &quot;Pizza By The Slice&quot;. It&#8217;s a habit. I always prefix my mods with my website name to make it easier to find my edits. Oh, sometimes I&#8217;ll use my initials, too.</p>
<p class="faq_a">My contact info is at the bottom of this page (me = (Courts|Buz) Carter).</p>
<p class="faq_q">Why do the [PBTS_XTRA] tags get wrapped in Paragraph Tags?</p>
<p class="faq_a">This is perhaps an unneeded bit of legacy code, but the phpList Message Editor liked to see things all neatly wrapped in &lt;p&gt; tags, so figured &quot;hey, I&#8217;ll do it myself and maintain some control&quot;. Regardless of whether or not they are present they are stripped before Emails are sent.</p>
<p class="faq_q">Within a Template may I repeat Tag names?</p>
<p class="faq_a">Yes. However, the editor uses the arguments set with the first occurene of a specific tag name. But yes, sprinkly a given tag throughout your Template is allowed, and any Message using this Template will have the same value plugged into every occurence of this tag.</p>
<p class="pgtop"><a href="#">top of page</a></p>
<h6 class="hr"></h6>
<h2><a name="thanks" id="thanks"></a>Thank yous&#8230;</h2>
<p>I was content with using my phpList tweaks, which were far short of this plug-in, until <strong>Ludlow Brown</strong> and <strong>Karl Hedner</strong> opined that this could be a useful tool for the larger community. So, huge debt of gratitude is owed these two for helping test and, more importantly, for encouragement and suggestions.</p>
<p class="pgtop"><a href="#">top of page</a></p>
<h6 class="hr"></h6>
<h2><a name="license" id="license"></a>Terms of Use</h2>
<p>As always &#8212; use this as you will, but don&#8217;t sell it. It&#8217;s to remain free, released under Creative Commons License:</p>
<p>
	<!-- Creative Commons License --><br />
	<a rel="license" href="http://creativecommons.org/licenses/by-nc/2.0/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.gif" /></a><br />
	This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc/2.0/">Creative Commons License</a>.
</p>
<p class="pgtop"><a href="#">top of page</a></p>
<h6 class="hr"></h6>
<h2><a name="revs" id="revs"></a>revision history</h2>
<table cellspacing="0" class="functions">
<thead>
<tr>
<th>rev</th>
<th>date</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>0.05</td>
<td>10-Dec-05</td>
<td>
<ol>
<li>Added Tag Editor</li>
<li>Added Template Highlight view</li>
<li>Added Message View Source </li>
<li>Added Style tag attribute</li>
<li>Jiggered the send routine to fix issue with quotes &#8212; in a nutshell the send routine already escaped (added slashes) to single and double quotes so xtra now, in fact, strips slashes just prior to doing the merge (inside send email lib)</li>
<li>Some minor cleanup of regular expressions &#8212; I&#8217;m beginning to understand these well enough to truly be shamed by my earlier feable efforts</li>
</ol>
</td>
</tr>
<tr>
<td>0.04</td>
<td>05-Dec-05</td>
<td>
<ol>
<li>Rewrote engine allowing installations to replace phpList&#8217;s default editors with the PBTS Template-driven editor</li>
<li>Bug fix. Similarly named tags, using the shorthand syntax, stopped matching too soon. i.e. these three tags got the save value: [PBTS_Article],<br />
						[PBTS_ArticleCopyright], [PBTS_ArticleBlogEntry]. These would all get whatever was entered for PBTS_Article</li>
</ol>
</td>
</tr>
<tr>
<td>0.03</td>
<td>30-nov-05</td>
<td>
<p>Some code clean-up and oversights:</p>
<ol>
<li>Replace hardcoded table names with: $GLOBALS[&quot;tables&quot;][&quot;message&quot;]</li>
<li>Fixed bug wherein empty Content Regions edited via Textarea were being returned with \n (newline) character (not empty)</li>
</ol>
</td>
</tr>
<tr>
<td>0.02</td>
<td>29-nov-05</td>
<td>[<strong>beta</strong>] Known to have some rough spots (but not crashes), so releasing to development community for feedback.</td>
</tr>
<tr>
<td>0.01</td>
<td>Aug 2005</td>
<td>Original, non-plug in version of mods.</td>
</tr>
</tbody>
</table>
<p class="pgtop"><a href="#">top of page</a></p>
<p>&nbsp;</p>
<h2>To-Do List</h2>
<p>Hope to get feedback on how to better integrate this.</p>
<ol>
<li>Need better place within sendmaillib.php for performance reasons.</li>
<li>Possibly add style or class info that could be automatically added to &lt;p&gt; and &lt;li&gt; tags.</li>
<li>Probably not for this tag, but Text Templating would be cool.</li>
<li>Should single carriage returns be turned into &lt;br /&gt;?</li>
</ol>
<p class="pgtop"><a href="#">top of page</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pizzabytheslice.com/pbts_extra-overview.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

