phpdrupaldrupal-7drupal-theming

unable to add multiple .JS files to template.php in Drupal 7


In my template.php that exists in my theme directory I have this method:

            function vocabt_process_page(&$vars) {

        drupal_flush_all_caches();

        // Try to add js per page
        $alias = drupal_get_path_alias($_GET['q']);
        $file = $vars['directory'].'/js/'.str_replace('/', '-', $alias).'.js';
        if(file_exists($file)) {
            drupal_add_js($vars['directory'].'/anythingslider/anythingslider.js');
            drupal_add_js($vars['directory'].'/anythingslider/jquery.anythingslider.video.min.js');
            drupal_add_js($file);

        }

        $vars['title_sub'] = '';
        $vars['page_icon'] = '';
        $content_class = array();
        switch($alias) {
            case 'home':
                drupal_add_css(drupal_get_path('theme', 'vocabt') . '/anythingslider/css/anythingslider.css');
                $test = drupal_add_js(NULL, NULL, NULL);
                error_log(print_r($test,1));
                unset($vars['title']);
            break;
            //other pages
        }
        if(drupal_match_path($alias, 'scores/admin/*')) {
    //      $vars['title_sub'] = 'Check your student\'s scores by entering your information below.';
            $vars['page_icon'] = 'graph';
        }

        if($vars['page_icon']) {
            $content_class[] = 'icon-65';
        }
        if($vars['page']['sidebar_right']) {
            $content_class[] = 'twocol';
        }
        $vars['content_class'] = implode(' ', $content_class);

        // Since the title and the shortcut link are both block level elements,
        // positioning them next to each other is much simpler with a wrapper div.
        if (!empty($vars['title_suffix']['add_or_remove_shortcut']) && $vars['title']) {
            // Add a wrapper div using the title_prefix and title_suffix render elements.
            $vars['title_prefix']['shortcut_wrapper'] = array(
                '#markup' => '<div class="shortcut-wrapper clearfix">',
                '#weight' => 100,
            );
            $vars['title_suffix']['shortcut_wrapper'] = array(
                '#markup' => '</div>',
                '#weight' => -99,
            );
            // Make sure the shortcut link is the first item in title_suffix.
            $vars['title_suffix']['add_or_remove_shortcut']['#weight'] = -100;
        }
    }

Essentially the home page loads jquery, anythingslider.js, then home.js

within home.js I simply have:

    (function($) {

        $(document).ready(function() {
            alert('asdf');      
            $('#gallery').anythingSlider();

        });

    })(jQuery);

My problem is that when I load the home page... I get a JS error saying:

Uncaught TypeError: Object [object Object] has no method 'anythingSlider' 

This leads me to believe that the anythingslider library has not been correctly imported. Can someone tell me how to do this quick/dirty import of anythingslider.js successfully? (while keeping in mind it already is placed AFTER home.js). Thank you!


Solution

  • Try these....

    You can add javascript on .info

    scripts[] = javascript.js
    

    2.Add javascript on template.php

    drupal_add_js(drupal_get_path('theme', 'nameofthetheme') . '/js/jquery.js');
    

    3.For exrenal javascripts

    drupal_add_js('http://sitename.com/javascript.js', 'external'));
    

    4.You may also use it in page.tpl.php use

    <? php print drupal_get_js(); ?>.
    

    you can also add JavaScript files in your module's by the hook_init() or hook_preprocess_page() or hook_preprocess()

    Hope this helps you...