简体   繁体   English

Supersized.js如何将JSON编码数据调用到设置脚本中

[英]Supersized.js how do you call JSON Encoded Data into the settings script

Okay I'm quite a newbie at this but here goes: 好吧,我是一个新手,但是去了:

I'm using supersized.js on wordpress site to create full size background image slideshows for the front page suffice to say the script is setup and its working now my next problem was to make the script pull the images using wp_attachment 我在wordpress网站上使用supersized.js为首页创建了完整尺寸的背景图像幻灯片,足以说明脚本已设置,并且现在可以正常工作了,我的下一个问题是使脚本使用wp_attachment提取图像

In my functions.php file I created this: 在我的functions.php文件中,我创建了以下代码:

// Get all of the images attached to the current post
// These images will be used in the Supersized homepage gallery
function supersized_get_images($size = 'full') {
    global $post;

    $photos = get_children( array('post_parent' => $post->ID, 'post_status' =>     'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );

    $results = array();

    if ($photos) {
        foreach ($photos as $photo) {
        // get the correct URL for the selected size
        $results['image'] = wp_get_attachment_url($photo->ID);
    }
}
// encode into JSON format and pass to javascript supersettings.js
echo json_encode($results); 
}

So anyway (I put the echo ) in because I wanted to see that it was producing the correct JSON format. 所以无论如何(我把echo放进去了),因为我想看看它产生了正确的JSON格式。 The output on echo looks like this: echo的输出如下所示:

{"image":"http:\/\/pilarcorrias.secondvariety.org\/wp-content\/uploads\/0bcf5aa159739b260a77758c7d33699b.jpg"}

This I'm assuming is right. 我认为这是对的。 Supersized has a setting file that looks like this: 超大型具有如下设置文件:

jQuery(function($){
            $.supersized({

                //Functionality
                slideshow               :   1,      //Slideshow on/off
                autoplay                :   1,      //Slideshow starts playing automatically
                start_slide             :   1,      //Start slide (0 is random)
                random                  :   0,      //Randomize slide order (Ignores start slide)
                slide_interval          :   3000,   //Length between transitions
                transition              :   1,      //0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
                transition_speed        :   500,    //Speed of transition
                new_window              :   1,      //Image links open in new window/tab
                pause_hover             :   0,      //Pause slideshow on hover
                keyboard_nav            :   1,      //Keyboard navigation on/off
                performance             :   1,      //0-Normal, 1-Hybrid speed/quality, 2-Optimizes image quality, 3-Optimizes transition speed // (Only works for Firefox/IE, not Webkit)
                image_protect           :   1,      //Disables image dragging and right click with Javascript
                image_path              :   '/../../../slideshow/', //Default image path

                //Size & Position
                min_width               :   0,      //Min width allowed (in pixels)
                min_height              :   0,      //Min height allowed (in pixels)
                vertical_center         :   1,      //Vertically center background
                horizontal_center       :   1,      //Horizontally center background
                fit_portrait            :   1,      //Portrait images will not exceed browser height
                fit_landscape           :   0,      //Landscape images will not exceed browser width

                //Components
                navigation              :   1,      //Slideshow controls on/off
                thumbnail_navigation    :   1,      //Thumbnail navigation
                slide_counter           :   1,      //Display slide numbers
                slide_captions          :   1,      //Slide caption (Pull from "title" in slides array)
                slides                  :   [       //Slideshow Images
                                                    {image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.1/slides/quietchaos-kitty.jpg', title : 'Quiet Chaos by Kitty Gallannaugh', url : 'http://www.nonsensesociety.com/2010/12/kitty-gallannaugh/'},  
                                                    {image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.1/slides/wanderers-kitty.jpg', title : 'Wanderers by Kitty Gallannaugh', url : 'http://www.nonsensesociety.com/2010/12/kitty-gallannaugh/'},  
                                                    {image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.1/slides/apple-kitty.jpg', title : 'Applewood by Kitty Gallannaugh', url : 'http://www.nonsensesociety.com/2010/12/kitty-gallannaugh/'}  
                                            ]


            }); 
        });

The last line in this file declares the parameter slides and then passes image references to the slideshow. 该文件的最后一行声明参数slides ,然后将图像引用传递给幻灯片。 Now I've checked and the slideshow functions perfectly well without the URL and TITLE information, meaning I only need to give it the image object which here is the file URI meaning my bit of JSON should work verbatim. 现在,我检查了一下,并且幻灯片显示功能在没有URL和TITLE信息的情况下也能很好地运行,这意味着我只需要给它一个image对象(这里是文件URI),这意味着我的JSON应该可以逐字记录。 Now that I know I am encoding the PHP array correctly how do I get it into the supersettings.js file above... been searching everywhere but not found something that explains it in a way I can get my tiny brain around. 现在,我知道我正在正确地编码PHP数组,如何将其放入上面的supersettings.js文件中。...到处都在搜索,但是没有找到可以用我的小脑袋来解释它的内容。 Any help would be much appreciated. 任何帮助将非常感激。

Nice one! 好东西! Also, if you want to exclude the thumbnail image from your array: 此外,如果要从阵列中排除缩略图图像,请执行以下操作:

function supersized_get_images($size = 'full') {
global $post;
$thumb_id = get_post_thumbnail_id(get_the_ID()); // gets the post thumbnail ID
$photos = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID', 'exclude' => $thumb_id) );

Otherwise if you won't mix up php json to php to json and so on; 否则,如果您不将php json与php混合到json等,则不可以; if you want a clear way to parse the json file, then do it with getJson. 如果您想要一种清晰的方法来解析json文件,请使用getJson进行解析。

            jQuery(function($){


            var urltojson = 'getjson.json';




            $.getJSON(urltojson, function(photos){


            $.supersized({



                // Functionality

                slide_interval          :   5000,       // Length between transitions

                transition              :   6,          // 0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left

                transition_speed        :   1000,       // Speed of transition



                // Components                           

                slide_links             :   'blank',    // Individual links for each slide (Options: false, 'num', 'name', 'blank')

                slides                  :   photos



            });
            });

        });

If Json is fully load, supersized will be start. 如果Json已满载,则将开始超大容量。 Thats all without dirty php code in Javascript. 多数民众赞成在JavaScript中没有肮脏的php代码。

Solved it I'm a numpty - I just put the script in the functions file and called it the wp-footer hook which allowed me to echo the json variables in the script itself. 解决了这个问题,我很笨拙-我只是将脚本放入函数文件中,并将其命名为wp-footer挂钩,这使我能够在脚本本身中回显json变量。 Just for anybody else attempting to used supersized with the Wordpress attachment system here is the code I used in full: 对于尝试在Wordpress附件系统中使用超大尺寸的其他用户,这里是我完整使用的代码:

Call attachments and create json array: 调用附件并创建json数组:

// Get all of the images attached to the current post
// These images will be used in the Supersized homepage gallery

function supersized_get_images($size = 'full') {
global $post;

$photos = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );

$results = array();

if ($photos) {
    foreach ($photos as $photo) {
    $keys [] = $photo->ID;
    $captions [] = $photo->post_excerpt;
    $descriptions [] = $photo->post_content;
        // get the correct URL for the selected size
        $results[] = array('image' => wp_get_attachment_url($photo->ID, 'full'), 'title' => '', 'url' => get_attachment_link($photo->ID));
    }
}
return str_replace('\/', '/', json_encode($results));
}

Okay so that got the images, created the array and also correctly formatted the URLs stripping the escaped slashes which were appearing like this http:\\/\\/www. 好的,这样就可以得到图像,创建数组并正确设置URL的格式,以除去出现在http:\\ / \\ / www这样的转义斜杠的URL。 Next I had to embed the script in the footer before the body tag so here: 接下来,我不得不将脚本嵌入到body标签之前的页脚中,因此在这里:

function super_settings() { ?>
<script type="text/javascript">
jQuery(function($){
            $.supersized({

                //Functionality
                slideshow               :   1,      //Slideshow on/off
                autoplay                :   1,      //Slideshow starts playing automatically
                start_slide             :   1,      //Start slide (0 is random)
                random                  :   0,      //Randomize slide order (Ignores start slide)
                slide_interval          :   3000,   //Length between transitions
                transition              :   1,      //0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
                transition_speed        :   500,    //Speed of transition
                new_window              :   1,      //Image links open in new window/tab
                pause_hover             :   0,      //Pause slideshow on hover
                keyboard_nav            :   1,      //Keyboard navigation on/off
                performance             :   1,      //0-Normal, 1-Hybrid speed/quality, 2-Optimizes image quality, 3-Optimizes transition speed // (Only works for Firefox/IE, not Webkit)
                image_protect           :   1,      //Disables image dragging and right click with Javascript
                image_path              :   '/../../../slideshow/', //Default image path

                //Size & Position
                min_width               :   0,      //Min width allowed (in pixels)
                min_height              :   0,      //Min height allowed (in pixels)
                vertical_center         :   1,      //Vertically center background
                horizontal_center       :   1,      //Horizontally center background
                fit_portrait            :   1,      //Portrait images will not exceed browser height
                fit_landscape           :   0,      //Landscape images will not exceed browser width

                //Components
                navigation              :   0,      //Slideshow controls on/off
                thumbnail_navigation    :   1,      //Thumbnail navigation
                slide_counter           :   1,      //Display slide numbers
                slide_captions          :   1,      //Slide caption (Pull from "title" in slides array)
                slides                  :   <?php echo supersized_get_images(); ?>


            }); 
        });

</script>
<?php }
add_action('wp_footer', 'super_settings');

That adds an action to wp_footer which calls the super_settings function embedding the script in the footer and you can see the last line in the script echoes the supersized_get_images() function and outputs the key and value array directly into the javascript. 这会向wp_footer添加一个操作,该操作调用将脚本嵌入页脚的super_settings函数,您可以看到脚本的最后一行会回显supersized_get_images()函数,并将键和值数组直接输出到javascript中。

I'm glad I could answer this myself as its such a noob question I felt embarrassed asking it but I hope this helps people who want to used supersized without having to use an custom upload path in wordpress or mess around with FTP - just use your standard wordpress post gallery. 我很高兴自己能回答这个问题,我很尴尬地问了这个问题,但我希望这对希望使用超大尺寸而不用在wordpress中使用自定义上传路径或与FTP混为一谈的人有所帮助-只需使用标准的wordpress帖子库。 ] All you have to do is include the supersized.js and the settings script on the page where you want the background to appear. ]您所要做的就是在要显示背景的页面上包含supersized.js和设置脚本。 Viola! 中提琴! If anyone has improvement they can suggest by all mean post them here. 如果有人有进步,他们可以建议将其张贴在这里。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM