3

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

你能举个例子从一个模块 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

有任何想法吗?

4

6 回答 6

4

您可以使用“_PS_ROOT_DIR_”获取它,并在后面附加您的管理目录名称,如下所示

 _PS_ROOT_DIR_."/testadmin" 

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

不能直接获取 admin url,因为 PS 系统不知道 admin 目录,因为出于安全考虑,我们可以随时将 admin 目录名称更改为任何名称。因此,要构造一个知道您的管理目录名称“testadmin”和控制器名称“AdminTest”的管理 url,您可以创建一个如下所示的 url

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

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

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

我希望这能帮到您。

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

于 2013-04-29T06:14:15.887 回答
2

PS_BASE_URI .basename(_PS_ADMIN_DIR_)

于 2017-01-12T13:56:02.740 回答
2
$shop_url_nossl = _PS_BASE_URL_ . __PS_BASE_URI__;
$shop_url_ssl   = _PS_BASE_URL_SSL_ . __PS_BASE_URI__;
$admin_folder   = basename(_PS_ADMIN_DIR_);
$admin_path     = _PS_ADMIN_DIR_;
$shop_path      = _PS_ROOT_DIR_;

输出:

http://www.website.com/
https://www.website.com/
admin123asd
/home/webaccount/public_html/admin123asd
/home/webaccount/public_html
于 2021-11-27T10:39:33.323 回答
0

管理目录存储在_PS_ADMIN_DIR_变量中。

于 2016-03-19T12:14:52.783 回答
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
于 2016-11-07T16:15:02.943 回答
-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/
于 2013-04-28T12:45:13.210 回答