বর্তমান টেম্পলেট ফাইলটির নাম পান


57

টেমপ্লেটে ব্যবহৃত ফাইলটির বর্তমান নামটি প্রদর্শন করতে আমি এটি খুঁজে পেয়েছি:

function get_template_name () {
    foreach ( debug_backtrace() as $called_file ) {
        foreach ( $called_file as $index ) {
            if ( !is_array($index[0]) AND strstr($index[0],'/themes/') AND !strstr($index[0],'footer.php') ) {
                $template_file = $index[0] ;
            }
        }
    }
    $template_contents = file_get_contents($template_file) ;
    preg_match_all("Template Name:(.*)\n)siU",$template_contents,$template_name);
    $template_name = trim($template_name[1][0]);
    if ( !$template_name ) { $template_name = '(default)' ; }
    $template_file = array_pop(explode('/themes/', basename($template_file)));
    return $template_file . ' > '. $template_name ;
}

উত্স: একটি পৃষ্ঠায় পৃষ্ঠার টেমপ্লেটের নাম পান

এটি বেশ ভালভাবে কাজ করে, ব্যাকএন্ড ব্যতীত, টেম্পলেট নির্বাচন বাক্সে, আমি এই কুরুচিপূর্ণ অতিরিক্ত এন্ট্রি পাই:

স্ক্রিনশট

কীভাবে এটি সংশোধন করতে হবে কারও কি ধারণা আছে? আমি জানি না কেন এই ফাংশনটি ব্যাকএন্ডে ডাকা হয়। শর্তসাপেক্ষ কোনও কার্যকারিতা আছে কি is_frontend()- সম্ভবত এটি সমস্যার সমাধান করবে?


2
@ ছোডোরোইজিক্স - যদিও আমি বাছাইয়ের জন্য বাগটি বেছে নেওয়ার জন্য এক ধাপ সংক্ষেপে থামিয়ে functions.phpদেব, আমি আপনার ভিত্তির সাথে পুরোপুরি একমত হব। বিষয়টিকে আরও খারাপ করার জন্য আমি ওয়ার্ডপ্রেস কোর কোডটি স্ক্যান করেছিলাম এবং প্রায় 5 টি জায়গা পেয়েছি যেখানে এই সমস্যাটি পরিচালনা করার অনুমতি দেওয়ার জন্য একটি হুক থাকতে পারে তবে এখনও আমি কিছুই পাই নি। আমি কোর.ট্রাস.ওয়ার্ডপ্রেস.আর.গ্রে টিকিট পোস্ট করার পরামর্শ দিচ্ছি ।
মাইকস্কিঙ্কেল

@ মাইকচিন্কেল - মন্তব্যের জন্য ধন্যবাদ, তবে কোন টি template_include31 টি পরামর্শ দিয়েছে, সমস্যাটি সমাধান করবেন না? অথবা আমি আপনাকে ভুল বুঝেছি।
chodorowicz

1
@ মাইকস্কিঙ্কেল - এটি ইতিমধ্যে একটি প্যাচ রয়েছে :) কোর.ট্রাক.ওয়ার্ডপ্রেস.আর.
স্পিকেট /

1
বর্তমান টেমপ্লেটটি প্রদর্শন করতে আমি একটি নতুন প্লাগইন তৈরি করেছি। এটি ওয়ার্ডপ্রেস.আর.এক্সএক্সএটেড

4
^ অর্থাৎ। আপনি আমার উত্তরটি থেকে কোডটি নিয়েছেন এবং এটিকে একটি প্লাগইনে আবদ্ধ করেছেন। এবং আপনি
উত্সটিকে কোনও creditণ প্রদান ছাড়াই এগুলি করেছেন

উত্তর:


68

আপনি template_includeফিল্টার চলাকালীন একটি বিশ্বব্যাপী পরিবর্তনশীল সেট করতে পারেন এবং তারপরে কোন টেমপ্লেট অন্তর্ভুক্ত করা হয়েছে তা দেখার জন্য বৈশ্বিক স্থিতিশীল পরীক্ষা করতে পারেন।

আপনি স্বাভাবিকভাবেই ফাইলটির সাথে পুরো পথটি চান না, তাই পিএইচপি এর basenameফাংশনটি ব্যবহার করে ফাইলের নাম ছিন্ন করার পরামর্শ দেব d

উদাহরণ কোড:
দুটি ফাংশন, একটি সেট করে বিশ্বব্যাপী, একটিতে এটি আহ্বান জানানো।

add_filter( 'template_include', 'var_template_include', 1000 );
function var_template_include( $t ){
    $GLOBALS['current_theme_template'] = basename($t);
    return $t;
}

function get_current_template( $echo = false ) {
    if( !isset( $GLOBALS['current_theme_template'] ) )
        return false;
    if( $echo )
        echo $GLOBALS['current_theme_template'];
    else
        return $GLOBALS['current_theme_template'];
}

get_current_templateথিম ফাইলগুলিতে আপনার যেখানেই এটি প্রয়োজন সেখানে আপনি ফোন করতে পারেন , template_includeক্রিয়াটি সরে যাওয়ার পরে স্বাভাবিকভাবেই এটি হওয়া প্রয়োজন বলে মনে করে (যদি কোনও টেম্পলেট ফাইলের মধ্যে কল করা হয় তবে আপনাকে এ নিয়ে উদ্বিগ্ন হওয়ার দরকার নেই)।

পৃষ্ঠার টেমপ্লেটগুলির জন্য is_page_template(), মনে রাখবেন যা কেবলমাত্র পৃষ্ঠা টেম্পলেটগুলির ক্ষেত্রে সহায়তা করবে ( সমস্ত ফাংশনটি কম দেখায় )।

উপরে ব্যবহৃত ফাংশন সম্পর্কিত তথ্য বা রেফারেন্স:


অসাধারণ! আমি জানতাম একটি সহজ উপায় থাকতে হবে।
racl101

আমার ডিবাগিং ফাংশন তালিকার শীর্ষে যুক্ত করা।
জুলে

22

স্পষ্টতই এটি যথেষ্ট:

add_action('wp_head', 'show_template');
function show_template() {
    global $template;
    echo basename($template);
}

বা কেবল এটি সরাসরি টেমপ্লেটে ব্যবহার করুন (আমি এইচটিএমএল মন্তব্যে ফুটার.এফপি প্রতিধ্বনিত করি)

<?php global $template; echo basename($template); ?>

1
যে পেতে-টেমপ্লেট-অংশ ঠিক তাই আপনি কি জানেন সাথে কাজ করবে না, এটি শুধুমাত্র (উদাহরণস্বরূপ) single.php এবং ফাইল নয় দেখায় এটা হয়।
M-torin

হ্যাঁ এটা সত্য. অন্তর্ভুক্ত ফাইলের নাম পেতে আপনি সম্ভবত ভালো কিছু ব্যবহার করতে হবে চাইecho __FILE__;
chodorowicz

এটি ঠিক আছে, উদাহরণস্বরূপ আপনি যখন ব্যাক অফিসে কোনও পোস্ট বরাদ্দ না করে ডিফল্ট টেম্পলেটটি সংশোধন করেন। উদাহরণস্বরূপ কাস্টম রুট এবং টেমপ্লেট_যুক্ত ফিল্টার ব্যবহার করুন। ধন্যবাদ.
লুকা রেগেলিন

আমি কীভাবে এটি একটি লুপের মধ্যে করতে পারি? আমি প্রতিটি টেম্পলেট ফাইলের একটি পৃষ্ঠায় ইউআরএল আউটপুট দেওয়ার চেষ্টা করছি।
জ্যাকবডেদেভ

@ জ্যাকোবদেভ সম্ভবত ব্যবহার করছেন echo __FILE__- কারণ এটি কাজ করবে না, এটি কেবলমাত্র প্রাথমিক, প্রাথমিক টেম্পলেট প্রদর্শন করে
chodorowicz

17

নেটিভ ডাব্লুপি ফাংশনগুলির মধ্যে যেমন get_template_part () এবং পিএইচপি-র নেটিভ থিমের ফাইলগুলি ব্যবহারের সবচেয়ে নির্ভরযোগ্য উপায় অন্তর্ভুক্ত করে সমস্ত অন্তর্ভুক্ত ফাইলগুলির তালিকা সংগ্রহ করা এবং থিমের অন্তর্ভুক্ত নয় এমন যাবতীয় ফিল্টার আউট করা (বা যখন পিতামাতা এবং সন্তানের সংমিশ্রণ ব্যবহৃত হয় তখন থিমগুলি) :

$included_files = get_included_files();
$stylesheet_dir = str_replace( '\\', '/', get_stylesheet_directory() );
$template_dir   = str_replace( '\\', '/', get_template_directory() );

foreach ( $included_files as $key => $path ) {

    $path   = str_replace( '\\', '/', $path );

    if ( false === strpos( $path, $stylesheet_dir ) && false === strpos( $path, $template_dir ) )
        unset( $included_files[$key] );
}

var_dump( $included_files );

9

অন্যান্য উত্তরগুলিতে একটি সংযোজন (আরও মিষ্টি কোড)।

টেম্পলেট নাম

কেবলমাত্র বর্তমান পৃষ্ঠার টেমপ্লেটের নাম পেতে নিম্নলিখিত লাইনটি ব্যবহার করুন।

is_page() AND print get_page_template_slug( get_queried_object_id() );

ফাইলের নাম

যখন আপনি কেবলমাত্র বর্তমান টেম্পলেট ফাইলটির নাম প্রতিধ্বনি করতে চান , নীচের সাথে যান

সম্পাদনা: এখানে একটি ক্লাসে মোড়ানো প্লাগইনের নতুন সংস্করণ's এটি বর্তমান টেম্পলেট ফাইলের নাম, পাশাপাশি পৃষ্ঠার সবচেয়ে নীচে শাটডাউন হুকটিতে টেমপ্লেট শ্রেণিবদ্ধ ফাইলের নাম উভয়ই দেখায়।

প্লাগইন আপনাকে যা বলে:

  • শিশু / বর্তমান থিমের পিতামাতার কাছ থেকে টেম্পলেটটি কি?
  • টেমপ্লেটটি কি সাবফোল্ডার থেকে পরিবেশন করা হয়েছে? যদি হ্যাঁ: আপনাকে নামটি বলে
  • টেমপ্লেট ফাইলের নাম।

কেবলমাত্র একটি ফাইলটিতে নিম্নলিখিত কোডটি অনুলিপি করুন এবং নাম দিন wpse10537_template_info.php, এটি আপনার প্লাগইন ডিরেক্টরিতে আপলোড করুন এবং এটি সক্রিয় করুন।

<?php
/** Plugin Name: (#10537) »kaiser« Get Template file name */

if ( ! class_exists( 'wpse10537_template_name' ) )
{
    add_action( 'plugins_loaded', array( 'wpse10537_template_name', 'init' ) );

class wpse10537_template_name
{
    protected static $instance;

    public $stack;

    public static function init()
    {
        is_null( self :: $instance ) AND self :: $instance = new self;
        return self :: $instance;
    }

    public function __construct()
    {
        if ( is_admin() )
            return;

        add_action( 'wp', array( $this, 'is_parent_template' ), 0 );
        add_action( 'wp', array( $this, 'get_template_file' ) );
        add_action( 'template_include', array( $this, 'get_template_name' ) );
        add_action( 'shutdown', array( $this, 'get_template_name' ) );
    }

    public function get_template_name( $file )
    {
        if ( 'template_include' === current_filter() )
        {
            $this->to_stack(
                 "Template file"
                ,basename( $file )
            );
            return $file;
        }

        // Return static var on echo call outside of filter
        if (
            current_user_can( 'manage_options' )
            AND defined( 'WP_DEBUG' )
            AND WP_DEBUG 
        )
            return print implode( " &ndash; ", $this->stack );
    }

    public function get_template_file()
    {
        if ( ! is_post_type_hierarchical( get_post_type() ) )
            return;

        $slug = get_page_template_slug( get_queried_object_id() );
        if ( ! strstr( $slug, "/" ) )
            return $this->to_stack( "Template", $slug );

        $this->to_stack(
             "Subdirectory"
            ,strstr( $slug, "/", true )
        );

        $this->to_stack(
             "Template (in subdirectory)"
            ,str_replace( "/", "", strstr( $slug, "/" ) )
        );
    }

    public function is_parent_template()
    {
        if ( ! is_null( wp_get_theme()->parent ) )
            return $this->to_stack( 'from parent theme' );

        $this->to_stack( 'from current/child theme' );
    }

    public function to_stack( $part, $item = '' )
    {
        $this->stack[] = "{$part}: {$item}";
    }
} // END Class wpse10537_template_name

} // endif;

এই প্লাগইনটি এমইউ-প্লাগইন হিসাবেও চলতে পারে।

তারপরে আপনি wpse10537_get_template_name()যেকোন সময় সহজভাবে কল করতে পারেন (উদাহরণস্বরূপ কোনও থিম টেম্পলেট)। এটি বিশ্বব্যাপী নেমস্পেসকে বিশৃঙ্খলা এড়ায়।


1
template_redirectকিছুই পাস হচ্ছে না, আমি মনে করি আপনি বিভ্রান্ত করছেন template_include। এছাড়াও আমি যদি স্ট্যাটিক ভরা ভরাটের পরিবর্তে ফিল্টারের ভিতরে থাকতাম কিনা তা পরীক্ষা করে দেখতাম। যদি কিছু কোড অতিরিক্ত সময় হুক চালানোর সিদ্ধান্ত নেয় তবে এটি জিনিসকে ধ্বংস করতে পারে।
রাস্ট

@ রারস্ট ডোন / ফিক্সড। ইঙ্গিতটির জন্য এবং ফিল্টারটির নাম উল্লেখ করার জন্য ধন্যবাদ।
কায়জার

5

টেম্পলেটটির নাম পোস্টমেটা টেবিলে সঞ্চিত আছে, সুতরাং আপনাকে যা করতে হবে তা এটিকে আপনার লুপের কোথাও রাখা উচিত:

$template = get_post_meta( $post->ID, '_wp_page_template', true );
echo "Template: " . $template;

2
হ্যাঁ, আমি এটি সম্পর্কে জানি তবে সমস্যাটি হ'ল এটি কেবল তখনই কাজ করে যখন কোনও পৃষ্ঠাতে একটি সেট টেম্পলেট থাকে। কোড আমি পোস্ট সম্পর্কে শীতল জিনিস এটি বর্তমান পৃষ্ঠার ব্যবহার করছে যদি আপনাকে বলতে হবে front-page.php, index.php, single.php, page.phpবা অন্য কোন ফাইল। আপনার কোডটি কেবলমাত্র কাস্টম পৃষ্ঠা টেম্পলেটযুক্ত পৃষ্ঠাগুলির জন্য টেম্পলেটটির নাম প্রদর্শন করে।
chodorowicz

আহ, দুঃখিত - আপনার প্রশ্নের আমার ভুল ধারণা unders
সাইমন ব্ল্যাকবর্ন

@ সিমন ব্ল্যাকবর্ন এটি আমার প্রয়োজনের জন্য সহায়তা করে। ধন্যবাদ।
কারশো

3

এটি ওপি-র সমস্ত প্রশ্নের সমাধান করে না, তবে নীচের কোডটি অবশ্যই নিয়মিত প্রকাশ এবং টেমপ্লেটের ফাইলটি বিশ্লেষণের চেয়ে অবশ্যই মার্জিত।

যদি আপনি এমন কোনও পৃষ্ঠায় থাকেন যা একটি পৃষ্ঠা টেম্পলেট ব্যবহার করছে এবং আপনি পৃষ্ঠার টেমপ্লেটের নাম পেতে চান (যেমন: মানব-পঠনযোগ্য নাম যা আপনি আপনার টেমপ্লেট পিএইচপি ফাইলের শীর্ষে মন্তব্যগুলিতে সংজ্ঞায়িত করেছেন), আপনি ব্যবহার করতে পারেন এই ছোট্ট নাগেট:

if ( is_page() && $current_template = get_page_template_slug( get_queried_object_id() ) ){
    $templates = wp_get_theme()->get_page_templates();
    $template_name = $templates[$current_template];
}

আমি টেমপ্লেটের নামটি পেতে চাইছিলাম কারণ body_classআপনি যখন কোনও টেম্পলেট ব্যবহার করছেন তখন বিল্ট-ইন ওয়ার্ডপ্রেস ফাংশনটি তৈরি করে এমন মূর্খ-দীর্ঘ-গাধা শ্রেণীর নামগুলি সম্পর্কে আমি সত্যিই অসুস্থ ছিলাম । ভাগ্যক্রমে আপনাকে নিজের শ্রেণীর নামও যুক্ত করতে দেয় সেই ফাংশনের একেবারে শেষে একটি ফিল্টার হুক রয়েছে। এখানে আমার ফিল্টার। আশা করি কেউ এটি দরকারী বলে মনে করেন:

add_filter( 'body_class', 'gs_body_classes', 10, 2 );
function gs_body_classes( $classes, $class ){
    if ( is_page() && $current_template = get_page_template_slug( get_queried_object_id() ) ){
        $templates = wp_get_theme()->get_page_templates();
        $template_name = str_replace( " ", "-", strtolower( $templates[$current_template] ) );

        $classes[] = $template_name;
    }

    return $classes;
}

এই ফিল্টারটি আপনার পৃষ্ঠার টেমপ্লেটের নাম হিসাবে নিয়ে যাবে, ড্যাশগুলির সাথে স্পেসগুলি প্রতিস্থাপন করবে এবং সবকিছুকে ছোট ছোট করে তুলবে যাতে এটি অন্য সমস্ত ওয়ার্ডপ্রেস শ্রেণীর মতো দেখায়।


0

preg_match_allলাইনটি নিয়ে একটি সমস্যা আছে । পরিবর্তে এটি চেষ্টা করুন:

preg_match_all("/Template Name:(.*)\n/siU",$template_contents,$template_name);

এছাড়াও, আপনি if (!is_admin()) { .... }কেবল সীমান্তে জিনিস চালাতে ব্যবহার করতে পারেন ।


পরামর্শের জন্য ধন্যবাদ, তারা সমস্যাটি সমাধান করে না, তবে তারা আমাকে সমাধানের দিকে পরিচালিত করেছেন। এটি প্রমাণিত হয়েছে যে ডাব্লুপি, টেমপ্লেটগুলির তালিকা তৈরি করার সময়, এটি অনুসন্ধানের functions.phpসন্ধান করে "/Template Name:(.*)\n/siU"এবং এইভাবে functions.phpটেমপ্লেট ফাইল হিসাবে আচরণ করে । আমি মনে করি এটি ডাব্লুপি বাগ, এটি এমনকি এই ফাইলটির দিকে তাকাতে হবে না। সমাধান: ফাইলটিকে উপ-ডিরেক্টরিতে সরান।
chodorowicz

@ চডোরোইভিজ: এটি ডাব্লুপি-তে কোনও বাগ নয়, এটি আপনার কার্যক্রমে একটি বাগ।
wyrfel

সুতরাং মূলত ডাব্লুপি আপনাকে functions.phpফাইলের "টেম্পলেট নাম:" (এমনকি মন্তব্যে) স্ট্রিং রাখতে নিষেধ করে । আমার জন্য, ব্যক্তিগতভাবে, এটি একটি বাগ, (ছোট, তবে যাই হোক না কেন) তবে এটি আলোচনার অবধি, আমার ধারণা। আমি মনে করি আপনি বলতে পারবেন না যে ফাংশনটি নিজেই বগি।
chodorowicz

WP আপনাকে কিছু করতে নিষেধ করে না। তবে ডাব্লুপিও আপনাকে প্রতিশ্রুতি দেয় না যে আপনি কোন টেম্পলেট ফাইলটি ব্যবহার করছেন তা অনুসন্ধান করার জন্য আপনি একটি ডিবাগ_ব্যাকট্রেস () লুপ করতে পারেন। আপনি এটি ডাব্লুপি সমর্থন ফোরামে খুঁজে পেয়েছেন বলে এর অর্থ এটি আনুষ্ঠানিকভাবে সমর্থিত কোড নয়। আপনি দেখতে পাচ্ছেন, আপনার ফাংশন স্পষ্টভাবে ফুটার.এফপি বাদ দেয়। আপনি সেইসাথে অন্য শর্ত যুক্ত করতে পারেন যা ফাংশন.এফপি বাদ দেয়। বিটিডাব্লু: আপনার ফাংশন Template Nameপ্রতিটি ফাইলের মধ্যেই সন্ধান করে না , এর আগে আপনার লুপটি শেষ হয়ে গেছে।
wyrfel

সমস্যাটি ছিল না debug_backtrace()- আমি সমস্ত কোড মুছে ফেলতে পারি এবং কেবল ছেড়ে দিতে পারি preg_match_all("/Template Name..., বা এমনকি // Template Name:ডাব্লুপিও তারপরে functions.phpটেমপ্লেট ফাইল হিসাবে আচরণ করি , তবে মন্তব্যের জন্য ধন্যবাদ - এটি এমন একটি অনন্য সমস্যা যা আপনার বক্তব্য হিসাবে বলা ঠিক হবে না এটি একটি বাগ t31os সমাধান পরিষ্কার এবং পুরো বিষয়টি সমাধান করে। শুভেচ্ছা জানাচ্ছেন।
chodorowicz

0

সাথে খেলুন:

echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';

লিখিত:

বর্তমান পৃষ্ঠায় কোন টেম্পলেট পৃষ্ঠাটি সরবরাহ করা হচ্ছে তা আপনি কীভাবে আবিষ্কার করবেন?

যদি admin-bar stuffশীর্ষে বা অন্য কোনও ফাইলের উপরে পথ দেখানো হয় তবে template-loader.phpকোডের এই লাইনে ফাইলের নামটি এতে পরিবর্তন করুন : আপনার যে ফিল্মের নামটি ভেঙে যেতে হবে।

অ্যাডমিন বারে আপনার যদি এটির প্রয়োজন হয় তবে এই তালিকার শেষে কোনও ফাইল প্রবেশ করা হয়নি শ্যুর করার জন্য ডান প্রাইটিটি (প্রথম দিকের) ব্যবহার করুন । উদাহরণ স্বরূপ:

add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);

অগ্রাধিকার -5শুর করুন এটি প্রথমে লোড হয়। কীটি হ'ল সঠিক মুহুর্তে এই লাইনটি রেন্ডার করা।

এটি "বর্তমান" টেম্পলেট-ফাইলটি ফিরিয়ে দেয় না, তবে বর্তমান পৃষ্ঠা-লোডের জন্য ব্যবহৃত সমস্ত বর্তমান। সেই ধারণা থেকে কিছু যুক্তি দিয়ে "কাট আউট" হতে পারে

get_included_files()"সর্বশেষ" কী নিবন্ধিত ফাইল, propably গত টেমপ্লেট ফাইল / পার্শ্বদন্ডে উইজেট বা কিছু দ্বারা ফুটার মধ্যে ব্যবহৃত -part অন্তর্ভুক্ত শেষবার। সম্ভবত, একাধিক অন্তর্ভুক্ত ফাইলগুলি পুনরায় নিবন্ধন করে না / get_incused_files () এ আবার পপুলেট করে না।

অন্যথায়, এই সমস্যাটি হ্যাক করার জন্য নিবিড়তা অবশ্যই পরিষ্কার হতে হবেঅন্তর্ভুক্ত হওয়া ফাইলটির জন্য নিজেকে অন্তর্ভুক্ত হিসাবে প্রতিবেদন করার কোনও উপায় নেই, যতক্ষণ না এটি অন্তর্ভুক্ত করা হয় । তারপরে দৃশ্যপটটি ব্যবহার করতে দেরি হতে পারে।

"সময়" এর সর্বাধিক আপনি হবে পছন্দ:

$template = get_current_loaded_template();
if($template == 'single-product.php') add_filter('the_title' ....
if($template == 'format-gallery.php') add_action('post_thumbnail' ....

তবে টেমপ্লেটটির ওয়ার্ডপ্রেস মূল পদ্ধতির বাইরে লোড করা সম্ভব হয় নাget_template_part । পরিবর্তে আপনার প্রয়োজনগুলি আবার ডিজাইন করুন! হয়তো loop_start(), in_the_loop()এবং add_action('the_post')সমাধান যদি আপনি চান, পরিবর্তন ডেটা টেমপ্লেটের নির্ভর করে একটি লুপ মধ্যে প্রতিটি এন্ট্রির জন্য thats করত লোড হয়েছে।


-3
global $post;
$templateName = get_page_template_slug( $post->ID );
//echo $templateName;
var_dump( $templateName );
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.