2012-08-01 3 views
0

J'ai un code qui est terminé et je veux ajouter un autre code dans mon code complété.php créer une classe css dynamiquement

complété Code:

function module($prefix, $comma_seperated_suffixes) { 
    foreach((array)explode(",", $comma_seperated_suffixes) as $suffix) { 
    $module_name = $prefix.trim($suffix); 
    if(count(JModuleHelper::getModules($module_name))) { 
      module_block($module_name); 
     } 
    } 
} 

je me suis déplacé count(JModuleHelper::getModules($module_name)) à la fonction module, auparavant, il était module_block

s'il vous plaît ne emploient pas classe tovolt, je veux dire un code simple sans classe php

Bloc de compte de module

Je suppose que j'appelle ces modules module("top-col-", "1,2,3"); alors j'ai trois modules appelés top-col-1, top-col-2, top-col-3

alors mon module de comptage ressemblera à ceci:

$TopCol1 = (int)(count(JModuleHelper::getModules($module_name)) > 0); 
$TopCol2 = (int)(count(JModuleHelper::getModules($module_name)) > 0); 
$TopCol3 = (int)(count(JModuleHelper::getModules($module_name)) > 0); 

code ci-dessus est va juste compter pour le module actif (seul moyen de vérifier le module actif), Si un module est actif, alors var sera 1.

et maintenant le temps de décompte module actif:

$topColCount = $TopCol1 + $TopCol2 + $TopCol3; 
if ($topColCount) : $TopColClass = 'count-' . $topColCount; 
endif; 

Je compte le cas des modules que je veux définir une classe CSS comme celui-ci count-1, count-2, count-3 aux modules actifs. et je veux que cette classe soit utilisée dans module_block. s'il vous plaît gardez à l'esprit que, au-dessus de variable est statique parce que je les ai fait manuellement. mais si j'appelle la fonction alors var doit être changé avec la valeur de la fonction comme si l'utilisateur appel module("bottom", "1,2,3"); alors son count_modules sera $bottom1, $bottom2, $bottom3 et la classe sera $bottomClass.

Je veux générer count_module en utilisant le même code module("bottom", "1,2,3");

Merci pour votre aide @ Steve

+1

Yay, je peut commenter maintenant :) - une fois que vous avez exécuté la fonction prep_modules, vous pouvez lire le compte de n'importe quel ensemble comme ceci: $ count = $ READY_MODULES ['section_name'] ['count'] - remplacer 'section_name' avec w hatever section que vous voulez compter ... donc $ READY_MODULES ['bottom'] ['count'] vous donnera le nombre de modules du bas. – Steve

+0

Merci, je vais essayer à nouveau –

+1

un message a été envoyé. – Steve

Répondre

0

Si je comprends correctement, cela devrait aider.

classe tovolt: (notez la nouvelle fonction «prep_modules de ajoutée à cette classe)

<?php 

////////////////// BEGIN CLASS tovolt 
class tovolt{ 
    function tovolt() { 
     //// constructor function - used to setup default variable states, etc. - if this is omitted PHP may have a fit (depending on version and config) 
    } 

    public static $TopColClass = 'default-value'; 

    function code_block($jdoc_name) { 
?> 
<div id="top-col" class="<?php echo self::$TopColClass; ?> columns"> 
     <div class="panel"> 
      <jdoc:include type="modules" name="<?php echo $jdoc_name; ?>" style="html5" /> 
     </div> 
    </div> 
<?php 
    } 

    function module($prefix, $comma_seperated_suffixes) { 
     foreach((array)explode(",", $comma_seperated_suffixes) as $suffix) { 
      $module_name = $prefix.trim($suffix); 
      self::code_block($module_name); 
     } 
    } 



    ////////////////// BEGIN NEW FUNCTIONS 
    function prep_modules($MODULE_LIST) { 
     $READY_MODULES = array(); 
     foreach((array)$MODULE_LIST as $module_name) { 
      $MATCHED_MODULES = JModuleHelper::getModules($module_name); 
      $matched_count = count($MATCHED_MODULES); 
      $matched_list = implode(',', range(1, $matched_count)); 
      $READY_MODULES[$module_name] = array(
       'MODULES' => $MATCHED_MODULES, 
       'count'  => $matched_count, 
       'list'  => $matched_list, 
      ); 
     } 
    }   
    ////////////////// END NEW FUNCTIONS 



} 
////////////////// END CLASS tovolt 
?> 

contenu du code de la page - près du haut: (préparer les modules de cette page)

////////////////// SOMEWHERE BEFORE THE OUTPUT SECTION, LOAD MODULES FOR THIS PAGE 
$READY_MODULES = tovolt::prep_modules('top', 'side', 'etc'); 

code de page de contenu - zone de sortie de contenu: (choisissez la méthode qui convient le mieux à votre conception)

procédé 1 - sortie d'une section unique:

////////////////// DOWN IN THE MODULE OUTPUT SECTION - TO OUTPUT A SINGLE SECTION USE: 
$section = 'top'; 
if(@$READY_MODULES[$section]['count'] > 0) { 
    tovolt::$TopColClass = $section;    //// if you need to change: $TopColClass 
    tovolt::module($section."-col-", $READY_MODULES[$section]['list']);   
} 

méthode 2 - sortie tout en ordre de chargement:

////////////////// DOWN IN THE MODULE OUTPUT SECTION - TO OUTPUT ALL SECTIONS IN LOADED SEQUENCE USE: 
foreach((array)$READY_MODULES as $section=>$THIS_VAR_IS_NOT_DIRECTLY_REFERENCED) { 
    if(@$READY_MODULES[$section]['count'] > 0) { 
     tovolt::$TopColClass = $section;    //// if you need to change: $TopColClass 
     tovolt::module($section."-col-", $READY_MODULES[$section]['list']);   
    }  
} 

méthode 3 - sortie arbitraire:

////////////////// DOWN IN THE MODULE OUTPUT SECTION - TO OUTPUT MULTIPLE SECTIONS IN AN ARBITRARY ORDER: 
foreach(array('side', 'top') as $section) { 
    if(@$READY_MODULES[$section]['count'] > 0) { 
     tovolt::$TopColClass = $section;    //// if you need to change: $TopColClass 
     tovolt::module($section."-col-", $READY_MODULES[$section]['list']);   
    }  
} 
+0

merci pour l'aide, je vais essayer ce code d'abord, puis je reviendrai. –

+0

question mise à jour –

Questions connexes