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. ユーザーは Web サイトにログインしていますが、ページは編集モードではありません。

ページが編集モードのみの場合、スクリプトを実行しないでください。

どうすればこれを達成できますか?

編集: 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 に答える