TINY BLOG > Important changes to Tiny Cloud pricing > Find out more
Return to Tiny.cloud


Contribute to this page

This option enables you to have an external list of template files. This list of template files can be generated by a server side page and then inserted into the media dialog window of TinyMCE. The media files can be from an internal site images or external URLs.

Change in 3.0: The way that relative URLs are calculated has changed since the 2.x version - you may want to use absolute URLs for this setting.

Example of usage of the external_template_list_url option:

    external_template_list_url : "myexternallist.js"

Note: If utilizing the document_base_url option, the path to your file is relative from that base. If not set, your path is relative from the file containing the editor call.

Example of a external template list file: (myexternallist.js)

var tinyMCETemplateList = new Array(
    // Name, URL
    ["Logo 1", "logo.htm"],
    ["Logo 2 Over", "logo_over.tmpl"]

Example of a PHP-generated templater list file

<?php // this must be the very first line in your PHP file!

// You can't simply echo everything right away because we need to set some headers first!
$output = ''; // Here we buffer the JavaScript code we want to send to the browser.
$delimiter = "n"; // for eye candy... code gets new lines

$output .= 'var tinyMCEImageList = new Array(';

$directory = "../../media"; // Use your correct (relative!) path here

$TinyMceMediaExts =array( // allowed extensions
    'tpl'=> '1', 'tmpl' => '1', 'htm' => '1', 'html' => '1'

// Since TinyMCE3.x you need absolute image paths in the list...
$abspath = preg_replace('~^/?(.*)/[^/]+$~', '/$1', $_SERVER['SCRIPT_NAME']);

if (is_dir($directory)) {
    $direc = opendir($directory);

    while ($file = readdir($direc)) {
        if (!preg_match('~^.~', $file)) { // no hidden files / directories here...
             if (is_file("$directory/$file")) {
                // We got ourselves a file! Make an array entry:

                    $output .= $delimiter
                               . '["'
                               . utf8_encode($file)
                               . '", "'
                               . utf8_encode("$abspath/$directory/$file")
                               . '"],';

    $output = substr($output, 0, -1); // remove last comma from array item list (breaks some browsers)
    $output .= $delimiter;


// Finish code: end of array definition. Now we have the JavaScript code ready!
$output .= ');';

// Make output a real JavaScript file!
header('Content-type: text/javascript'); // browser will now recognize the file as a valid JS file

// prevent browser from caching
header('pragma: no-cache');
header('expires: 0'); // i.e. contents have already expired

// Now we can send data to the browser because all headers have been set!
echo $output;


Put this PHP code into your PHP file (the one you set as resource in the external_media_template_url option) and your browser should receive a valid JavaScript file (which of course hasn't got the typical ".js" file extension).

Except as otherwise noted, the content of this page is licensed under the Creative Commons BY-NC-SA 3.0 License, and code samples are licensed under the Apache 2.0 License.