PHP函数动态切换路径

时间:2011-01-12 23:33:53

标签: php joomla

朋友您好我正在编写Joomla模板,我想使用将静态文件放入CDN的选项。

我希望模板在模板选项面板中查找用户提到的CDN路径,如果没有输入,则必须从默认本地文件夹中获取文件。

本地CDN文件夹位于模板文件夹的根目录中:templates / myTemplate / cdn

CDN文件夹中的结构如下:

- cdn
---- css
---- images
---- js

那么究竟我在寻找的是......

我要求像这样的

的路径CDN的用户输入
$cdn_path = $doc->params->get("cdn-path","templates/myTemplate/cdn")

并通过templateDetails.xml文件获取它。现在用户的输入是...... http://mycdn.com/cdn

这里我需要一个从用户输入获取绝对路径的函数(包括http://)并将其作为函数CDNPath()的值添加,如果用户没有输入任何值,那么它必须添加默认(templates/myTemplate/cdn)作为CDNPath()

的值
function CDNPath(){

   <!-- What code should go here -->

    return <!-- and here -->;
}

在我的CSS,图像和js路径的其他函数中,我正在使用以下函数

function CSSPath(){
    return className::CDNPath().'css/';
}
function JSPath(){
    return className::CDNPath().'js/';
}
function ImagePath(){
    return className::CDNPath().'images/';
}

在我的模板中,我将文件链接为:

<link rel="stylesheet"href="<?php echo $className->CSSPath(); ?>template.css"  type="text/css" media="screen" />
<script type="text/javascript" src="<?php echo $className->JSPath(); ?>scripts.js"></script>

我主要看到两个挑战,那就是本地和远程路径,应该是该功能的确切代码。

1 个答案:

答案 0 :(得分:2)

这可能会让你开始..

<?php
    // CDN url from: $doc->params->get("cdn-path","templates/myTemplate/cdn")
    $cdn_path = "http://www.google.com/images/";

    // Local path, used if $cdn_path is not set
    $local_path = "/images/";

    // Retrieve our path
    function get_path() {
        // Bring in variables that were declared outside of the function
        global $cdn_path, $local_path;

        // If $cdn_path has a value, return it. Otherwise, return $local_path
        return (isset($cdn_path) ? $cdn_path : $local_path);
    }

    // Use get_path() in any SRC attribute to retrieve the path 
    echo '<img src="' . get_path() . 'logo.png">' . PHP_EOL;
?>