如果您查看浏览器开发人员工具检查器并查看 CSS 声明底部的 .elementor-kit-X {...}(其中 X 是 elementor 设置的数字),您会看到所有指定的 __globals__,其中也包括您的字体系列。
以这个控件为例:
// Circle Color
$this->add_control(
'list_circle_color', [
'label' => __('Circle Color', 'vs-elementor-elements'),
'type' => \Elementor\Controls_Manager::COLOR,
'default' => __('', 'vs-elementor-elements'),
'frontend_available' => true,
'label_block' => true,
'placeholder' => __('E.g. #11a0c0', 'vs-elementor-elements'),
]
);
接下来,在protected function render(){...} 顶部附近添加此内容:echo'<pre>';print_r($settings);echo'</pre>';
进入编辑模式,为list_circle_color 控件指定非全局颜色。然后保存。现在刷新您的页面。
您将看到您的数据打印在类似于以下内容的页面上:
(
[control_item1] => 6000
[control_item2] => Lorem ipsum
[list_circle_color] => #AFE039
[control_itemETC] => Dolor Sit Amet
)
您会看到 list_circle_color 设置为 #AFE039。
现在返回并再次编辑您的颜色,但这次选择 Elementor 全局颜色。然后保存。新的刷新你的页面。
您将看到您的数据打印在类似于以下内容的页面上:
(
[control_item1] => 6000
[control_item2] => Lorem ipsum
[__globals__] => Array
(
[list_circle_color] => globals/colors?id=13c6ce9
)
[list_circle_color] =>
[control_itemETC] => Dolor Sit Amet
)
现在如何处理这个?回想一下上面我提到过 Elementor 将您的全局变量存储在 .elementor-kit-N {...} 中?这是 w3schools 的参考资料。
但是你如何得到globals/colors?id=13c6ce9设置的值呢?您可以使用 PHP 的 str_replace 来执行此操作,如下所示:
$list_circle_color_global = $setting['__globals__']['list_circle_color'];
$list_circle_color_global = str_replace('globals/colors?id=','--e-global-color-',$list_circle_color_global);
这将为您提供所需的完整属性结尾的 var,如下所示:
--e-global-color-13c6ce9
现在可以通过小部件中的内部电子表格或作为内联样式进行分配:
.mycircle{ background-color: <?php echo 'var(' . $list_circle_color_global . ')'; ?>; }
最后,如何检查您使用的是全局还是非全局设置的颜色值?使用简单的 if 条件检查 __globals__ 和 list_circle_color:
$circlecolor = $list_circle_color_global ? 'var(' . $list_circle_color_global . ')' : $list_circle_color;
** $list_circle_color 应在指定变量时设置。我之前排除了那个。当您最初在上面指定$list_circle_color_global 时,您还将创建$list_circle_color = $settings['list_circle_color'];