You've added a Static Block to your layout, but you have not provided which static block should be rendered. You need to add the block_id
:
<block class="Magento\Cms\Block\Block" name="footer_left">
<arguments>
<argument name="css_class" xsi:type="string">footer_left</argument>
<argument name="block_id" xsi:type="string">[block_name]</argument>
</arguments>
</block>
Where [block_name]
is the code of your block (I'm guessing that's footer_left in your case).
Haven't tried it yet though...
The reason why this works is because with <block class="Magento\Cms\Block\Block" name="footer_left">
you're basically adding a new block to the layout of type "Magento\Cms\Block\Block" with the name "footer_left". Note that this the name of the block in the layout, not the name of the block that you've given in the admin.
The name matters in templates when you see something like this:
echo $block->getChildHtml('child_block_name');
This is layout and has nothing to do with CMS Blocks. Now, with the arguments you are configuring your block:
<arguments>
<argument name="css_class" xsi:type="string">footer_left</argument>
<argument name="block_id" xsi:type="string">[block_name]</argument>
</arguments>
These arguments are added to the $data
-parameter in the constructor of the block class. So if your look at \Magento\Cms\Block\Block::__construct()
:
public function __construct(
\Magento\Framework\View\Element\Context $context,
\Magento\Cms\Model\Template\FilterProvider $filterProvider,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Cms\Model\BlockFactory $blockFactory,
array $data = []
) {
parent::__construct($context, $data);
$this->_filterProvider = $filterProvider;
$this->_storeManager = $storeManager;
$this->_blockFactory = $blockFactory;
}
You're basically instantiating a new block class somewhat like this:
public function __construct(
\Magento\Framework\View\Element\Context $context,
\Magento\Cms\Model\Template\FilterProvider $filterProvider,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Cms\Model\BlockFactory $blockFactory,
array $data = [
'css_class' => 'footer_left',
'block_id' => '[block_name]'
]
) {
parent::__construct($context, $data);
$this->_filterProvider = $filterProvider;
$this->_storeManager = $storeManager;
$this->_blockFactory = $blockFactory;
}
Now, I will not go in to deep on the magic getters and setters of Magento, but since you've set values for $data['css_class']
and $data['block_id']
using your layout XML, the following block methods will return those values:
$block->getCssClass() // will return 'footer_left'
$block->getBlockId() // will return '[block_name]'
If you look at \Magento\Cms\Block\Block::_toHtml()
you'll see how getBlockId()
is used.