{"id":42590,"date":"2023-11-21T11:25:02","date_gmt":"2023-11-21T11:25:02","guid":{"rendered":"https:\/\/crocoblock.com\/knowledge-base\/?post_type=article&#038;p=42590"},"modified":"2024-02-29T13:59:26","modified_gmt":"2024-02-29T13:59:26","slug":"creating-custom-listing-layouts-using-twig-and-extramural-components","status":"publish","type":"article","link":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/","title":{"rendered":"How to Create Custom Listing Layouts Using Twig and Extramural Components"},"content":{"rendered":"\n<p>Within the Timber\/Twig view, you can create a Listing template using HTML and CSS and additional tools, such as presets, dynamic data buttons, filters, and conditional tags.&nbsp;<\/p>\n\n\n\n<p>To avoid building a listing from the ground up, you can enhance it with superb layouts using extramural components. For example, you can find such components in this <a href=\"https:\/\/medium.com\/geekculture\/33-blog-card-css-for-web-design-726a037217b5\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>article<\/strong><\/a>.<\/p>\n\n\n<div class=\"note-banner d-flex border-bold border-jetsmartfilters rounded overflow-hidden p-20\"><div class=\"mr-12\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M1 21H23L12 2L1 21ZM13 18H11V16H13V18ZM13 14H11V10H13V14Z\" fill=\"#FA5450\"\/><\/svg><\/div><div class=\"d-flex flex-column\"><div class=\"text-900 mb-12\">Warning<\/div><p class=\"m-0\">Be careful when copying and pasting extramural components, as they could provide the wrong result. Pay close attention to each part of the copied code and make necessary edits. Further, we will present examples highlighting elements that might require corrections.<\/p><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"creating-a-listing-template-within-the-timbertwig-view\">Creating a Listing Template Within the Timber\/Twig View<\/h2>\n\n\n\n<p>First, we proceeded to the <strong><em>JetEngine &gt; JetEngine &gt; Performance <\/em><\/strong>tab, enabled the <strong>Timber\/Twig Views <\/strong>toggle, picked and installed the <a href=\"https:\/\/wordpress.org\/plugins\/timber-library\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em>Timber<\/em><\/a> plugin, and clicked the \u201c<strong>Save tweaks config<\/strong>\u201d button. After that, the Timber\/Twig view was available for listings.<\/p>\n\n\n\n<div class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2.webp\" alt=\"high performant timber\/twig view\" class=\"wp-image-42501\" style=\"width:840px;height:auto\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2.webp 1824w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2-1536x926.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2-600x362.webp 600w\" sizes=\"(max-width: 1824px) 100vw, 1824px\" \/><\/a><\/div>\n\n\n\n<p>Then, we headed to the <strong><em>JetEngine &gt; Listings <\/em><\/strong>tab and hit the \u201c<strong>Add New<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/add-new-listing-item-button-1.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/add-new-listing-item-button-1.webp\" alt=\"add new listing item button\" class=\"wp-image-42620\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/add-new-listing-item-button-1.webp 1824w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/add-new-listing-item-button-1-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/add-new-listing-item-button-1-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/add-new-listing-item-button-1-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/add-new-listing-item-button-1-1536x926.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/add-new-listing-item-button-1-600x362.webp 600w\" sizes=\"(max-width: 1824px) 100vw, 1824px\" \/><\/a><\/div>\n\n\n\n<p>As the <strong>Listing source<\/strong>, posts, users, terms, <a href=\"https:\/\/crocoblock.com\/knowledge-base\/features\/query-builder-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>relations<\/strong><\/a>, <a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/jetengine-options-page-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Options Pages<\/strong><\/a> data, <a href=\"https:\/\/crocoblock.com\/knowledge-base\/features\/query-builder-overview\/\"><strong>Query Builder<\/strong><\/a> data, <a href=\"https:\/\/crocoblock.com\/knowledge-base\/articles\/how-to-create-a-repeater-with-jetengine-repeater-usage-examples\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Repeater fields<\/strong><\/a>, <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-display-custom-content-type-items-using-rest-api\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Custom Content Type<\/strong><\/a> items, and <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/jetengine-how-to-display-custom-content-type-items-using-rest-api\/\"><strong>REST API endpoint<\/strong><\/a> items can be chosen.<\/p>\n\n\n\n<p>We picked the \u201cPosts\u201d <strong>Listing source <\/strong>and set a <a href=\"https:\/\/crocoblock.com\/knowledge-base\/features\/custom-post-type-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Custom Post Type<\/strong><\/a> in the following field, but a listing can be created for the default WordPress posts as well.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/creating-a-listing-template-with-the-TimberTwig-view.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/creating-a-listing-template-with-the-TimberTwig-view.webp\" alt=\"creating a listing template with the Timber\/Twig view\" class=\"wp-image-42621\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/creating-a-listing-template-with-the-TimberTwig-view.webp 1824w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/creating-a-listing-template-with-the-TimberTwig-view-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/creating-a-listing-template-with-the-TimberTwig-view-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/creating-a-listing-template-with-the-TimberTwig-view-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/creating-a-listing-template-with-the-TimberTwig-view-1536x926.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/creating-a-listing-template-with-the-TimberTwig-view-600x362.webp 600w\" sizes=\"(max-width: 1824px) 100vw, 1824px\" \/><\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"choosing-the-desired-layout-for-the-listing-template\">Choosing the Desired Layout for the Listing Template<\/h2>\n\n\n\n<p>We selected a <a href=\"https:\/\/codepen.io\/Booligoosh\/pen\/mKPpQp\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>layout<\/strong><\/a> with the hover effect from the <a href=\"https:\/\/medium.com\/geekculture\/33-blog-card-css-for-web-design-726a037217b5\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><strong>article<\/strong><\/a> with a selection of components.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/Blog-Post-Card-Layout-CSS3.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/Blog-Post-Card-Layout-CSS3.webp\" alt=\"Blog Post Card Layout CSS3\" class=\"wp-image-42622\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/Blog-Post-Card-Layout-CSS3.webp 1824w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/Blog-Post-Card-Layout-CSS3-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/Blog-Post-Card-Layout-CSS3-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/Blog-Post-Card-Layout-CSS3-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/Blog-Post-Card-Layout-CSS3-1536x926.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/Blog-Post-Card-Layout-CSS3-600x362.webp 600w\" sizes=\"(max-width: 1824px) 100vw, 1824px\" \/><\/a><\/div>\n\n\n\n<p>Since the listing template defines the layout of one item, we removed all unnecessary elements, like the info banner, wrapper component, and numbering, from the <strong>HTML <\/strong>area and copied only the first card layout:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"card-grid-space\"&gt;\n    &lt;a class=\"card\" href=\"https:\/\/codetheweb.blog\/2017\/10\/06\/html-syntax\/\" style=\"--bg-img: url(https:\/\/images1-focus-opensocial.googleusercontent.com\/gadgets\/proxy?container=focus&amp;resize_w=1500&amp;url=https:\/\/codetheweb.blog\/assets\/img\/posts\/html-syntax\/cover.jpg)\"&gt;\n      &lt;div&gt;\n        &lt;h1&gt;HTML Syntax&lt;\/h1&gt;\n        &lt;p&gt;The syntax of a language is how it works. How to actually write it. Learn HTML syntax\u2026&lt;\/p&gt;\n        &lt;div class=\"date\"&gt;6 Oct 2017&lt;\/div&gt;\n        &lt;div class=\"tags\"&gt;\n          &lt;div class=\"tag\"&gt;HTML&lt;\/div&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/a&gt;\n  &lt;\/div&gt;\n<\/code><\/pre>\n\n\n\n<p>In the <strong>CSS<\/strong> sheet, we removed the \u2018.info\u2019 and \u2018.cards-wrapper\u2019 rules since they had been applied to the deleted elements in the <strong>HTML <\/strong>sheet. Also, we eliminated the \u2018body,\u2019 \u2018a,\u2019 \u2018@media,\u2019 and \u2018@import\u2019 rules for providing style isolation, avoiding style conflicts, and reducing unnecessary overheads that might slow down the website.<\/p>\n\n\n\n<p>Then, we replaced the \u2018Heebo\u2019 and \u2018Open Sans\u2019 font families with \u2018Roboto.\u2019<\/p>\n\n\n<div class=\"note-banner d-flex border-bold border-jetsmartfilters rounded overflow-hidden p-20\"><div class=\"mr-12\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M1 21H23L12 2L1 21ZM13 18H11V16H13V18ZM13 14H11V10H13V14Z\" fill=\"#FA5450\"\/><\/svg><\/div><div class=\"d-flex flex-column\"><div class=\"text-900 mb-12\">Warning<\/div><p class=\"m-0\">Pay attention to the font families in the copied CSS code. We recommend using font families that are integrated with your WordPress theme.<\/p><\/div><\/div>\n\n\n\n<figure class=\"wp-block-image text-center size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"620\" height=\"347\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/roboto-font-family.webp\" alt=\"roboto font family\" class=\"wp-image-42643\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/roboto-font-family.webp 620w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/roboto-font-family-300x168.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/roboto-font-family-150x85.webp 150w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/roboto-font-family-600x336.webp 600w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"pasting-html-and-css-into-the-corresponding-areas\">Pasting HTML and CSS into the Corresponding Areas<\/h2>\n\n\n\n<p>We pasted the codes into the <strong>HTML <\/strong>and <strong>CSS <\/strong>sheet accordingly.<\/p>\n\n\n\n<p>We hit the \u201c<strong>Reload preview<\/strong>\u201d button and obtained a result that contained static data that needed to be replaced with <em>JetEngine<\/em> dynamic data.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-static-data.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-static-data.webp\" alt=\"listing template layout with static data\" class=\"wp-image-42641\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-static-data.webp 1824w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-static-data-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-static-data-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-static-data-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-static-data-1536x926.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-static-data-600x362.webp 600w\" sizes=\"(max-width: 1824px) 100vw, 1824px\" \/><\/a><\/div>\n\n\n\n<p>In the <strong>HTML <\/strong>area, we replaced spaces with tabs to eliminate errors.<\/p>\n\n\n\n<div class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"847\" height=\"693\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/extramural-components-in-the-HTML-and-CSS-areas.webp\" alt=\"extramural components in the HTML and CSS areas\" class=\"wp-image-42623\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/extramural-components-in-the-HTML-and-CSS-areas.webp 847w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/extramural-components-in-the-HTML-and-CSS-areas-300x245.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/extramural-components-in-the-HTML-and-CSS-areas-768x628.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/extramural-components-in-the-HTML-and-CSS-areas-600x491.webp 600w\" sizes=\"(max-width: 847px) 100vw, 847px\" \/><\/div>\n\n\n\n<p>In the <strong>CSS<\/strong> sheet, we entered the \u2018selector\u2019 statement before each CSS selector to apply CSS styles only to the current listing so they wouldn\u2019t impact the whole website.<\/p>\n\n\n<div class=\"note-banner d-flex border-bold border-jetsmartfilters rounded overflow-hidden p-20\"><div class=\"mr-12\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M1 21H23L12 2L1 21ZM13 18H11V16H13V18ZM13 14H11V10H13V14Z\" fill=\"#FA5450\"\/><\/svg><\/div><div class=\"d-flex flex-column\"><div class=\"text-900 mb-12\">Warning<\/div><p class=\"m-0\">Pay attention to the hierarchy; some lines contain two selectors to which you need to apply the \u2018selector\u2019 statement, for example:<\/p><\/div><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>selector .card:before, selector .card:after {\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"844\" height=\"691\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/selector-statement-before-each-CSS-selector.webp\" alt=\"selector statement before each CSS selector\" class=\"wp-image-42624\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/selector-statement-before-each-CSS-selector.webp 844w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/selector-statement-before-each-CSS-selector-300x246.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/selector-statement-before-each-CSS-selector-768x629.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/selector-statement-before-each-CSS-selector-600x491.webp 600w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/div>\n\n\n\n<p>Also, we changed the \u2018width: 15em;\u2019 style to \u2018width: 100%;\u2019 for the \u2018.card\u2019 rule that defines the card-like container\u2019s style. We did this to avoid problems while resizing. Also, the \u2018width: 15em;\u2019 style might be simply removed.<\/p>\n\n\n\n<div class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"844\" height=\"346\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/width-property-for-the-card-like-container.webp\" alt=\"width property for the card-like container\" class=\"wp-image-42644\" style=\"width:840px;height:auto\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/width-property-for-the-card-like-container.webp 844w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/width-property-for-the-card-like-container-300x123.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/width-property-for-the-card-like-container-768x315.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/width-property-for-the-card-like-container-600x246.webp 600w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"replacing-static-data-with-dynamic\">Replacing Static Data with Dynamic<\/h2>\n\n\n\n<p>Firstly, we needed to display the post thumbnail, so we edited a code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;a class=\"card\" href=\"{{ jet_engine_url(args={}) }}\" style=\"--bg-img: url({{ jet_engine_url(args={source:'_thumbnail_url'}) }})\"&gt;\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"685\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-picture.webp\" alt=\"HTML code for displaying the picture\" class=\"wp-image-42626\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-picture.webp 845w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-picture-300x243.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-picture-768x623.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-picture-600x486.webp 600w\" sizes=\"(max-width: 845px) 100vw, 845px\" \/><\/div>\n\n\n\n<p>We deleted the URL from the \u2018href\u2019 attribute, hit the \u201c<a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/timber-twig-listing-view-overview\/#dynamic-data\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Dynamic data<\/strong><\/a>\u201d button, and selected the \u201c<a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/timber-twig-listing-view-overview\/#dynamic-url\" target=\"_blank\" rel=\"noreferrer noopener\">Dynamic URL<\/a>\u201d option.<\/p>\n\n\n\n<div class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"843\" height=\"346\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/dynamic-URL-dynamic-data.webp\" alt=\"dynamic URL dynamic data\" class=\"wp-image-42625\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/dynamic-URL-dynamic-data.webp 843w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/dynamic-URL-dynamic-data-300x123.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/dynamic-URL-dynamic-data-768x315.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/dynamic-URL-dynamic-data-600x246.webp 600w\" sizes=\"(max-width: 843px) 100vw, 843px\" \/><\/div>\n\n\n\n<p>We picked the \u201cPermalink\u201d option as the <strong>Source <\/strong>and pushed the \u201c<strong>Insert<\/strong>\u201d button. In that way, we inserted the tag:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{{ jet_engine_url(args={}) }}\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"844\" height=\"693\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/permalink-dynamic-URL-source.webp\" alt=\"permalink dynamic URL source\" class=\"wp-image-42627\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/permalink-dynamic-URL-source.webp 844w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/permalink-dynamic-URL-source-300x246.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/permalink-dynamic-URL-source-768x631.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/permalink-dynamic-URL-source-600x493.webp 600w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/div>\n\n\n\n<p>Then, we inserted the \u2018{{ jet_engine_url(args={source:&#8217;_thumbnail_url&#8217;}) }}\u2019 tag into the \u2018style=&#8221;&#8211;bg-img: url()&#8221;\u2019 CSS variable instead of the URL.&nbsp;<\/p>\n\n\n\n<p>We achieved that by hitting the \u201c<strong>Dynamic data<\/strong>\u201d button, selecting the \u201cDynamic URL\u201d option again, picking the \u201cThumbnail URL\u201d as the <strong>Source<\/strong>, and pushing the \u201c<strong>Insert<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"684\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/thumbnail-URL-dynamic-URL-source.webp\" alt=\"thumbnail URL dynamic URL source\" class=\"wp-image-42629\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/thumbnail-URL-dynamic-URL-source.webp 846w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/thumbnail-URL-dynamic-URL-source-300x243.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/thumbnail-URL-dynamic-URL-source-768x621.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/thumbnail-URL-dynamic-URL-source-600x485.webp 600w\" sizes=\"(max-width: 846px) 100vw, 846px\" \/><\/div>\n\n\n\n<p>Eventually, we got such a code to display the post thumbnail:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;a class=\"card\" href=\"{{ jet_engine_url(args={}) }}\" style=\"--bg-img: url({{ jet_engine_url(args={source:'_thumbnail_url'}) }})\"&gt;\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"694\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/code-to-display-the-post-thumbnail-dynamically.webp\" alt=\"code to display the post thumbnail dynamically\" class=\"wp-image-42628\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/code-to-display-the-post-thumbnail-dynamically.webp 845w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/code-to-display-the-post-thumbnail-dynamically-300x246.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/code-to-display-the-post-thumbnail-dynamically-768x631.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/code-to-display-the-post-thumbnail-dynamically-600x493.webp 600w\" sizes=\"(max-width: 845px) 100vw, 845px\" \/><\/div>\n\n\n\n<p>Next, we edited the code for the post title:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;h1&gt;HTML Syntax&lt;\/h1&gt;\n<\/code><\/pre>\n\n\n\n<p>Since the &lt;h1&gt; element would disturb the semantic hierarchy on the page, we replaced it with the &lt;div&gt; element.<\/p>\n\n\n\n<p>Also, we added the \u2018class\u2019 attribute with the \u2018title\u2019 value.<\/p>\n\n\n\n<p>Then, we deleted the \u2018HTML Syntax\u2019 text, hit the \u201c<strong>Dynamic data<\/strong>\u201d button, picked the \u201c<a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/timber-twig-listing-view-overview\/#post\" target=\"_blank\" rel=\"noreferrer noopener\">Post<\/a>\u201d option, selected the \u201cPost Title\u201d data, and pushed the \u201c<strong>Insert<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"844\" height=\"343\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-title-data-to-show.webp\" alt=\"post title data to show\" class=\"wp-image-42633\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-title-data-to-show.webp 844w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-title-data-to-show-300x122.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-title-data-to-show-768x312.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-title-data-to-show-600x244.webp 600w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/div>\n\n\n\n<p>We obtained such a placeholder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"title\"&gt;{{ post.title }}&lt;\/div&gt;\n<\/code><\/pre>\n\n\n\n<p>Also, we found the \u2018selector .card h1 {\u2018 line in the <strong>CSS <\/strong>sheet and replaced \u2018h1\u2019 with the \u2018.title\u2019 class:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>selector .card .title {\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"690\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-title.webp\" alt=\"placeholder to insert the post title\" class=\"wp-image-42631\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-title.webp 845w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-title-300x245.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-title-768x627.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-title-600x490.webp 600w\" sizes=\"(max-width: 845px) 100vw, 845px\" \/><\/div>\n\n\n\n<p>Then, we replaced the static text in this code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p&gt;The syntax of a language is how it works. How to actually write it. Learn HTML syntax\u2026&lt;\/p&gt;\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"343\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-text.webp\" alt=\"HTML code for displaying the text\" class=\"wp-image-42630\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-text.webp 845w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-text-300x122.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-text-768x312.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-text-600x244.webp 600w\" sizes=\"(max-width: 845px) 100vw, 845px\" \/><\/div>\n\n\n\n<p>For that, we hit the \u201c<strong>Dynamic data<\/strong>\u201d button, picked the \u201cPost\u201d option, and selected the \u201cPost Content\u201d data.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"844\" height=\"342\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-content-data-to-show.webp\" alt=\"post content data to show\" class=\"wp-image-42632\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-content-data-to-show.webp 844w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-content-data-to-show-300x122.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-content-data-to-show-768x311.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-content-data-to-show-600x243.webp 600w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/div>\n\n\n\n<p>Then, we pressed the \u201c<a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/timber-twig-listing-view-overview\/#filter-data\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Add the filter to result<\/strong><\/a>\u201d button, picked the \u201c<a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/timber-twig-listing-view-overview\/#trim-text-by-words\" target=\"_blank\" rel=\"noreferrer noopener\">Trim text by words<\/a>\u201d option, typed the \u201c20\u201d <strong>Number of words<\/strong>, set \u201c&#8230;\u201d in the <strong>More string <\/strong>field, and clicked the \u201c<strong>Insert<\/strong>\u201d button.<\/p>\n\n\n\n<div class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"843\" height=\"343\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/trim-text-by-words-1.webp\" alt=\"trim text by words\" class=\"wp-image-42634\" style=\"width:840px;height:auto\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/trim-text-by-words-1.webp 843w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/trim-text-by-words-1-300x122.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/trim-text-by-words-1-768x312.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/trim-text-by-words-1-600x244.webp 600w\" sizes=\"(max-width: 843px) 100vw, 843px\" \/><\/div>\n\n\n\n<p>We received this element:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p&gt;{{ post.content|excerpt('20','...') }}&lt;\/p&gt;\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"841\" height=\"339\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-content.webp\" alt=\"placeholder to insert the post content\" class=\"wp-image-42637\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-content.webp 841w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-content-300x121.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-content-768x310.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-content-600x242.webp 600w\" sizes=\"(max-width: 841px) 100vw, 841px\" \/><\/div>\n\n\n\n<p>Then, we edited the code for the post date:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"date\"&gt;6 Oct 2017&lt;\/div&gt;\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"342\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-post-date.webp\" alt=\"HTML code for displaying the post date\" class=\"wp-image-42636\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-post-date.webp 845w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-post-date-300x121.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-post-date-768x311.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/HTML-code-for-displaying-the-post-date-600x243.webp 600w\" sizes=\"(max-width: 845px) 100vw, 845px\" \/><\/div>\n\n\n\n<p>We hit the \u201c<strong>Dynamic data<\/strong>\u201d button, picked the \u201cPost\u201d option, and selected the \u201cPost Date\u201d data.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"843\" height=\"339\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-date-data-to-show.webp\" alt=\"post date data to show\" class=\"wp-image-42639\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-date-data-to-show.webp 843w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-date-data-to-show-300x121.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-date-data-to-show-768x309.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/post-date-data-to-show-600x241.webp 600w\" sizes=\"(max-width: 843px) 100vw, 843px\" \/><\/div>\n\n\n\n<p>Then, we pressed the \u201c<strong>Add the filter to result<\/strong>\u201d button, picked the \u201cJetEngine Callback\u201d option, selected the \u201c<a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/dynamic-field-widget-overview\/#showcase-date-time-and-datetime-meta-fields-value-as-preferred\" target=\"_blank\" rel=\"noreferrer noopener\">Format date<\/a>\u201d callback, and pressed the \u201c<strong>Insert<\/strong>\u201d button.<\/p>\n\n\n\n<p>The description of all <em>JetEngine <\/em>callbacks can be found <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/dynamic-field-widget-overview\/#filter-field-output-overview\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"842\" height=\"339\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/format-date-callback.webp\" alt=\"format date callback\" class=\"wp-image-42635\" style=\"width:840px;height:auto\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/format-date-callback.webp 842w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/format-date-callback-300x121.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/format-date-callback-768x309.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/format-date-callback-600x242.webp 600w\" sizes=\"(max-width: 842px) 100vw, 842px\" \/><\/div>\n\n\n\n<p>We obtained such an element:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"date\"&gt;{{ post.post_date|jet_engine_callback(args={cb:'jet_engine_date'}) }}&lt;\/div&gt;\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"343\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-date.webp\" alt=\"placeholder to insert the post date\" class=\"wp-image-42638\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-date.webp 846w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-date-300x122.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-date-768x311.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-date-600x243.webp 600w\" sizes=\"(max-width: 846px) 100vw, 846px\" \/><\/div>\n\n\n\n<p>Then, we replaced the static text in this code with the term name of the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/features\/custom-taxonomy-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>custom taxonomy<\/strong><\/a> assigned to the CPT:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"tag\"&gt;HTML&lt;\/div&gt;\n<\/code><\/pre>\n\n\n\n<p>We hit the \u201c<strong>Dynamic data<\/strong>\u201d button, picked the \u201cPost\u201d option, and selected the \u201cPost Terms\u201d data. Then, we pressed the \u201c<strong>Add the filter to result<\/strong>\u201d button, picked the \u201cJetEngine Callback\u201d option, selected the \u201c<a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/dynamic-field-widget-overview\/#display-post-and-term-titles-links-and-urls\" target=\"_blank\" rel=\"noreferrer noopener\">Get term name<\/a>\u201d callback, pressed the \u201c<strong>Insert<\/strong>\u201d button, and received this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"tag\"&gt;{{ post.terms|jet_engine_callback(args={cb:'jet_get_term_name'}) }}&lt;\/div&gt;\n<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"341\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-terms.webp\" alt=\"placeholder to insert the post terms\" class=\"wp-image-42642\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-terms.webp 845w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-terms-300x121.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-terms-768x310.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/placeholder-to-insert-the-post-terms-600x242.webp 600w\" sizes=\"(max-width: 845px) 100vw, 845px\" \/><\/div>\n\n\n\n<p>When we hit the \u201c<strong>Reload preview<\/strong>\u201d button, we saw the entire result except for the picture because the <em>JetEngine<\/em> dynamic data can be checked only on the page with the <strong>Listing Grid <\/strong>or on the front end.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-dynamic-data.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-dynamic-data.webp\" alt=\"listing template layout with dynamic data\" class=\"wp-image-42640\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-dynamic-data.webp 1824w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-dynamic-data-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-dynamic-data-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-dynamic-data-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-dynamic-data-1536x926.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-layout-with-dynamic-data-600x362.webp 600w\" sizes=\"(max-width: 1824px) 100vw, 1824px\" \/><\/a><\/div>\n\n\n\n<p>Eventually, we get such a code in the <strong>HTML <\/strong>area:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Crocoblock\/fefe1e8b749eacabfd6f7a2ac75f9997.js\"><\/script>\n\n\n\n<p>And such a code in the <strong>CSS <\/strong>area:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Crocoblock\/b97f15552977185bf01819bd409c8468.js\"><\/script>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"observe-results-in-the-listing-grid\">Observe Results in the Listing Grid<\/h2>\n\n\n\n<p>To display the listing template in the listing grid, a page should be created in the WordPress block, <a href=\"https:\/\/elementor.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em>Elementor<\/em><\/a>, or <a href=\"https:\/\/bricksbuilder.io\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em>Bricks<\/em><\/a> editors.<\/p>\n\n\n\n<p>We went to the <strong><em>WordPress Dashboard &gt; Pages &gt; Add New <\/em><\/strong>tab, placed the <a href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/listing-grid-block-overview\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Listing Grid<\/strong> block<\/a>, and selected the recently created <strong>Listing <\/strong>from the drop-down menu.<\/p>\n\n\n\n<p>In the <strong>Listing Grid<\/strong>, we observed the static layout with the post data, such as thumbnail, title, content, date, and term.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-created-with-TimberTwig-view-1.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-created-with-TimberTwig-view-1.webp\" alt=\"listing template created with Timber\/Twig view\" class=\"wp-image-42645\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-created-with-TimberTwig-view-1.webp 1824w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-created-with-TimberTwig-view-1-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-created-with-TimberTwig-view-1-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-created-with-TimberTwig-view-1-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-created-with-TimberTwig-view-1-1536x926.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-created-with-TimberTwig-view-1-600x362.webp 600w\" sizes=\"(max-width: 1824px) 100vw, 1824px\" \/><\/a><\/div>\n\n\n\n<p>We hit the \u201c<strong>Publish\/Update<\/strong>\u201d button and opened the page on the front end to check the hover effect.<\/p>\n\n\n\n<div class=\"wp-block-image size-large\"><a href=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-with-the-hover-effect-created-with-TimberTwig-view-on-the-front-end.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"1824\" height=\"1100\" src=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-with-the-hover-effect-created-with-TimberTwig-view-on-the-front-end.webp\" alt=\"listing template with the hover effect created with Timber\/Twig view on the front end\" class=\"wp-image-42619\" srcset=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-with-the-hover-effect-created-with-TimberTwig-view-on-the-front-end.webp 1824w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-with-the-hover-effect-created-with-TimberTwig-view-on-the-front-end-300x181.webp 300w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-with-the-hover-effect-created-with-TimberTwig-view-on-the-front-end-1024x618.webp 1024w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-with-the-hover-effect-created-with-TimberTwig-view-on-the-front-end-768x463.webp 768w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-with-the-hover-effect-created-with-TimberTwig-view-on-the-front-end-1536x926.webp 1536w, https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/listing-template-with-the-hover-effect-created-with-TimberTwig-view-on-the-front-end-600x362.webp 600w\" sizes=\"(max-width: 1824px) 100vw, 1824px\" \/><\/a><\/div>\n\n\n\n<p>That\u2019s all. Now you know how to build a listing template with the <em>JetEngine <\/em>plugin within the Timber\/Twig view using the extramural components.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to build a Listing template within the Timber\/Twig view using the extramural components.<\/p>\n","protected":false},"author":8,"featured_media":0,"template":"","format":"standard","builder-category":[],"article-category":[388],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Create Custom Listing Layouts Using Twig &amp; Extramural Components | Crocoblock<\/title>\n<meta name=\"description\" content=\"Learn how to build a Listing template within the Timber\/Twig view using the extramural components. We provide an example of HTML and CSS code integration with the JetEngine WordPress plugin.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Create Custom Listing Layouts Using Twig &amp; Extramural Components | Crocoblock\" \/>\n<meta property=\"og:description\" content=\"Learn how to build a Listing template within the Timber\/Twig view using the extramural components. We provide an example of HTML and CSS code integration with the JetEngine WordPress plugin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/\" \/>\n<meta property=\"og:site_name\" content=\"Help Center\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-29T13:59:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2.webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/\",\"name\":\"How to Create Custom Listing Layouts Using Twig & Extramural Components | Crocoblock\",\"isPartOf\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#website\"},\"datePublished\":\"2023-11-21T11:25:02+00:00\",\"dateModified\":\"2024-02-29T13:59:26+00:00\",\"description\":\"Learn how to build a Listing template within the Timber\/Twig view using the extramural components. We provide an example of HTML and CSS code integration with the JetEngine WordPress plugin.\",\"breadcrumb\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/crocoblock.com\/knowledge-base\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Articles\",\"item\":\"https:\/\/crocoblock.com\/knowledge-base\/articles\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Create Custom Listing Layouts Using Twig and Extramural Components\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#website\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/\",\"name\":\"Help Center\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/crocoblock.com\/knowledge-base\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#organization\",\"name\":\"Help Center\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg\",\"contentUrl\":\"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg\",\"caption\":\"Help Center\"},\"image\":{\"@id\":\"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Create Custom Listing Layouts Using Twig & Extramural Components | Crocoblock","description":"Learn how to build a Listing template within the Timber\/Twig view using the extramural components. We provide an example of HTML and CSS code integration with the JetEngine WordPress plugin.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/","og_locale":"en_US","og_type":"article","og_title":"How to Create Custom Listing Layouts Using Twig & Extramural Components | Crocoblock","og_description":"Learn how to build a Listing template within the Timber\/Twig view using the extramural components. We provide an example of HTML and CSS code integration with the JetEngine WordPress plugin.","og_url":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/","og_site_name":"Help Center","article_modified_time":"2024-02-29T13:59:26+00:00","og_image":[{"url":"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2023\/11\/high-performant-timber-twig-view-2.webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/","url":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/","name":"How to Create Custom Listing Layouts Using Twig & Extramural Components | Crocoblock","isPartOf":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/#website"},"datePublished":"2023-11-21T11:25:02+00:00","dateModified":"2024-02-29T13:59:26+00:00","description":"Learn how to build a Listing template within the Timber\/Twig view using the extramural components. We provide an example of HTML and CSS code integration with the JetEngine WordPress plugin.","breadcrumb":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/crocoblock.com\/knowledge-base\/jetengine\/creating-custom-listing-layouts-using-twig-and-extramural-components\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/crocoblock.com\/knowledge-base\/"},{"@type":"ListItem","position":2,"name":"Articles","item":"https:\/\/crocoblock.com\/knowledge-base\/articles\/"},{"@type":"ListItem","position":3,"name":"How to Create Custom Listing Layouts Using Twig and Extramural Components"}]},{"@type":"WebSite","@id":"https:\/\/crocoblock.com\/knowledge-base\/#website","url":"https:\/\/crocoblock.com\/knowledge-base\/","name":"Help Center","description":"","publisher":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/crocoblock.com\/knowledge-base\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/crocoblock.com\/knowledge-base\/#organization","name":"Help Center","url":"https:\/\/crocoblock.com\/knowledge-base\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/","url":"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg","contentUrl":"https:\/\/crocoblock.com\/knowledge-base\/wp-content\/uploads\/2025\/04\/invert-crocoblock-logo.svg","caption":"Help Center"},"image":{"@id":"https:\/\/crocoblock.com\/knowledge-base\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/article\/42590"}],"collection":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/users\/8"}],"wp:attachment":[{"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/media?parent=42590"}],"wp:term":[{"taxonomy":"builder-category","embeddable":true,"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/builder-category?post=42590"},{"taxonomy":"article-category","embeddable":true,"href":"https:\/\/crocoblock.com\/knowledge-base\/wp-json\/wp\/v2\/article-category?post=42590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}