如何获得Prestashop admin dir&管理员网址?

时间:2013-04-28 11:44:46

标签: prestashop

我正在尝试从模块中获取管理员网址和管理员目录。

你能举一个例子从模块php页面找到admin url和admin dir吗?

<?php
define('PS_ADMIN_DIR', dirname(__file__) . '/../../testadmin');  
echo PS_ADMIN_DIR;

这段代码给了我

/home/myaccount/public_html/modules/suppliers/../../testadmin

我期待得到

/home/myaccount/public_html/testadmin

有什么想法吗?

5 个答案:

答案 0 :(得分:4)

您可以使用“_PS_ROOT_DIR_”获取它,并在其下方附加您的管理员目录名称

 _PS_ROOT_DIR_."/testadmin" 

这将为您提供管理目录的完整路径。 _PS_ROOT_DIR_用于获取安装它的目录的PS完整路径。

您无法直接获取管理网址,因为PS系统不知道管理员目录,因为出于安全原因,我们可以随时将管理目录名称更改为任何名称。因此,要构建一个知道您的管理目录名称为“testadmin”且控制器名称为“AdminTest”的管理URL,您可以创建一个URL,如下所示

$link = new Link(); 
_PS_BASE_URL_.__PS_BASE_URI__."testadmin/".$link->getAdminLink('AdminTest', true);

这将为您提供完整的链接,包括完整的域和子目录(如果安装在子目录中)。

getAdminLink获取两个参数,控制器名称,第二个是布尔值true / false。默认情况下,第二个设置为true,因此需要传递它。它用于为控制器创建令牌。

我希望这会对你有所帮助。

注意:以上代码仅供参考,可能需要也可能不需要进行一些更改。

答案 1 :(得分:1)

<强> PS_BASE_URI .basename(_PS_ADMIN_DIR _)

答案 2 :(得分:0)

Admin dir存储在_PS_ADMIN_DIR_变量中。

答案 3 :(得分:0)

对于管理员目录,你可以像那样

 $admin = explode(DIRECTORY_SEPARATOR,_PS_ADMIN_DIR_);
 $admin_folder = array_pop((array_slice($admin, -1)));

管理员网址

$admin_url =_PS_BASE_URL_.__PS_BASE_URI__.$admin_folder

答案 4 :(得分:-2)

<?php

$path = '/http/fpm/http/data/../../node/';

print 'path : '.$path.'<br/>';

$isdir = ( is_dir($path) === true ) ? 'yes':'no';

print 'isdir ? ['.$isdir.']<br/>';

print 'dirname : '.dirname($path).'<br/>';

$nfo = pathinfo($path);

print 'pathinfo : '.$nfo['dirname'].'<br/>';

function trimpath($p){
    $p = explode('/',$p);
        $out = array();
        foreach($p as $n => $v)
            switch($v)
            {   case '.': continue; break;
                case '..':
                    array_pop($out);
                break;
                default :
                    $out[] = $v;
                break;
            };
        return implode('/',$out);
}

print 'trimpath : '.trimpath($path);

?>

这将打印

path : /http/fpm/http/data/../../node/
isdir ? [yes]
dirname : /http/fpm/http/data/../..
pathinfo : /http/fpm/http/data/../..
trimpath : /http/fpm/node/