मैं बिल्कुल नया टिम्बर टेम्प्लेट बना रहा हूं, लेकिन मुझे एक प्लगइन टेम्प्लेट (एमईसी इवेंट्स) को ओवरराइड करने की आवश्यकता है - प्लगइन सपोर्ट इसके साथ मदद देता है, लेकिन इसके PHP में, जो काम करता है और मेरे बेस ट्विग टेम्प्लेट से हेडर और फुटर लाता है। , लेकिन इसमें post.thumbnail और post.title शामिल नहीं हैं जो इसे करना चाहिए।

किसी भी मामले में मैं पूरी साइट को टिम्बर/टहनी में आदर्श रूप से रखना चाहता हूं, लेकिन यह नहीं पता कि इसे टिम्बर टेम्पलेट में बदलना कहां से शुरू करना है। यहां PHP टेम्पलेट है, किसी भी मदद की बहुत सराहना की जाती है:

<?php
/**
 * The Template for displaying all single events
 */

get_header();

$single = new MEC_skin_single();
$single_event_main = $single->get_event_mec(get_the_ID());
$single_event_obj = $single_event_main[0];

// Date Widget
$single->display_date_widget($single_event_obj);
// Time Widget
$single->display_time_widget($single_event_obj);
// Location Widget
$single->display_location_widget($single_event_obj); // Show Location
// Label Widget
$single->display_label_widget($single_event_obj);
// Export Widget
$single->display_export_widget($single_event_obj);
//Social
$single->display_social_widget($single_event_obj);

get_footer();
0
iain-g 13 मार्च 2020, 20:37

1 उत्तर

सबसे बढ़िया उत्तर

मैं एमईसी इवेंट कैलेंडर से परिचित नहीं हूं, लेकिन आपके कोड स्निपेट को देखकर, मुझे लगता है कि आप इसे कम से कम एक निश्चित स्तर तक काम कर सकते हैं।

आपके पास ये तीन पंक्तियाँ हैं, उस तरह का डेटा तैयार करें जो एक टेम्पलेट में प्रदर्शित किया जाना चाहिए।

$single = new MEC_skin_single();
$single_event_main = $single->get_event_mec(get_the_ID());
$single_event_obj = $single_event_main[0];

इमारती लकड़ी और टहनी के साथ, आप अपना डेटा PHP में तैयार करना चाहते हैं और फिर इसे अपने टहनी टेम्पलेट में पास करना चाहते हैं। यहां बताया गया है कि मैं इसे कैसे करूंगा।

<?php

$context = Timber::get_context();

$single            = new MEC_skin_single();
$single_event_main = $single->get_event_mec( get_the_ID() );

$context = array_merge( $context, [
    'single'           => $single,
    'single_event_obj' => $single_event_main[0],
] );

Timber::render( 'single-event.twig', $context );

single-event.twig

{% extends 'base.twig' %}

{% block content %}

    {# Date Widget #}
    {{ single.display_date_widget(single_event_obj) }}

    {# Time Widget #}
    {{ single.display_time_widget(single_event_obj) }}

    {# Location Widget #}
    {{ single.display_location_widget(single_event_obj) }}

    {# Label Widget #}
    {{ single.display_label_widget(single_event_obj) }}

    {# Export Widget #}  
    {{ single.display_export_widget(single_event_obj) }}

    {# Social #}
    {{ single.display_social_widget(single_event_obj) }}

{% endblock }

टिम्बर में, आपके पास आमतौर पर एक आधार टेम्प्लेट होता है जिसे आप विस्तारित करते हैं। और उस आधार टेम्पलेट में, आप उन ब्लॉकों को परिभाषित करते हैं जहां आपकी सामग्री रखी जाने वाली है। यही {% extend %} और {% block %} टैग के लिए हैं। इससे आप get_header() और get_footer() से छुटकारा पा सकते हैं।

क्योंकि $single display_*_widget() विधियों वाली एक वस्तु है, हम उस फ़ंक्शन को डॉट नोटेशन के माध्यम से एक्सेस कर सकते हैं। विधियों को एक पैरामीटर के रूप में $single_event_obj की आवश्यकता होती है, इसलिए हम सुनिश्चित करते हैं कि यह चर टेम्पलेट डेटा को भी पास किया गया है।

यदि अब आपको post.thumbnail और post.title तक पहुंच की आवश्यकता है, तो आप अपने PHP टेम्पलेट में एक post चर भी तैयार कर सकते हैं:

<?php

$context = Timber::get_context();

$single            = new MEC_skin_single();
$single_event_main = $single->get_event_mec( get_the_ID() );

$context = array_merge( $context, [
    'post'             => Timber::get_post(),
    'single'           => $single,
    'single_event_obj' => $single_event_main[0],
] );

Timber::render( 'single-event.twig', $context );
1
Gchtr 14 मार्च 2020, 09:59