0

我使用依赖于 jQueryUI 的轮播插件。要加载它,我只需使用来自市场的加载 jQueryUI 插件。

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

A.problematic.js直接加载时 - 没有任何if:当用户登录并且顶部栏(“编辑”,“仪表板”)的内容消失时轮播不起作用,因此甚至无法进入编辑模式

B. 当problematic.js装载有这样的条件时:

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

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

C. 当problematic.js装载有这样的条件时:

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

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

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

  1. 用户未登录,
  2. 用户已登录网站,但页面未处于编辑模式。

我希望仅在页面处于编辑模式时不执行脚本。

我应该如何实现这一目标?

编辑:这是 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'); ?>
4

1 回答 1

0

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

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

如果第一个代码示例不起作用,则可能 $c 已被重新定义,或者其他同样不太可能的东西......

于 2013-03-31T01:05:47.623 回答