首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php动态创建css类

php动态创建css类
EN

Stack Overflow用户
提问于 2012-08-01 10:56:09
回答 1查看 188关注 0票数 0

我有一个已经完成的代码,我想在我完成的代码中添加另一个代码。

已完成的代码:

代码语言:javascript
复制
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); 
        }
    }
}

我将count(JModuleHelper::getModules($module_name))移动到module函数,以前它在module_block

请不要使用tovolt类,我指的是没有php类的简单代码。

模块计数块

我假设我要调用这个模块module("top-col-", "1,2,3");,那么我有三个模块名为top-col-1, top-col-2, top-col-3

然后我的计数模块将如下所示:

代码语言:javascript
复制
$TopCol1 = (int)(count(JModuleHelper::getModules($module_name)) > 0);
$TopCol2 = (int)(count(JModuleHelper::getModules($module_name)) > 0);
$TopCol3 = (int)(count(JModuleHelper::getModules($module_name)) > 0);

上面的代码将只计算活动模块(检查活动模块的唯一方法),如果一个模块是活动的,那么它的var将是1

现在计算活动模块的时间:

代码语言:javascript
复制
$topColCount = $TopCol1 + $TopCol2 + $TopCol3;
if ($topColCount) : $TopColClass = 'count-' . $topColCount; 
endif;

我正在计算模块的情况,我想将像这个count-1, count-2, count-3这样的CSS类设置为活动模块。我希望这个类能在module_block中使用。请记住,上面的变量是静态的,因为我手工制作了它们。但是,如果我调用函数,那么var需要用函数值进行更改,比如用户调用module("bottom", "1,2,3");,那么它的count_modules将是$bottom1, $bottom2, $bottom3,类将是$bottomClass

我希望使用相同的代码( count_module )生成module("bottom", "1,2,3");

@steve感谢您的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-01 16:43:09

如果我正确理解了这一点,这应该是有帮助的。

tovolt类:(注意添加到该类中的新函数'prep_modules‘)

代码语言:javascript
复制
<?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
?>

内容页面代码-接近顶部:(准备本页面的模块)

代码语言:javascript
复制
//////////////////    SOMEWHERE BEFORE THE OUTPUT SECTION, LOAD MODULES FOR THIS PAGE
$READY_MODULES = tovolt::prep_modules( 'top', 'side', 'etc' );

内容页代码-内容输出区域:(选择最适合您的设计的方法)

方法1-输出一个部分:

代码语言:javascript
复制
//////////////////    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'] );        
}

方法2-按加载顺序输出:

代码语言:javascript
复制
//////////////////    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'] );        
    }    
}

方法3-任意输出:

代码语言:javascript
复制
//////////////////    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11757762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档