将变量从一个小部件传递到另一个小部件

时间:2012-08-12 作者:Jason

我写了一个小部件,但我需要在另一个小部件中使用来自一个小部件的变量。。。两个小部件都位于同一个动态侧栏中。

这就是我要做的:我编写了一个小部件,在图像滑块小部件的底部添加一个页脚。当我在滑块小部件下添加页脚小部件时。。。将显示页脚。

问题是我需要页脚小部件出现在滑块中<;div>set,而不是在它下面。例如:

<div id="this-is-the-slider-widget">
    <div>do slider stuff here</div>
    <div id="I-want-the-footer-widget-to-start-here">
        <div>display footer widget here</div>
    </div><!-- close footer widget-->
</div><!-- close slider widget -->
然而;页脚小部件在滑块小部件完成后立即显示。

<div id="this-is-the-slider-widget">
    <div>do slider image show</div>
</div><!-- cose slider widget -->
<div id="footer-widget">
    <div>display footer here</div>
</div><!-- close footer widget -->
否则;滑块的底部css向下推动页脚,并将事情弄得一团糟。如果我调整css,使页脚和滑块的底部边距和填充为零,则当页脚小部件不存在时,横幅下方的内容没有间距。

这就是我想要的样子,flush:

。。。但小部件是按顺序执行的,因此会发生以下情况:

我可以通过使用两个css类来解决这个问题,并检查小部件是否存在并运行。是小部件{}或。没有widget{},但我认为能够将变量从一个widget传递到另一个widget要干净得多。

我是如何让第一个图像工作的(但没有传递来自页脚小部件的任何变量)。。。我在slider的小部件中包含了页脚html,如下所示:

<div id="this-is-the-slider-widget">
    <div>do slider stuff here</div>

    <div id="display-footer-here>
        <?php global $ct_on, $child_dir;
            if($ct_on && file_exists($child_dir.\'/library/includes/yif-top-banner-section-footer.php\')) {
                include_once ($child_dir.\'/library/includes/yif-top-banner-section-footer.php\');
         } ?>
    </div><!-- end footer widget -->
</div><!-- end slider widget -->
这是包含的页脚html:

<div class="top-banner-section-footer">
    <div class="top-banner-section-footer-wrapper">
        <a href="<?php echo $fltitle;?>" class="footerbox left-box no-underline">
            <h3><?php echo $fltitle;?></h3>
            <p><?php echo $fltext;?></p>
        </a>

        <a href="<?php echo $fmlink;?>" class="footerbox middle-box no-underline">
            <h3><?php echo $fmtitle;?></h3>
            <p><?php echo $fmtext;?></p>
        </a>

        <a href="<?php echo $frlink;?>" class="footerbox right-box no-underline">
            <h3><?php echo $frtitle;?></h3>
            <p><?php echo $frtext;?></p>
        </a>
    </div><!-- /.top-banner-section-footer-wrapper -->
</div><!-- /.top-banner-section-footer -->
除非你有更好的方法,然后包括页脚html的权利,我想页脚执行。。。如何使页脚小部件中的变量在包含的页脚html文件中工作?

例如,页脚小部件保存此变量:$frlink。如何将$frlink传递到包含的文件?

我已经尝试了GLOBAL,但我不确定要添加滑块小部件的哪个功能。例如,具有小部件构造函数的函数,它在其中打印小部件、将小部件、小部件表单保存在后端等。

1 个回复
SO网友:onetrickpony

你不需要让它全球化。

如果包含函数范围内的文件,则在该函数中定义的任何变量(在该点之前)也将在包含的文件中公开。

但是,因为您所讨论的变量表示页脚文件包含的状态(如果我理解正确的话),所以可以将其设为static variable:

class You_Widget{

    protected static
      $footerIncluded = false;

    public function widget(){

      // this will only run once
      if(!self::$footerIncluded){        
        include __DIR__ . \'/footer.php\';
        self::$footerIncluded = true;
      }

    }

}

结束