跳转到内容

如何禁用一个特定主题的应用程序


ReyDev
共有

去解决方案 由Daniel F解决,

    推荐的文章

    进入一个成员配置文件AdminCP并单击编辑首选项。在那里你可以找到这样一个主题选择器。

    我在我的一些插件中使用它。

    编辑由达斯涡
    输入错误
    链接到评论
    在其他网站上分享

    13分钟前,达斯漩涡说:

    进入一个成员配置文件AdminCP并单击编辑首选项。在那里你可以找到这样一个主题选择器。

    我在我的一些插件中使用它。

    谢谢,但我别无选择。实际上,我想避免将特定主题的课程联系在一起。

    链接到评论
    在其他网站上分享

    2021年8月22日上午5点37分,雷德夫说:

    我有一个应用程序,改变导航,但我想为特定的主题禁用它。我该怎么做呢?

    我不确定你是否只想在你的董事会上使用它,或者你是否想发布一些东西并将某个应用程序从主题中排除,所以这里有一种硬编码的方式。

    \ IPS \ yourApp \应用:init ()添加:

    /** * Init ** @return void */平民的作用初始化()如果\ IPS \调度员::()- >controllerLocation===“前线”\ IPS \主题::switchThemeX);

    这将强制应用程序在另一个主题中运行。

    X是主题的ID。

    链接到评论
    在其他网站上分享

    11小时前,阿德里亚诺·法利亚说:

    我不确定你是否只想在你的董事会上使用它,或者你是否想发布一些东西并将某个应用程序从主题中排除,所以这里有一种硬编码的方式。

    \ IPS \ yourApp \应用:init ()添加:

    /** * Init ** @return void */平民的作用初始化()如果\ IPS \调度员::()- >controllerLocation===“前线”\ IPS \主题::switchThemeX);

    这将强制应用程序在另一个主题中运行。

    X是主题的ID。

    谢谢@Adriano法
    我会努力的,让你知道

    链接到评论
    在其他网站上分享

    12小时前,阿德里亚诺·法利亚说:

    我不确定你是否只想在你的董事会上使用它,或者你是否想发布一些东西并将某个应用程序从主题中排除,所以这里有一种硬编码的方式。

    \ IPS \ yourApp \应用:init ()添加:

    /** * Init ** @return void */平民的作用初始化()如果\ IPS \调度员::()- >controllerLocation===“前线”\ IPS \主题::switchThemeX);

    这将强制应用程序在另一个主题中运行。

    X是主题的ID。

    @Adriano法
    此代码不起作用,因为此应用的前端位置没有控制器
    我只是想防止这个应用程序的代码被钩在一个特定的主题

    有没有办法通过代码禁用应用程序?

    链接到评论
    在其他网站上分享

    它不需要前端控制器,我也没提过。你需要把Applications.php,所有应用程序都必须具有!弗洛姆任何地方都可以使用,包括当这个应用程序的钩子运行时。

    不管怎样,要禁用一个应用程序,请使用:

    $app = \IPS\Applications::load(' appkey ');

    启用应用程序- > = 0;

    应用程序- >保存();

    不测试。打电话进来。

    链接到评论
    在其他网站上分享

    • 解决方案

    阿德里亚诺的代码将完全禁用应用程序,我猜这也不是你想要的:D

    1.你必须告诉我们你是如何改变导航的:D

    2.你*可以*使用\IPS\Member::loggedIn()->skin获取成员主题id,并做类似的事情:

    {{if \IPS\Member::loggedIn()->skin === 3}}这将只显示在主题3 {{else}}每个人都会看到这个{{endif}}

    类似的事情可以在Theme::hookData()中完成。这真的是一个强大的系统,所以我建议花些时间看看它到底是如何工作的:)

    你也可以在Template::compileTemplate上创建一个钩子来做你想做的任何事情,例如在模板编译之前移除钩子;)我担心,这是自找麻烦,这是你可以为自己的董事会做的事情,但我认为我们不会允许市场发生这样的变化!

    链接到评论
    在其他网站上分享

    44分钟前,阿德里亚诺·法里亚说:

    不需要有前端控制器,我从来没有提到过

    是的,你没有提到,但是这个代码意味着:

    \ IPS \调度员::()- >controllerLocation===“前线”

    链接到评论
    在其他网站上分享

    10分钟前,Daniel F说:

    阿德里亚诺的代码将完全禁用应用程序,我猜这也不是你想要的:D

    1.你必须告诉我们你是如何改变导航的:D

    2.您*可以*使用\IPS\Member::loggedIn()->skin获取成员主题id,并在模板中执行类似操作:

    {{if \IPS\Member::loggedIn()->skin === 3}}这将只显示在主题3 {{else}}每个人都会看到这个{{endif}}

    类似的事情可以在Theme::hookData()中完成。这真的是一个强大的系统,所以我建议花些时间看看它到底是如何工作的:)

    你也可以在Template::compileTemplate上创建一个钩子来做你想做的任何事情,例如在模板编译之前移除钩子;)我担心,这是自找麻烦,这是你可以为自己的董事会做的事情,但我认为我们不会允许市场发生这样的变化!

    谢谢@丹尼尔F
    如你所知,我有菜单加和搜索覆盖应用程序。我最近发布了拥有自己的搜索和导航的LAXERI主题。在我的板(ips.valacoding.com),我想禁用这两个应用程序的LAXERI他们,访客看到的LAXERI导航和搜索插件。这只是演示版本

    14分钟前,Daniel F说:

    类似的事情可以在Theme::hookData()中完成。这真的是一个强大的系统,所以我建议花些时间看看它到底是如何工作的:)

    我一定会看一看的

    链接到评论
    在其他网站上分享

    7分钟前,雷德夫说:

    是的,你没有提到,但是这个代码意味着:

    \ IPS \调度员::()- >controllerLocation===“前线”

    不。这意味着它将在前端的任何位置运行,而不是在控制器中。它可以是一个钩子、一个调节器或一个扩展插件等。

    链接到评论
    在其他网站上分享

    1小时前,Daniel F说:

    你也可以在Template::compileTemplate上创建一个钩子来做你想做的任何事情

    谢谢@丹尼尔F
    这正是我要找的。

    据我所知,所有钩子都在\IPS\IPS::$hooks中。我可以用unset方法从它移除任何钩子。但我只是想知道在IPS中有帮助或方法做它?

    链接到评论
    在其他网站上分享

    共有

    • 最近浏览0成员

      • 没有注册用户浏览此页面。
    ×
    ×
    • 创建新的。。。
    Baidu