2013-04-28 215 views
2

我试图从模块中得到管理URL和admin目录。如何获得Prestashop管理员目录和管理员网址?

你能举一个例子,从一个模块的PHP页面发现管理URL和admin目录?

<?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

您可以通过使用 “_PS_ROOT_DIR_” 得到它,并把它添加你的管理目录名称,比如下面

_PS_ROOT_DIR_."/testadmin" 

这会给您完整路径到管理员目录。 _PS_ROOT_DIR_用于获取安装它的目录的PS完整路径。

你不能直接将管理URL,如PS系统不知道admin目录,因为我们可以为安全起见,在任何时候更改admin目录名的任何名称。因此,要构建一个管理URL知道你的管理目录名“testadmin的账户”和控制器名称“AdminTest”,你可以创建一个网址如下

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

这会给你一个完整的链接,包括完整的域名和子目录(如安装在子目录中)。

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

我希望这会帮助你。

注:以上代码仅仅是想法,它可能会或可能不会需要一些改变。

+0

,你可以得到管理员文件夹名这样的$管理=爆炸(DIRECTORY_SEPARATOR,_PS_ADMIN_DIR_); $ admin_folder = array_pop((array_slice($ admin,-1))); – 2016-11-07 16:13:14

-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/ 
0

管理员DIR存储内部_PS_ADMIN_DIR_变量。

+0

但是这个变量在任何地方都不可用 – joseantgv 2016-10-28 10:23:34

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