| Server IP : 38.190.208.107 / Your IP : 216.73.217.46 Web Server : nginx/1.28.1 System : Linux ht2026040333114 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 User : root ( 0) PHP Version : 8.2.28 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv,eval,assert,passthru,system,exec,shell_exec,popen,proc_open MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/wp.9/wp-content/themes/blocksy/inc/components/ |
Upload File : |
<?php
namespace Blocksy;
class Sidebar {
public function render() {
if (blocksy_sidebar_position() === 'none') {
return '';
}
$sticky_output = [];
$type = blocksy_get_theme_mod('sidebar_type', 'type-1');
if (blocksy_get_theme_mod('has_sticky_sidebar', 'no') === 'yes') {
$sidebar_stick_behavior = blocksy_get_theme_mod(
'sidebar_stick_behavior',
'sidebar'
);
if ($sidebar_stick_behavior === 'sidebar') {
$sticky_output['data-sticky'] = 'sidebar';
} else {
$sticky_output['data-sticky'] = 'widgets';
}
}
$widgets_separated_output = [];
if (
$type === 'type-2'
&&
blocksy_get_theme_mod('separated_widgets', 'no') === 'yes'
) {
$widgets_separated_output['data-widgets'] = 'separated';
}
$class_output = '';
$sidebar_classes = blocksy_visibility_classes(blocksy_get_theme_mod('sidebar_visibility', [
'desktop' => true,
'tablet' => false,
'mobile' => false,
]));
if (! empty(trim($sidebar_classes))) {
$class_output = $sidebar_classes;
}
$prefix = blocksy_manager()->screen->get_prefix();
$deep_link_args = [
'return' => 'array'
];
if (! is_singular()) {
$deep_link_args['suffix'] = $prefix . '_has_sidebar';
}
$outputs = [
'before' => $this->make_action('blocksy:sidebar:before'),
'start' => $this->make_action('blocksy:sidebar:start'),
'widgets' => $this->get_widgets(),
'end' => $this->make_action('blocksy:sidebar:end'),
'after' => $this->make_action('blocksy:sidebar:after'),
];
$main_content = $outputs['start'] . $outputs['widgets'] . $outputs['end'];
if (! empty($main_content)) {
$main_content = blocksy_html_tag(
'div',
array_merge(
[
'class' => 'ct-sidebar',
],
$sticky_output,
$widgets_separated_output
),
$main_content
);
}
$aside_content = $outputs['before'] . $main_content . $outputs['after'];
if (empty($aside_content)) {
return '<aside></aside>';
}
return blocksy_html_tag(
'aside',
array_merge(
[
'class' => $class_output,
'data-type' => $type,
'id' => 'sidebar',
],
blocksy_generic_get_deep_link($deep_link_args),
blocksy_schema_org_definitions('sidebar', [
'array' => true,
])
),
$aside_content
);
}
private function make_action($action) {
ob_start();
do_action($action);
return trim(ob_get_clean());
}
private function get_widgets() {
$sidebar_to_render = $this->get_sidebar_to_render();
if (! is_active_sidebar($sidebar_to_render)) {
return '';
}
ob_start();
$has_last_n_widgets = false;
if (blocksy_get_theme_mod('has_sticky_sidebar', 'no') === 'yes') {
$sidebar_stick_behavior = blocksy_get_theme_mod(
'sidebar_stick_behavior',
'sidebar'
);
if ($sidebar_stick_behavior === 'last_n_widgets') {
$sidebars_widgets = wp_get_sidebars_widgets();
$has_last_n_widgets = true;
}
}
if ($has_last_n_widgets) {
add_action('dynamic_sidebar', [
$this,
'render_dynamic_sidebar_hook'
]);
}
dynamic_sidebar($sidebar_to_render);
if ($has_last_n_widgets) {
echo '</div>';
remove_action('dynamic_sidebar', [
$this,
'render_dynamic_sidebar_hook'
]);
}
return trim(ob_get_clean());
}
public function render_dynamic_sidebar_hook($widget) {
$sidebars_widgets = wp_get_sidebars_widgets();
$widget_id = $widget['id'];
$reversed_widgets = array_reverse(
$sidebars_widgets[$this->get_sidebar_to_render()]
);
$widget_index = array_search($widget_id, $reversed_widgets);
$sticky_widget_number = min(
intval(blocksy_get_theme_mod(
'sticky_widget_number',
1
)),
count($reversed_widgets)
);
if ($widget_index + 1 === $sticky_widget_number) {
echo '<div class="ct-sticky-widgets">';
}
}
private function get_sidebar_to_render() {
if (class_exists('BlocksySidebarsManager')) {
$manager = new \BlocksySidebarsManager();
$maybe_sidebar = $manager->maybe_get_sidebar_that_matches();
if ($maybe_sidebar) {
return $maybe_sidebar;
}
}
$prefix = blocksy_manager()->screen->get_prefix();
if ($prefix === 'product' || $prefix === 'woo_categories') {
return 'sidebar-woocommerce';
}
if (
is_search()
&&
isset($_GET['post_type'])
&&
$_GET['post_type'] === 'product'
) {
return 'sidebar-woocommerce';
}
return 'sidebar-1';
}
}