MB View - Gridbuilder Card

Support MB Views MB View - Gridbuilder Card

Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #36770
    David WhritenourDavid Whritenour
    Participant

    Hello,

    I am attempting to display a MB View within a Gridbuilder Card.
    However, no data is displayed.

    -I am using the MB View's generated shortcode within a Gridbuilder Raw Content Block.
    -The MB View displays fine in other locations outside of Gridbuilder Content, i.e. on a page.
    -MB Custom Fields display fine within the Gridbuilder Card using the Gridbuilder Custom Field Block.

    Any suggestions would be greatly appreciated.

    Thanks,
    David

    #36778
    Long NguyenLong Nguyen
    Moderator

    Hi David,

    You can try to set the view Type to Shortcode then add the shortcode to the Gridbuilder card to display view content. Screenshot https://monosnap.com/file/UZPOaDZOYrAeCoIYPXT2lSX5sRG6rh

    #39388
    AnLipAnLip
    Participant

    Hi. I'm having the same issue. I want to display on a WPGB card three MB custom fields with text in between :

    {{cf_type}} of {{cf_surface}} square meters, in {{cf_city}}
    and should display :
    House of 200 square meters, in Berlin

    i created a MB View that works fine on a Single Template, but does not work on a WPGB card. WPGB support only refers to creating a "custom block" but won't help further. They have documentation here https://docs.wpgridbuilder.com/resources/filter-blocks/ and I tried adapting one of their code examples ("email block") to this :

    <?php
    function register_custom_field_email_block( $blocks ) {
    
    	// "custom_field_email_block" corresponds to the block slug.
    	$blocks['custom_field_email_block'] = [
    		'name'            => 'MG - Infos Projet',
    		'render_callback' => 'render_custom_field_email_block',
    	];
    
    	return $blocks;
    
    }
    add_filter( 'wp_grid_builder/blocks', 'register_custom_field_email_block' );
    
    function render_custom_field_email_block() {
    
    	// Object can be a post, term or user.
    	$object = wpgb_get_object();
    
    	// If this is not a post (you may change this condition for user or term).
    	if ( ! isset( $object->post_type ) ) {
    		return;
    	}
    
    	// You have to change "custom_field_name" by yours.
    
    	echo do_shortcode('[mbv name="wpgb-card-meta"]');
    }
    ?>

    But it doesn't work, however I use the shortcode in WPGB card (whether inserting raw HTML and using the shortcode, or whether using the created custom block. Either way, the intermediate text displays ("... of ... square meters, in ...") but not the custom field values.

    #39400
    AnLipAnLip
    Participant

    I got an answer from GridBuilder support that I'd need to add the post ID to the shortcode.
    They gave me an example for ACF : [acf field="field_name" post_id= "{{ post.id }}"]

    So I suppose it would be for MB : [mbv name="wpgb-card-meta" post_id= "{{ post.id }}"]

    But it's still not working.

    #39422
    PeterPeter
    Moderator

    Hello,

    The view template support passing the variable to the view shortcode. So you can pass the post ID and use the ID in the template as well. Can you please share the view code that you use variable post_id?

    Please read more on the documentation https://docs.metabox.io/extensions/mb-views/#custom-data

    #39423
    AnLipAnLip
    Participant

    Hi.
    Not sure what you mean, but if you could give me a code to test i will definitely do it.

    This is the MB View code I use in the Template part :

    <div>
    {% for item in post.mg_projet_type %}
    	{{ item.name }}
    {% endfor %} de {{ post.mg_projet_surface }}m2, à {{ post.mg_projet_localisation }}</div>

    This is the shortcode the way I use it (once in a WPGB custom block with code written above, and once in a native raw content block (HTML) from WPGB :
    [mbv name="wpgb-card-meta" post_id="{{ post.id }}"]

    #39436
    PeterPeter
    Moderator

    Hello,

    To understand how to pass the custom data to the View shortcode, please do the following steps:

    1. View code: just print out the post ID

    Post ID: {{ post_id }}

    2. PHP code that works with Gridbuilder

    function render_custom_field_email_block() {
    	// Object can be a post, term or user.
    	$object = wpgb_get_object();
    
    	// If this is not a post (you may change this condition for user or term).
    	if ( ! isset( $object->post_type ) ) {
    		return;
    	}
    	// You have to change "custom_field_name" by yours.
    	echo do_shortcode('[mbv name="wpgb-card-meta" post_id='. $object->ID .']'); //pass the ID from object above
    }

    Let me know how it goes.

    #39438
    AnLipAnLip
    Participant

    Hi. Thanks for your answer.

    I am not sure what you mean by : "1. View code: just print out the post ID"

    Post ID: {{ post_id }}

    ? What do I do with this piece of code ? Do I replace all my View code and leave only this ? If so, it prints "Post ID : 1234", but I do not want to see it on the frontend. And it does not make the data from the custom fields appear on the card, I still only get the inter-text.

    #39459
    PeterPeter
    Moderator

    Hello,

    If the view template output the post ID of the card correctly, you can create the code to get any data of the post with the ID. For example:

    View code: {{ mb.rwmb_meta( 'custom_field_id', '', post_id ) }}

    Please read more on the documentation https://docs.metabox.io/functions/rwmb-meta/
    https://docs.metabox.io/extensions/mb-views/#running-php-functions

    #39463
    AnLipAnLip
    Participant

    Hi Peter, thank you for looking into this.

    Sorry but doing it this way breaks the site display. If I place the code you gave me in the View (and replace the "custom_field_id" by my custom field ID), it messes up the grid on the frontend, something is wrong with the code, or I don't have enough information as to what has to go where exactly.

    I will try to be precise in what I have now :
    - View Template = {{ mb.rwmb_meta( 'mg_projet_localisation', '', post_id }}
    nothing else than that is written in the View Template. Should it be wrapped into something such as a <div> ?. The shortcode for this view is [mbv name="wpgb-card-meta"]

    - Custom code loaded with snippet plugin (WpCodeBox) that creates a custom block using the View shortcode :

    <?php
    function register_custom_field_email_block($blocks)
    {
        // "custom_field_email_block" corresponds to the block slug.
        $blocks["custom_field_email_block"] = [
            "name" => "MG - Infos Projet",
            "render_callback" => "render_custom_field_email_block",
        ];
    
        return $blocks;
    }
    add_filter("wp_grid_builder/blocks", "register_custom_field_email_block");
    
    function render_custom_field_email_block() {
    	// Object can be a post, term or user.
    	$object = wpgb_get_object();
    
    	// If this is not a post (you may change this condition for user or term).
    	if ( ! isset( $object->post_type ) ) {
    		return;
    	}
    	// You have to change "custom_field_name" by yours.
    	echo do_shortcode('[mbv name="wpgb-card-meta" post_id='. $object->ID .']'); //pass the ID from object above
    }

    - Second option to show the content of the View template : in WP GridBuilder I use a normal content block and set it to "custom content" and paste the shortcode in the raw HTML field : [mbv name="wpgb-card-meta"]

    Both options give me the same result (according to the steps since I opened this thread) : either nothing (only the simple text, not the custom fields), either only the post ID, either it breaks the layout. It never has outputted any data from the custom fields.

    #39473
    PeterPeter
    Moderator

    Hello,

    1. I'm trying to explain the Meta Box feature and let you know how it works and what it would display on the frontend. If you want to style your data with some custom div and CSS code, just do it on your own.

    2. Can you please share some screenshots (full screen) of
    - Custom fields
    - Card (post)
    - Custom fields value add to the card

    #39554
    AnLipAnLip
    Participant

    Hi,

    Please find links to screen captures.

    At the moment I am using the MB View shortcode in a block in WP GridBuilder and get the same results whether I use :
    - [mbv name="wpgb-card-meta" post_id="{{ post.id }}"]
    - [mbv name="wpgb-card-meta"]
    It shows the same values on every post (instead of each card having it's own values).

    https://pasteboard.co/6QhYX3PLrms8.png
    https://pasteboard.co/AuH393fu1DEk.png
    https://pasteboard.co/omqNIskAbXVC.png

    Hope you can help me understand how to fetch the values of each post.

    #39592
    PeterPeter
    Moderator

    Hello,

    I do not see you use the custom variable in the view content. Can you please read my replies above again?
    https://support.metabox.io/topic/mb-view-gridbuilder-card/#post-39436
    https://support.metabox.io/topic/mb-view-gridbuilder-card/#post-39459

    View content: {{ mb.rwmb_meta( 'mg_projet_localisation', '', post_id ) }}
    (missing the close parenthesis)

    If it still does not work, I recommend using PHP code instead of Twig code (View) to display the post meta in the card. For example:

    function render_custom_field_email_block() {
    	// Object can be a post, term or user.
    	$object = wpgb_get_object();
    
    	// If this is not a post (you may change this condition for user or term).
    	if ( ! isset( $object->post_type ) ) {
    		return;
    	}
    	// You have to change "custom_field_name" by yours.
    	echo rwmb_meta( 'mg_projet_localisation', '', $object->ID )  ; //pass the ID from object above
    }
Viewing 13 posts - 1 through 13 (of 13 total)
  • You must be logged in to reply to this topic.