我希望将我的模块放在Prestashop市场,并将其标准化,每个人都可以使用它。此插件需要动态了解管理目录名称以执行其服务。
我在互联网上搜索了很多次,但我找不到解决这个问题的方法。
答案 0 :(得分:3)
您可以使用_PS_ADMIN_DIR_
中设置的[your_admin_dir]/index.php
:
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', getcwd());
}
此常量仅在您处于管理上下文时设置。您的FrontOffice不了解此目录,不应出于明显的安全原因。
课程getAdminLink
中还有一个Link
方法:
/**
* Use controller name to create a link
*
* @param string $controller
* @param bool $with_token include or not the token in the url
* @return string url
*/
public function getAdminLink($controller, $with_token = true)
{
$id_lang = Context::getContext()->language->id;
$params = $with_token ? array('token' => Tools::getAdminTokenLite($controller)) : array();
return Dispatcher::getInstance()->createUrl($controller, $id_lang, $params, false);
}
示例:
// Here we create a link to the dashboard without token
$this->context->link->getAdminLink(Tab::getClassNameById(1), false)