-1

我正在使用 Visual Composer(现为 WPBakery)开发自己的块/短代码,并通过Mustache模板呈现它们。

我将参数传递给模板,然后根据这些参数(在 Visual Composer 中设置)渲染模板。

我有订阅服务,希望能够根据用户是否登录以及用户是否有活动订阅来切换页面上的内容。

所以我有一个下拉菜单,您可以在其中选择要为其显示块的用户:

  • 为所有用户显示
  • 登录+活动子
  • 已登录 + 非活动子
  • 登出/未注册

这是text-block-template.php我获取参数的地方:

//returns true/false
$is_active_sub = call_to_sub_api($sessionID);

//Selected in dropdown of which users to show element for
switch ($show_element): 
   case 'all': 
        $user_group = 'all_users';
   case 'subs':
        $user_group = 'subscribers';
   case 'logged_out'
        $user_group = 'inactive';

//Mustache render function (takes a template + variables & renders the template)
render_mustache_func('text-template.mustache', array(
   'text_content' => $text, 
   'user_group' => $user_group, 
   'subscriber' => $is_active_sub
)) 

因此,在 Visual Composer 中,我将有两个不同的块——每个块都设置为订阅者或注销。

'Welcome back' - 将显示给登录的用户

“立即注册或登录”——将显示给已注销的用户

但是,if 语句似乎无法检查字符串值,我做错了吗?

此外,多次编写同一个 HTML 元素感觉非常多余。你会建议另一种解决方案吗?


{{#user_group=all_users}}
<p class="text">{{text_content}}</p>
{{/user_group=all_users}}

{{#user_group=subscribers}}
  {{#subscriber}}
    <p class="text">{{text_content}}</p>
  {{/subscriber}}
{{/user_group=subscribers}}

{{#user_group=inactive}}
  <p class="text">{{text_content}}</p>
{{/user_group=inactive}}

任何投入将不胜感激。

4

1 回答 1

1

Mustache 引擎没有您尝试做的条件语句。

我认为您可以为每个用户组传递一个包含布尔值的数组,然后检查它们在您的模板中是否不为空。

我还认为您可以用switch三元运算符替换您的语句(这将给出布尔值,非常适合该解决方案)。

//returns true/false
$is_active_sub = call_to_sub_api($sessionID);

// Usergroups array
$user_groups = [
    'all_users' => ($show_element === 'all'),
    'subscribers' => ($show_element === 'subs'),
    'inactive' => ($show_element === 'logged_out')
];

//Mustache render function (takes a template + variables & renders the template)
render_mustache_func('text-template.mustache', array(
   'text_content' => $text, 
   'user_groups' => $user_groups,
   'subscriber' => $is_active_sub
));
{{#user_groups.all_users}}
<p class="text">{{text_content}}</p>
{{/user_groups.all_users}}

{{#user_groups.subscribers}}
  {{#subscriber}}
    <p class="text">{{text_content}}</p>
  {{/subscriber}}
{{/user_groups.subscribers}}

{{#user_groups.inactive}}
  <p class="text">{{text_content}}</p>
{{/user_groups.inactive}}
于 2019-06-05T13:26:54.790 回答