رفتن به مطلب

انتخاب رنگ در ابزارک ها | پیشرفته


پست های پیشنهاد شده

سلام دوستان

من یک ابزارک دارم که تصویرش رو میتونید در زیر ببینید.

c4yc_unfghtitled-1.png

این هم کدش :

<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<li><div class="head head_yellow"><i class="fa fa-newspaper-o"></i><span>اجتماعی</span></div>
<img src="images/topfoter_25.png" />
<h5>اتاق خبر گزارش میدهد</h5>
<H3></H3>
<span class="date_cp">13 فروردین 1395</span><span class="comment_cp"><i class="fa fa-paper-plane"></i>7 دیدگاه</span><br />
<p></p>
</li>
</div>

من با یک کلاس head و یک کلاس head_color سربرگ این ابزار رو کدنویسی کردم. یعنی مثلا به head_yellow توی css یک بک گراند دادم و همینطور به همین صورت به رنگ های دیگر. حالا میخوام توی قسمت تنظیمات این ابزارک، یک تنظیماتی باشه که بشه رنگ رو انتخاب کرد و بر اساس اون رنگ، بک گراند مورد نظر انتخاب بشه.

مثلا من رنگ زرد رو در ابزارک انتخاب کردم. حالا باید بیاد و head_yellow رو بخونه. یا مثلا اگه آبی رو انتخاب کردم باید head_blue رو بخونه. من خودم خیلی در این زمینه ها حرفه ای نیستم . اگر میشه من رو راهنمایی کنید

ممنون

ویرایش شده توسط hcp90
لینک به ارسال

سلام

ابزارک هست ؟! قالب رو از جایی گرفتین یا طراحی اختصاصی هست !؟

اگه اختصاصی هست بهتره به طراح قالب بدین این قسمت رو اضافه کنه .

اگه دانلود کردین ، لینک قالب رو بفرستین تا بررسی کنم .

لینک به ارسال
در 2 ساعت قبل، alitna گفته است :

سلام

ابزارک هست ؟! قالب رو از جایی گرفتین یا طراحی اختصاصی هست !؟

اگه اختصاصی هست بهتره به طراح قالب بدین این قسمت رو اضافه کنه .

اگه دانلود کردین ، لینک قالب رو بفرستین تا بررسی کنم .

سلام

این یک ابزارک هست و طراحی خودم هم هست

لینک به ارسال

خوب باید در قسمت کدهای ابزارک ، یک اینپوت تکس ، با یک نام خاص بذارین و در قسمت ذخیره اطلاعاتش هم اون نام اینپوت رو وارد کنین تا ذخیره بشه اطلاعاتش ..

و بعد در قسمت نمایشش هم از مقدار اون کد برای نمایش استایل هر قسمت استفاده کنین .

مثلا اگه red وارد شد ، استایل head_red رو اجرا کنه .

لینک به ارسال
در 11 ساعت قبل، alitna گفته است :

خوب باید در قسمت کدهای ابزارک ، یک اینپوت تکس ، با یک نام خاص بذارین و در قسمت ذخیره اطلاعاتش هم اون نام اینپوت رو وارد کنین تا ذخیره بشه اطلاعاتش ..

و بعد در قسمت نمایشش هم از مقدار اون کد برای نمایش استایل هر قسمت استفاده کنین .

مثلا اگه red وارد شد ، استایل head_red رو اجرا کنه .

فقط لطفا این کد رو نگاه کنید . ( ابزارک )

	<?php

// Creating the widget 
class catbox_widget extends WP_Widget {

    function __construct() {
        parent::__construct(
                // Base ID of your widget
                'catbox_widget',
                // Widget name will appear in UI
                __('ابزارک جعبه دسته ( بالای فوتر )', 'news'),
                // Widget description
                array('description' => __('', 'news'),)
        );
    }

    // Creating widget front-end
    // This is where the action happens
    public function widget($args, $instance) {

        $title = apply_filters('widget_title', $instance['title']);
        $color = apply_filters('color', $instance['color']);
        
        // before and after widget arguments are defined by themes
        echo $args['before_widget'];

?>

<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<li><div class="head head_<?php echo $color; ?>"><i class="fa fa-newspaper-o"></i><span>
            <?php
               if (!empty($title))
            echo $args['before_title'] . $title . $args['after_title'];
?> 
</span></div>
<?php the_post_thumbnail(''); ?>
<h5>اتاق خبر گزارش ميدهد</h5>
<H3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></H3>
<span class="date_cp">13 فروردين 1395</span><span class="comment_cp"><i class="fa fa-paper-plane"></i><?php comments_popup_link('بدون نظر', 'يك نظر', '% نظر'); ?></span><br />
<p></p>
</li>
</div>
			<?php
        echo $args['after_widget'];
    }

    // Widget Backend 
    public function form($instance) {

        if (isset($instance['title'])) {
            $title = $instance['title'];
        } else {
            $title = __('New title', 'wpb_widget_domain');
        }
        $color=isset($instance['color'])?intval($instance['color']):8;
        // Widget admin form
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> 
            <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" />
        </p>
        <p>
            <label for="<?php echo $this->get_field_id('color'); ?>"><?php _e('Color :'); ?></label> 
            <input class="widefat" id="<?php echo $this->get_field_id('color'); ?>" name="<?php echo $this->get_field_name('color'); ?>" type="text" value="<?php echo esc_attr($color); ?>" />
        </p>

        <?php
    }

    // Updating widget replacing old instances with new
    public function update($new_instance, $old_instance) {
        $instance = array();
        $instance['title'] = (!empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
        $instance['color'] = (!empty($new_instance['color']) ) ? strip_tags($new_instance['color']) : '';
                
        return $instance;
    }

}

// Class wpb_widget ends here
// Register and load the widget
function catbox_widget_widget() {

    register_widget('catbox_widget');
}

add_action('widgets_init', 'catbox_widget_widget');

من وقتی ابزارک رو ذخیره میکنم، اون مقدار color، صفر میشه ولی اعمال میشه. یعنی اگر صفحه رو ریست کنم باز همون مقداری که وارد کردم نمایش داده میشه. اگر اون مقدار رو سیو کنم در ظاهر توی اون input، صفر میشه ولی اگر صفحه رو ریست کنم همون مقدار قبلی میاد. حالا چرا 0 میشه. شما اشکالی توی این کد میبینید

ویرایش شده توسط hcp90
لینک به ارسال

یعنی همه چیز درسته ولی فقط مقداری رو داخل input قرار میدین ، اون مقدار رو ذخیره میکنه ، ولی تو رفرش اول مقداری که وارد کردین رو نمایش نمیده و با رفرش دوم که خودتون میدین ، مقدار وارد شده مشخص میشه ؟!

توی خط 71 که دستور ذخیره کردن فیلد ها هست ، یعنی این :

    // Updating widget replacing old instances with new
    public function update($new_instance, $old_instance) {
        $instance = array();
        $instance['title'] = (!empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
        $instance['color'] = (!empty($new_instance['color']) ) ? strip_tags($new_instance['color']) : '';
                
        return $instance;
    }

باید قبل از اینپوت ها باشه .

چون وقتی صفحه لود میشه ، مقدار قبلی داخل اینپوت هست ، و بعد میرسه به عمل ذخیره کردن و مشخصه که مقداری که شما وارد کردین ، دفعه اول مشخص نمیشه ..

لینک به ارسال
در 52 دقیقه قبل، alitna گفته است :

یعنی همه چیز درسته ولی فقط مقداری رو داخل input قرار میدین ، اون مقدار رو ذخیره میکنه ، ولی تو رفرش اول مقداری که وارد کردین رو نمایش نمیده و با رفرش دوم که خودتون میدین ، مقدار وارد شده مشخص میشه ؟!

توی خط 71 که دستور ذخیره کردن فیلد ها هست ، یعنی این :


    // Updating widget replacing old instances with new
    public function update($new_instance, $old_instance) {
        $instance = array();
        $instance['title'] = (!empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
        $instance['color'] = (!empty($new_instance['color']) ) ? strip_tags($new_instance['color']) : '';
                
        return $instance;
    }

باید قبل از اینپوت ها باشه .

چون وقتی صفحه لود میشه ، مقدار قبلی داخل اینپوت هست ، و بعد میرسه به عمل ذخیره کردن و مشخصه که مقداری که شما وارد کردین ، دفعه اول مشخص نمیشه ..

من مقادیر رو وارد میکنم ولی وقتی ذخیره میکنم، اعمال میشه ولی برای دفعه بعد توی تنظیمات مقادیر 0 میشند. یعنی شما میگید کل این کد رو ببرم بالا مثله این :

	<?php

// Creating the widget 
class catbox_widget extends WP_Widget {

    function __construct() {
        parent::__construct(
                // Base ID of your widget
                'catbox_widget',
                // Widget name will appear in UI
                __('ابزارک جعبه دسته ( بالای فوتر )', 'news'),
                // Widget description
                array('description' => __('', 'news'),)
        );
    }

    // Creating widget front-end
    // This is where the action happens
    public function widget($args, $instance) {

        $title = apply_filters('widget_title', $instance['title']);
        $color = apply_filters('color', $instance['color']);
        
        // before and after widget arguments are defined by themes
        echo $args['before_widget'];

?>
<?php
$cat_tfooter = $instance['cat_tfooter'];
$my_query = new WP_Query('showposts=1&category_name='.$cat_tfooter.'');
while ($my_query->have_posts()):
$my_query->the_post();
$do_not_duplicate = $post->ID;?>
<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<li><div class="head head_<?php echo $color; ?>"><i class="fa fa-newspaper-o"></i><span>
            <?php
               if (!empty($title))
            echo $args['before_title'] . $title . $args['after_title'];
?> 
</span></div>
<?php the_post_thumbnail(''); ?>
<h5><?php echo get_post_meta(get_the_ID(), 'bf', true); ?></h5>
<H3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></H3>
<span class="date_cp">13 فروردين 1395</span><span class="comment_cp"><i class="fa fa-paper-plane"></i><?php comments_popup_link('بدون نظر', 'يك نظر', '% نظر'); ?></span><br />
<p></p>
</li>
</div>
<?php endwhile; ?>
			<?php
        echo $args['after_widget'];
    }
    
    // Updating widget replacing old instances with new
    public function update($new_instance, $old_instance) {
        $instance = array();
        $instance['title'] = (!empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
        $instance['color'] = (!empty($new_instance['color']) ) ? strip_tags($new_instance['color']) : '';
                
        return $instance;
    }
    
    // Widget Backend 
    public function form($instance) {

        if (isset($instance['title'])) {
            $title = $instance['title'];
        } else {
            $title = __('New title', 'wpb_widget_domain');
        }
$color=isset($instance['color'])?intval($instance['color']):0;

        $cat_tfooter=isset($instance['cat_tfooter'])?intval($instance['cat_tfooter']):0;
        // Widget admin form
        
        ?>

        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> 
            <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" />
        </p>
        <p>
            <label for="<?php echo $this->get_field_id('color'); ?>"><?php _e('Color :'); ?></label> 
            <input class="widefat" id="<?php echo $this->get_field_id('color'); ?>" name="<?php echo $this->get_field_name('color'); ?>" type="text" value="<?php echo esc_attr($color); ?>" />
        </p>
        <p>
            <label for="<?php echo $this->get_field_id('$cat_tfooter'); ?>"><?php _e('دسته مورد نظر'); ?></label> 
<?php wp_dropdown_categories(array(
'show_option_all' => 'همه',
'id'=>$this->get_field_id('cat_tfooter'),
'name' => $this->get_field_name( 'cat_tfooter' ),
'selected' => isset($instance['cat_tfooter']) ? $instance['cat_tfooter'] : '',
"orderby"=>'count',
'order'=>'desc',
));

    }



}

// Class wpb_widget ends here
// Register and load the widget
function catbox_widget_widget() {

    register_widget('catbox_widget');
}

add_action('widgets_init', 'catbox_widget_widget');

؟

ویرایش شده توسط hcp90
لینک به ارسال

متوجه شدم ..

این رو تست کنین ببینین درست میشه ؟!

من تست کردم ، کاملا درست بود و بعد از وارد کردن مقدار ، دیگه اینپوت 0 نمیشه :

<?php

// Creating the widget 
class catbox_widget extends WP_Widget {

    function __construct() {
        parent::__construct(
                // Base ID of your widget
                'catbox_widget',
                // Widget name will appear in UI
                __('ابزارک جعبه دسته ( بالای فوتر )', 'news'),
                // Widget description
                array('description' => __('', 'news'),)
        );
    }

    // Creating widget front-end
    // This is where the action happens
    public function widget($args, $instance) {

        $title = apply_filters('widget_title', $instance['title']);
        $color = apply_filters('color', $instance['color']);
        
        // before and after widget arguments are defined by themes
        echo $args['before_widget'];

?>

<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<li><div class="head head_<?php echo $color; ?>"><i class="fa fa-newspaper-o"></i><span>
            <?php
               if (!empty($title))
            echo $args['before_title'] . $title . $args['after_title'];
?> 
</span></div>
<?php the_post_thumbnail(''); ?>
<h5>اتاق خبر گزارش ميدهد</h5>
<H3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></H3>
<span class="date_cp">13 فروردين 1395</span><span class="comment_cp"><i class="fa fa-paper-plane"></i><?php comments_popup_link('بدون نظر', 'يك نظر', '% نظر'); ?></span><br />
<p></p>
</li>
</div>
			<?php
        echo $args['after_widget'];
    }

    // Widget Backend 
    public function form($instance) {

        if (isset($instance['title'])) {
            $title = $instance['title'];
        } else {
            $title = __('New title', 'wpb_widget_domain');
        }
        $color=isset($instance['color'])?intval($instance['color']):8;
        // Widget admin form
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> 
            <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $instance['title']; ?>" />
        </p>
        <p>
            <label for="<?php echo $this->get_field_id('color'); ?>"><?php _e('Color :'); ?></label> 
            <input class="widefat" id="<?php echo $this->get_field_id('color'); ?>" name="<?php echo $this->get_field_name('color'); ?>" type="text" value="<?php echo $instance['color']; ?>" />
        </p>

        <?php
    }

    // Updating widget replacing old instances with new
    public function update($new_instance, $old_instance) {
        $instance = array();
        $instance['title'] = (!empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
        $instance['color'] = (!empty($new_instance['color']) ) ? strip_tags($new_instance['color']) : '';
                
        return $instance;
    }

}

// Class wpb_widget ends here
// Register and load the widget
function catbox_widget_widget() {

    register_widget('catbox_widget');
}

add_action('widgets_init', 'catbox_widget_widget');

 

لینک به ارسال
در 1 ساعت قبل، alitna گفته است :

متوجه شدم ..

این رو تست کنین ببینین درست میشه ؟!

من تست کردم ، کاملا درست بود و بعد از وارد کردن مقدار ، دیگه اینپوت 0 نمیشه :


<?php

// Creating the widget 
class catbox_widget extends WP_Widget {

    function __construct() {
        parent::__construct(
                // Base ID of your widget
                'catbox_widget',
                // Widget name will appear in UI
                __('ابزارک جعبه دسته ( بالای فوتر )', 'news'),
                // Widget description
                array('description' => __('', 'news'),)
        );
    }

    // Creating widget front-end
    // This is where the action happens
    public function widget($args, $instance) {

        $title = apply_filters('widget_title', $instance['title']);
        $color = apply_filters('color', $instance['color']);
        
        // before and after widget arguments are defined by themes
        echo $args['before_widget'];

?>

<div class="col-lg-3 col-md-3 col-sm-12 col-xs-12">
<li><div class="head head_<?php echo $color; ?>"><i class="fa fa-newspaper-o"></i><span>
            <?php
               if (!empty($title))
            echo $args['before_title'] . $title . $args['after_title'];
?> 
</span></div>
<?php the_post_thumbnail(''); ?>
<h5>اتاق خبر گزارش ميدهد</h5>
<H3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></H3>
<span class="date_cp">13 فروردين 1395</span><span class="comment_cp"><i class="fa fa-paper-plane"></i><?php comments_popup_link('بدون نظر', 'يك نظر', '% نظر'); ?></span><br />
<p></p>
</li>
</div>
			<?php
        echo $args['after_widget'];
    }

    // Widget Backend 
    public function form($instance) {

        if (isset($instance['title'])) {
            $title = $instance['title'];
        } else {
            $title = __('New title', 'wpb_widget_domain');
        }
        $color=isset($instance['color'])?intval($instance['color']):8;
        // Widget admin form
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> 
            <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $instance['title']; ?>" />
        </p>
        <p>
            <label for="<?php echo $this->get_field_id('color'); ?>"><?php _e('Color :'); ?></label> 
            <input class="widefat" id="<?php echo $this->get_field_id('color'); ?>" name="<?php echo $this->get_field_name('color'); ?>" type="text" value="<?php echo $instance['color']; ?>" />
        </p>

        <?php
    }

    // Updating widget replacing old instances with new
    public function update($new_instance, $old_instance) {
        $instance = array();
        $instance['title'] = (!empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
        $instance['color'] = (!empty($new_instance['color']) ) ? strip_tags($new_instance['color']) : '';
                
        return $instance;
    }

}

// Class wpb_widget ends here
// Register and load the widget
function catbox_widget_widget() {

    register_widget('catbox_widget');
}

add_action('widgets_init', 'catbox_widget_widget');

 

آهان یعنی به جای <?php echo esc_attr($title); ?> این رو گذاشتید ؟ <?php echo $instance['title']; ?>

الان با عوض کردن این 2 تا درست . ایندو چه فرقی با هم میکنند ؟ یعنی در واقع اون esc_attr چی هست ؟

لینک به ارسال

الان درست نشد ؟!

تگ esc_attr برای این هست که خود مقدار رو چاپ میکنه و اگه به صورت امتحانی یک تگ html بذارین برای چاپ ، به صورت کاراکتری چاپ میکنه ( نه نتیجه کد Html رو )

توی پروژه های قبلی خودم که دیدم ، به همون صورت خود مقدار رو با instance چاپ کردم و دقیقا خودمم موندم که چرا وقتی با esc_attr چاپ میشه یه مقدار رو نشون میده ولی تغییرات ذخیره میشه . که برای فهمیدنش باید وقت بیشتری گذاشت :)

 

همین الان متوجه شدم . وقتی شما نام color رو وارد میکنین وسط esc_attr ، خود متن رو چاپ میکنه .. و در اصل نام رو باید به متغیر instance داد .

esc_attr یه فانکشن خروجی هست و ورودیش رو چاپ میکنه ، نه یه آرایه از متغیر instance

ویرایش شده توسط alitna
لینک به ارسال
در در ۱۳۹۵/۶/۱۶ ه‍.ش. at 15:26، alitna گفته است :

الان درست نشد ؟!

تگ esc_attr برای این هست که خود مقدار رو چاپ میکنه و اگه به صورت امتحانی یک تگ html بذارین برای چاپ ، به صورت کاراکتری چاپ میکنه ( نه نتیجه کد Html رو )

توی پروژه های قبلی خودم که دیدم ، به همون صورت خود مقدار رو با instance چاپ کردم و دقیقا خودمم موندم که چرا وقتی با esc_attr چاپ میشه یه مقدار رو نشون میده ولی تغییرات ذخیره میشه . که برای فهمیدنش باید وقت بیشتری گذاشت :)

 

همین الان متوجه شدم . وقتی شما نام color رو وارد میکنین وسط esc_attr ، خود متن رو چاپ میکنه .. و در اصل نام رو باید به متغیر instance داد .

esc_attr یه فانکشن خروجی هست و ورودیش رو چاپ میکنه ، نه یه آرایه از متغیر instance

بله درست شد. ممنون از توضیحات مفیدتون متوجه شدم . تشکر

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...