concrete5 - 编辑模式下的jQueryUI

时间:2013-03-30 00:24:53

标签: concrete5

我使用依赖于jQueryUI的carousel插件。要加载它,我只需使用市场中的Load jQueryUI addon

编辑 - 更确切地说。会发生什么:

一个。直接加载problematic.js时 - 没有任何if:当用户登录并且顶栏的内容(“编辑”,“仪表板”)消失时,轮播不起作用,所以甚至不可能进入编辑模式

B中。当problematic.js加载了这样的条件时:

if (!$c->isEditMode()){ ?>
    <script type="text/javascript" src="problematic.js"></script>
<?php } ?>

完全如上所述:当用户登录并且顶栏的内容(“编辑”,“仪表板”)消失时,轮播不起作用,因此甚至无法进入编辑模式

℃。当problematic.js加载了这样的条件时:

<?php $u = new User();
if (!$u->isRegistered()){ ?>
    <script type="text/javascript" src="problematic.js"></script>
<?php } ?>

顶栏的内容存在,可以将页面转换为编辑模式,但显然当用户登录时不会执行js文件。

然而,这不是我需要的 - 我希望我的脚本在以下情况下工作:

  1. 用户未被记录,
  2. 用户已登录网站但页面未处于编辑模式。
  3. 我希望在页面IS仅在编辑模式下执行脚本。

    我该如何实现这个目标?

    编辑:这是PHP / HTML代码的一部分:

    <?php 
        defined('C5_EXECUTE') or die(_('Access Denied.'));
    ?> 
    <!DOCTYPE html>
    <html>
        <head>
            <?php Loader::element('header_required');?>
            <script type="text/javascript" src="<?php print $this->getThemePath(); ?>/js/respond.min.js"></script>
            <script type="text/javascript" src="<?php print $this->getThemePath(); ?>/js/jquery.ui.rcarousel.min.js"></script>
            <?php $u = new User();
        if (!$u->isRegistered()){ ?>
            <!-- To prevent conflicts with C5 jQuery UI when in edit mode -->           
            <script type="text/javascript" src="<?php print $this->getThemePath(); ?>/js/home.js"></script>
        <?php } ?>
            <link rel='stylesheet' type='text/css' href="<?php print $this->getStyleSheet('css/style.css'); ?>" />
            <meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1' />
        </head>
        <body <?php  if ($c->isEditMode()) { ?> class='editmode' <?php  } ?>>
            <div class='c5wrapper'>
                 <div id='container'>
                     <div id='content-promo' class='content-promo full-width'>
                         <div id='carousel-wrapper' class='content-promo carousel-wrapper'>
                             <?php
                                $a = new Area('Carousel');
                                $a->display($c);
                             ?>
                         </div>  <!-- End of carousel wrapper -->
    
                         <a href='#' id='ui-carousel-prev' class='carousel-controls'><span class='carousel-control-text'>Prev</span></a>
                         <a href='#' id='ui-carousel-next' class='carousel-controls'><span class='carousel-control-text'>Next</span></a>
    
                     </div>  <!-- End of content promo -->
    <?php $this->inc('elements/footer.php'); ?>
    

1 个答案:

答案 0 :(得分:0)

第一个代码示例如何不起作用?它没有你做的东西吗?或者它什么都不做?假设它在功能上有效(即,在不处于编辑模式时添加该标记),那么您想要做的完整解决方案将是:

<?php $u = new User();
if ($u->isRegistered() && ! $c->isEditMode()) { ?>
    <script type="text/javascript" src="problematic.js"></script>
<?php } ?>

如果第一个代码示例不起作用,那么可能已经重新定义了$ c,或者其他同样不太可能......