Conditional Layout Blocks in Magento depending if logged in?

magento, magento-1.7

Solution

Use conditions in your xml file (local.xml, page.xml, etc.). E.g. to add a cms block if customer is logged in:

<customer_logged_in>
    <reference name="name_of_reference_block">
        <block type="cms/block" name="block_name">
            <action method="setBlockId">
                <block_id>block_id</block_id>
            </action>
        </block>
    </reference>
</customer_logged_in>

And same logic for logged out customers, e.g. remove a block:

<customer_logged_out>
    <reference name="name_of_reference_block">
        <remove name="name_of_block_to_remove"></remove>
    </reference>
</customer_logged_out>

Problem

What is the easiest/most recommended way to have some conditional layout logic based on if a user is logged or not? eg.. in pseudocode ``` if (customer logged in) display this custom onepage checkout layout block otherwise display this other custom layout block (for guests) ```

Original source