Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1611
  • Last Modified:

Joomla 3 - JFactory::getDocument()->countModules

Hi Experts,

Can you please help me understand why line8 isn't working?

What I'm trying to achieve is something similar to $this->countModules() in a non-index.php file.

Thanks
Rick

function topSpanSize(){

    
    // count modules in the top container

    $modCount=0;
    for($i=1; $i<=3; $i++){
        $module=JFactory::getDocument()->countModules('top-'.$i);
        if(!$module==0){  
            $modCount++;
        }
    }
     

    /* Calculate the span size based
     * on module count. e.g. If only 1 
     * module exist in the top-container 
     * then it should take up the whole row. 
     * i.e. span12  */

    if ($modCount<>0){
       $topSpanNum = 12/$modCount; 
    }
    else{
       $topSpanNum = 0;
    }
    
    return $topSpanNum;
}

Open in new window

0
Ronniel Allan Castanito
Asked:
Ronniel Allan Castanito
  • 5
  • 2
1 Solution
 
Ronniel Allan CastanitoIT ManagerAuthor Commented:
I was following this link here https://groups.google.com/forum/#!topic/joomla-dev-general/4qXKUV8ofrk. It isn't working for me. Any ideas?
0
 
Steve BinkCommented:
What is happening when you try that code?  Have you tried dumping any of the variables to see what is being returned?

function topSpanSize(){
    // count modules in the top container
    $modCount=0;
    for($i=1; $i<=3; $i++){
        $x=JFactory::getDocument();     // <------------- what happens here?
        die(print_r($x,1));             // <------------- what happens here?
        $module=JFactory::getDocument()->countModules('top-'.$i);
        if(!$module==0){  
            $modCount++;
        }
    }
    /* Calculate the span size based
     * on module count. e.g. If only 1 
     * module exist in the top-container 
     * then it should take up the whole row. 
     * i.e. span12  */
    if ($modCount<>0){
       $topSpanNum = 12/$modCount; 
    }
    else{
       $topSpanNum = 0;
    }
    return $topSpanNum;
}

Open in new window

0
 
Ronniel Allan CastanitoIT ManagerAuthor Commented:
Thanks for posting routinet. As per your code above, when at line 5, $x variable of type JDocumentHTML is recognised. After line 6 it prints the following and dies:

 
JDocumentHTML Object ( [_links] => Array ( [http://localhost/joomla3_1/] => Array ( [relation] => canonical [relType] => rel [attribs] => Array ( ) ) ) [_custom] => Array ( ) [template] => alpha1_0 [baseurl] => /joomla3_1 [params] => JRegistry Object ( [data:protected] => stdClass Object ( ) ) [_file] => C:\xampp\htdocs\Joomla3_1/templates/alpha1_0/index.php [_template:protected] => [_template_tags:protected] => Array ( ) [_caching:protected] => [_html5:JDocumentHTML:private] => [title] => Home [description] => [link] => [base] => http://localhost/joomla3_1/index.php [language] => en-gb [direction] => ltr [_generator] => Joomla! - Open Source Content Management [_mdate] => [_tab] => [_lineEnd] => [_charset] => utf-8 [_mime] => text/html [_namespace] => [_profile] => [_scripts] => Array ( [/joomla3_1/media/system/js/mootools-core.js] => Array ( [mime] => text/javascript [defer] => [async] => ) [/joomla3_1/media/system/js/core.js] => Array ( [mime] => text/javascript [defer] => [async] => ) [/joomla3_1/media/system/js/caption.js] => Array ( [mime] => text/javascript [defer] => [async] => ) [/joomla3_1/media/jui/js/jquery.min.js] => Array ( [mime] => text/javascript [defer] => [async] => ) [/joomla3_1/media/jui/js/jquery-noconflict.js] => Array ( [mime] => text/javascript [defer] => [async] => ) [/joomla3_1/media/jui/js/bootstrap.min.js] => Array ( [mime] => text/javascript [defer] => [async] => ) ) [_script] => Array ( [text/javascript] => window.addEvent('load', function() { new JCaption('img.caption'); }); ) [_styleSheets] => Array ( [/joomla3_1/media/jui/css/bootstrap.min.css] => Array ( [mime] => text/css [media] => [attribs] => Array ( ) ) [/joomla3_1/media/jui/css/bootstrap-responsive.min.css] => Array ( [mime] => text/css [media] => [attribs] => Array ( ) ) [/joomla3_1/media/jui/css/bootstrap-extended.css] => Array ( [mime] => text/css [media] => [attribs] => Array ( ) ) ) [_style] => Array ( ) [_metaTags] => Array ( [http-equiv] => Array ( [content-type] => text/html; charset=utf-8 ) [standard] => Array ( [keywords] => [rights] => [author] => Super User ) ) [_engine] => [_type] => html )

Open in new window

0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
Ronniel Allan CastanitoIT ManagerAuthor Commented:
When I run my original codes and it hits line 8. The module count = 0. This is incorrect as I am definitely sure the module count should equal to 3. When I test the codes with $this->countModules() on the index file. It gives the correct count.

The index.php file is currently pulling in an external file via:

require dirname(__FILE__) . '\php\htmlOutputFns.php';

Open in new window

0
 
Steve BinkCommented:
Run this in place of your for loop (line 4):
    $mydie='';
    $x=JFactory::getDocument();
    for($i=1; $i<=3; $i++){
        $mydie .= "count for top-$i=".$x->countModules('top-'.$i)."<br />\n";
    }
    die($mydie);

Open in new window

0
 
Ronniel Allan CastanitoIT ManagerAuthor Commented:
output as per above code:

count for top-1=0
count for top-2=0
count for top-3=0

Open in new window

0
 
Ronniel Allan CastanitoIT ManagerAuthor Commented:
Thanks... Stupid of me. I forgot to switch it on.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now