title: Unobtrusively add block in cart
body: <p>For a module I'm working on, I want to add a block in the shopping cart screen, I want to do it unobtrusively and I'd like to place it beneath the cart content and before the other blocks (coupon, shipping estimation, totals, ...).  </p>
  
  <p>I've managed to do the <em>unobtrusive</em> part: an observer listens to <code>controller_action_layout_load_before</code> and if the <em>FullNameAction</em> is <code>checkout_cart_index</code> it adds a handle of my layout update xml file:<br>
  the observer:</p>
  
  <pre><code>public function showUpperGifts($observer)
  {
      $fullNameAction = $observer-&gt;getEvent()-&gt;getAction()-&gt;getFullActionName();
      if ($this-&gt;_isEnabled &amp;&amp;
          ($fullNameAction == 'checkout_cart_index')) {
              $layoutUpdate = $observer-&gt;getEvent()-&gt;getLayout()-&gt;getUpdate()
                                  -&gt;addHandle('my_special_handle');
      }
  }
  </code></pre>
  
  <p>and the layout file:  </p>
  
  <pre><code>&lt;my_special_handle&gt;
      &lt;reference name="content"&gt;
          &lt;block type="module/block" name="module_block" template="module/block.phtml"/&gt;
      &lt;/reference&gt;
  &lt;/my_special_handle&gt;
  </code></pre>
  
  <p>With this, the content of my phtml file shows up, but I'm not able to place it where I want.<br>
  My first try was to use the <code>before="name.of.block"</code> attribute, but it doesn't work. If I use <code>before="whatever"</code> it goes before everything inside the <code>checkout.cart</code> block, and if I use <code>after="whatever"</code> it goes after everything. In short it doesn't take the content of <code>before</code> or <code>after</code> into consideration.<br>
  Looking at the XML layout files of Magento's core modules, I realized that those argument for <code>before</code> and <code>after</code> only appears when the blocks they are placing after or before are inside the right/left columns. So my guess is that it's something special for those columns.  </p>
  
  <p>So my question is, can I specify the location of my block inside content? And yes, how?<br>
  Another solution would be to load the block asynchronously, as I could then append to the div of my choice the result of the AJAX call, but I'd rather do it in a "normal" way if I can.  </p>
  
  <p>Thanks for reading :)</p>