WordPress.org

Ready to get started?Download WordPress

Forums

vSlider Multi Image Slider for WordPress
[resolved] Multisite patch for vSlider to use TimThumb (10 posts)

  1. rmose
    Member
    Posted 2 years ago #

    After installing vSlider 4.1.2, no pictures would display on a subsite of a multisite. After some debugging and searches, it appears that this has been a known problem for months. I'm more than a little surprised that a fix has not been implemented by now.

    The problem is that TimThumb is a generic tool and has no knowledge of WordPress directory structure. Therefore, it makes assumptions that do not work with multisite mapping in WordPress. The solution is either to use a WordPress-aware tool or to give TimThumb more details about the WordPress directory structure.

    The second solution is less desirable, because it exposes the internal directory structure to the Internet and undoes pretty URLs. TimThumb is not really the right tool to use in this situation, but given that this tool is being used, it is up to the theme or plugin writer to make the appropriate accommodations for TimThumb.

    The solution described at

    http://wordpress.org/support/topic/plugin-vslider-multi-image-slider-for-wordpress-timthumb-breaks-in-multi-site-setup

    unfortunately no longer works because of updates to the code. The following changes combine the solution described above with the steps recommended at

    http://www.binarymoon.co.uk/2009/10/timthumb-wordpress-mu/

    The following line numbers are from the original file. As you add lines to the file, the line numbers will increase from the original, of course, but they should be within the next 5 lines or so. Starting at line 943 is

    function vslider($option='vslider_options'){
        $options = get_option($option);

    Add the following lines of code to check for a blog_id and create the blog path, which will be added to the image information later.

    function vslider($option='vslider_options'){
        global $blog_id;
        if (isset($blog_id) && $blog_id > 0) {
            $blogs_dir = '/blogs.dir/' . $blog_id;
        }
        $options = get_option($option);

    Line 966 is

    $thumbnailSrc = $src[0];

    Add the following lines to update the thumbnail information with the correct blog information.

    $thumbnailSrc = $src[0];
                    if (isset($blog_id) {
                        $imageParts = explode('/files/', $thumbnailSrc);
                        if (isset($imageParts[1])) {
                            $thumbnailSrc = $blogs_dir . '/files/' . $imageParts[1];
                        }
                    }

    Line 983 is the following.

    $img_url = WP_PLUGIN_URL.'/vslider/timthumb.php?src='.url
    encode($image).'&w='.$options['width'].'&h='.$options['height'].'&zc
    =1&q='.$options['quality'];

    Update $img_url by adding $blogs_dir to $image.

    $img_url = WP_PLUGIN_URL.'/vslider/timthumb.php?src='.urlencode($blogs_dir.$image).'&w='.$options['width'].'&h='.$options['height'].'&zc=1&q='.$options['quality'];

    Line 1007 is

    $img_url =WP_PLUGIN_URL.'/vslider/timthumb.php?src='.urlencode($image).'&w='.$options['width'].'&h='.$options['height'].'&zc=1&q='.$options['quality'];

    Add $blogs_dir to $image, again.

    $img_url =WP_PLUGIN_URL.'/vslider/timthumb.php?src='.urlencode($blogs_dir.$image).'&w='.$options['width'].'&h='.$options['height'].'&zc=1&q='.$options['quality'];

    These changes may require more testing to make sure they work correctly for all sites, but the testing I have done works so far.

    http://wordpress.org/extend/plugins/vslider/

  2. rmose
    Member
    Posted 2 years ago #

    There is a typo in the code above for line 966. A closing parenthesis is missing on the second line.

    $thumbnailSrc = $src[0];
                    if (isset($blog_id)) {
  3. secao9_tiago
    Member
    Posted 2 years ago #

    Hi

    I made the changes, but now the site is returning error 400.

    And I cannot create new banners in second site.

    I have multisite active in my wordpress.

    Thanks!!!

  4. rmose
    Member
    Posted 2 years ago #

    Well, put on your detective hat and track down the cause of the error. If you are using apache, for example, look for the error message in error.log. If you are using the same version of WordPress and vslider as indicated above, then the problem is most likely due to a typo in the changes you made. error.log should indicate the file and line where the problem happens. You can also set

    define('WP_DEBUG', true);

    in wp-config.php to see the errors on the web page.

  5. secao9_tiago
    Member
    Posted 2 years ago #

    Hi a activate WP_DEBUG and receive this:

    Notice: Undefined index: page in /home/vipviagenseturismo/luademel.vipviagenseturismo.com/wp-content/plugins/vslider/vslider.php on line 55

    Notice: Undefined index: page in /home/vipviagenseturismo/luademel.vipviagenseturismo.com/wp-content/plugins/vslider/vslider.php on line 58

    Notice: Undefined index: page in /home/vipviagenseturismo/luademel.vipviagenseturismo.com/wp-content/plugins/vslider/vslider.php on line 63

    Notice: Undefined index: page in /home/vipviagenseturismo/luademel.vipviagenseturismo.com/wp-content/plugins/vslider/vslider.php on line 68

    Notice: Undefined index: uninstallvslider in /home/vipviagenseturismo/luademel.vipviagenseturismo.com/wp-content/plugins/vslider/vslider.php on line 73

    Notice: Undefined index: vslider-reset in /home/vipviagenseturismo/luademel.vipviagenseturismo.com/wp-content/plugins/vslider/vslider.php on line 509

    Notice: Undefined index: updated in /home/vipviagenseturismo/luademel.vipviagenseturismo.com/wp-content/plugins/vslider/vslider.php on line 516

    The lines about vslider, I don't understand if that is the problem. Remember I done changes as descript in this post.

    Thanks

  6. rmose
    Member
    Posted 2 years ago #

    Those errors are not fatal. They indicate that variables (e.g., "page" or "vslider-reset") are not initialized before they are used. By default, an uninitialized variable in PHP is interpreted as either zero or blank, but it is good to always initialize a variable.

    Since there are no other errors, the code changes you made are probably correct. However, you said that the web server returned a 400 code. That means "Bad Request" or something about the URL didn't follow HTTP properly. Take a look at the source of the web page to see what URL has been generated for vslider. You can also take a look at the web server log to see which request generated the 400 error.

  7. secao9_tiago
    Member
    Posted 2 years ago #

    Hi again!

    Unfortunatelly I didn't solved the problem. I saw the logs of server but don't appear nothing of errors.

    Maybe If I describe my ambience detailed You can help me.

    I have a WP multisite installation, but I don't use subdomains, I'm using directories.

    Example:

    1º Site (The principal)
    site.domain.com

    2º Site (and others)
    site.domain.com/site2
    site.domain.com/site3
    site.domain.com/site4

    etc...

    This maybe can be the cause of problem?

    Thanks for all help!!

  8. rmose
    Member
    Posted 2 years ago #

    I am also working with multisites in directories, just like your installation. If you are seeing a 400 error, that should be recorded in the web server error log. You need to look for it.

    The 400 error is the result of the web browser sending a request to the web server that the web server cannot understand. You need to look at the source HTML or the address bar of the browser to determine what URL the web browser is sending to the web server. You can also use a tool to capture the information the web browser sends to the web server. It is quite possible that a typo in the code above would produce a bad URL, even if no other errors are produced.

    These are simple debugging steps that a website manager needs to develop. If you are unfamiliar with how to do them, ask a knowledgeable friend to help you track down the problem. Remove the changes described above to make sure that things work as expected. Then, carefully add the changes and check if things are still working.

    Check that the directories in your installation actually exist in the default location. In the wp-content folder, is there a blogs.dir folder? If yes, are there numbered folders inside the blogs.dir folder (blogs.dir/2, blogs.dir/3, etc.)? Does each numbered folder have a "files" directory in it (e.g., blogs.dir/3/files)? Are there rules in the web server that prevent these directories from being accessed? Is there a plugin that prevents the directories from being accessed? Ask all of the questions and look at all of the possibilities.

  9. adamp29
    Member
    Posted 2 years ago #

    I wanted to say that your last paragraph "In the wp-content folder, is there a blogs.dir folder?" just helped me fix a problem that even the theme designer and my host could not fix!

    I knew that timthumb.php requires my domain to be added to the 'Allow_external' code, and it also required the full path name but this merely emphasised that.

    Using the Humble theme, I had code calling for the image "www.futurestateofdigital.co.uk/files/twitter-social-screenshot.png" which worked OK when typing it into the address bar (i.e. the file clearly existed) but would not appear on my home page!!! I tried changing the code to variations of "wp-content/uploads/2012/03" etc but it still didn't work.

    My timthumb.php file sits in my wp-content/themes/humble folder. My images site ABOVE that folder i.e. wp-content/blogs.dir/files/2, and timthumb can only reference files that are LEVEL or BELOW it.

    I have literally just added the ENTIRE http://www code for the working image and it is all FIXED!!!!

    Thank you for your debugging help!

  10. gnarlyinc
    Member
    Posted 2 years ago #

    worked like a charm for me, thanks!

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic