Renders methods

The following methods are made to help you render your content. They are all based on a content model object:

\Blackbird\ContentManager\Model\Content

To get a content, you can load it by his ID, or by collection of several contents (see getCollection() section of this page).

Table of content:

Get the content object

You can retrieve the current content in your template as following : (by using the \Blackbird\ContentManager\Block\View block)

$content = $block->getContent();

-

Get all raw values

1 $content->getData();

-

Get a specific value by his field identifier

$content->getData('field_identifier'); $content->getFieldIdentifier(); $content->getAttributeText('field_identifier'); // Get the option label for a select field type.

-

Get content type model

$contentType = $content->getContentType();

-

Get custom fields collection

$customFields = $contentType->getCustomFieldCollection();

-

Get image URL for an image field type

$content->getImage($fieldIdentifier, $width = null, $height = null, $keepAspectRatio = false, $cropped = false)

  • $width: defined the width of the image, if null take the original width of the image

  • $height: defined the height of the image, if null take the original height of the image

  • $keepAspectRatio: force to keep the aspect ratio of the image

  • $croped: force to return the cropped instead of original image if it exists, false by default

Get file absolute URL, for a file field type

$content->getFile($fieldIdentifier);

-

Get the full content url

$content->getLinkUrl();

If $content is retrieved by a collection, url_key attribute must be selected.

-

Get content collection for content field type

$content->getContentCollection($fieldIdentifier, $attributes);

  • $fieldIdentifier: the string identifier of your field.

  • $attributes: PHP array, list of the fields you want to select for further use : ['title', 'url_key', 'news_date']

Render a field in HTML

$content->render($element, $params);

$params: PHP array, extra parameters for your field, will override default ones. Depending on your field type:

  • label: string - The label of the element

  • label_type: int -

    • 0 to hide the label
    • 1 for showing the label over the field value
    • 2 for label below the field value
    • 3 for an inline label
  • html_label_tag: string - The html label tag.

  • html_tag: string - The html element for the whole wrapper of the field value

  • html_id: string - wrapper html id

  • html_class: string - wrapper html css classes

  • has_link: string -

    • 0 for no link
    • 1 to wrap the field value with a link to the corresponding content.
  • type: string - The output format of your field, accepted values, depending of your field type are:

    • Checkbox: checkbox_list_values, checkbox_list_titles, checkbox_comma_values, checkbox_comma_titles
    • Radio: radio_select_title, radio_select_value
    • Multiple select: multiple_list_values, multiple_list_titles, multiple_comma_values, multiple_comma_titles
    • Date: date_short, date_medium, date_long
    • Date time: date_time_short, date_time_medium, date_time_long
    • Drop down: drop_select_title, drop_select_value
    • File: file_filename_without, file_filename_with, file_custom_label
    • Image: image_cropped, image_original
    • Category: category_name
    • Product: product_all, product_name, product_name_image, product_name_image_price, product_name_price
    • Content: content_name, content_name_linked, content_list, content_view
    • Country: country_name
    • Customer: customer_name
  • width: int - Image width

  • height: int - Image height

  • link: int (0 or 1) - Wrap the image by a link pointing to the original image

Get the content attributes

$content->getAttributes();

-

Get a content attribute by his code

$content->getAttribute('attribute_code');

-

Get the current store for a content

$content->getStore();

-

Get all store ids for a content

$content->getStoreIds();

-

Check if the content exists for a given store id

$content->existsForStore($storeId);

-

Get contents by content type identifier (view model)

\Blackbird\ContentManager\ViewModel\ContentProvider::getContentsByIdentifier($identifier)

Add the view model to your block/layout, then call it from your template to retrieve all enabled contents of a given content type, filtered by the current store, without having to build the collection yourself:

$contentProvider = $block->getContentProviderViewModel(); // your own accessor injecting the view model
$contents = $contentProvider->getContentsByIdentifier('my_content_type_identifier');

-

Render and sanitize WYSIWYG content (view model)

\Blackbird\ContentManager\ViewModel\WysiwygEditorRenderer

This view model helps when rendering an Area field configured with the Wysiwyg editor in a custom template:

  • render(string $text): string interpolates Magento CMS directives/variables that may be present in the WYSIWYG content (e.g. {{store url="..."}}) using the current store's block filter.
  • AUTHORIZED_HTML_TAGS is a public constant listing the safe HTML tags (p, a, strong, em, li, ul, ol, span, i, b, u, br) you can pass as the allowed-tags argument of Magento's Escaper::escapeHtml($data, $allowedTags) when you want to output WYSIWYG content while stripping any tag outside of this whitelist. The default field template does not apply this escaping automatically, so use it in your own templates whenever you render WYSIWYG content from an untrusted source.
Loading...