晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/tabatabaei/.trash/wp-content.1/themes/yuma/inc/ |
Upload File : |
<?php
/**
* Footer widget area
*
* @package yuma
*/
/**
* Footer Widgets class.
*
* @since 1.0
*/
class Yuma_Footer_Widgets{
/**
* Number of maximum registered widgets.
*
* @since 1.0
*
* @access protected
* @var int
*/
protected $max_widgets = 0;
/**
* Number of active widgets.
*
* @since 1.0
*
* @access protected
* @var int
*/
protected $active_widgets = 0;
/**
* Prefix to apply hook.
*
* @since 1.0
*
* @access protected
* @var int
*/
protected $theme_prefix = 'yuma';
/**
* Construcor.
*
* @since 1.0
*/
function __construct() {
$this->setup();
$this->init();
}
/**
* Initial setup.
*
* @since 1.0
*/
function setup() {
$support = get_theme_support( 'footer-widgets' );
if ( empty( $support ) ) {
return;
}
if ( absint( $support[0] ) < 1 ) {
return;
}
$this->max_widgets = absint( $support[0] );
$this->active_widgets = $this->get_number_of_active_widgets();
}
/**
* Initialize hooks.
*
* @since 1.0
*/
function init() {
if ( $this->max_widgets < 1 ) {
return;
}
// Register footer widgets.
add_action( 'widgets_init', array( $this, 'footer_widgets_init' ), 22 );
if ( $this->active_widgets > 0 ) {
// Add footer widgets in front end.
add_action( $this->theme_prefix . '_footer_start_action', array( $this, 'add_footer_widgets' ), 30 );
}
}
/**
* Register footer widgets.
*
* @since 1.0
*/
function footer_widgets_init() {
for ( $i = 1; $i <= $this->max_widgets; $i++ ) {
register_sidebar( array(
'name' => sprintf( __( 'Footer Widget %d', 'yuma' ), $i ),
'id' => sprintf( 'footer-%d', $i ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
}
}
/**
* Returns number of active footer widgets.
*
* @since 1.0
*
* @return int Number of active widgets.
*/
private function get_number_of_active_widgets() {
$count = 0;
for ( $i = 1; $i <= $this->max_widgets; $i++ ) {
if ( is_active_sidebar( 'footer-' . $i ) ) {
$count++;
}
}
return $count;
}
/**
* Add footer widgets content in front end.
*
* @since 1.0
*/
function add_footer_widgets() {
$flag_apply_footer_widgets_content = apply_filters( $this->theme_prefix . '_filter_footer_widgets', true );
if ( true !== $flag_apply_footer_widgets_content ) {
return false;
}
$args = array(
'container' => 'div',
'before' => '<div class="'. $this->custom_footer_widget_class( 'footer-widgets-area' ) .'">',
'after' => '</div>',
);
$footer_widgets_content = $this->get_footer_widgets_content( $args );
echo $footer_widgets_content;
}
/**
* Returns all active footer widgets number in array.
*
* @since 1.0
*
* @return array Active widgets
*/
function all_active_widgets() {
$arr = array();
for ( $i = 1; $i <= $this->max_widgets ; $i++ ) {
if ( is_active_sidebar( 'footer-' . $i ) ) {
$arr[] = $i;
}
}
return $arr;
}
/**
* Returns footer widget contents.
*
* @since 1.0
*
* @param array $args Footer widget arguments.
*/
function get_footer_widgets_content( $args ) {
$number = $this->active_widgets;
$all_active_widgets = $this->all_active_widgets();
// Default arguments.
$args = wp_parse_args( (array) $args, array(
'container' => 'div',
'container_class' => 'wrapper',
'container_style' => '',
'container_id' => '',
'wrap_class' => 'column-wrapper',
'before' => '',
'after' => '',
) );
$args = apply_filters( $this->theme_prefix . '_filter_footer_widgets_args', $args );
ob_start();
$container_open = '';
$container_close = '';
if ( ! empty( $args['container_class'] ) || ! empty( $args['container_id'] ) ) {
$container_open = sprintf(
'<%s %s %s %s>',
$args['container'],
( $args['container_class'] ) ? 'class="' . $args['container_class'] . '"':'',
( $args['container_id'] ) ? 'id="' . $args['container_id'] . '"':'',
( $args['container_style'] ) ? 'style="' . esc_attr( $args['container_style'] ) . '"':''
);
}
if ( ! empty( $args['container_class'] ) || ! empty( $args['container_id'] ) ) {
$container_close = sprintf(
'</%s>',
$args['container']
);
}
echo $container_open;
echo $args['before'];
for ( $i = 1; $i <= $number; $i++ ) {
if ( isset( $all_active_widgets[ $i - 1 ] ) ) {
$div_classes = $args['wrap_class'];
$div_classes = trim( $div_classes );
echo '<div class="' . esc_attr( $div_classes ) . '">';
$sidebar_name = 'footer-' . $all_active_widgets[ $i - 1 ];
dynamic_sidebar( $sidebar_name );
echo '</div><!-- .' . esc_attr( $args['wrap_class'] ) . ' -->';
}
} // End for loop.
echo $args['after'];
echo $container_close;
$output = ob_get_contents();
ob_end_clean();
return $output;
}
/**
* Add custom class in widgets.
*
* @since 1.0
*
* @param string $input Class for footer widget column.
*/
function custom_footer_widget_class( $input ) {
$footer_widgets_number = $this->active_widgets;
$input .= ' column-' . $footer_widgets_number;
return $input;
}
}
// Initialize.
$yuma_footer_widgets = new Yuma_Footer_Widgets();