1

管理者のみがページに表示するように設定できるモジュールまたは何かがロードされたときに (下部などに)、ロードされたすべてのコンテンツまたはそのページに何かが表示されますか? 同様に、ノード、モジュール、分類用語、テンプレート、ビュー、URL エイリアスなどが必要です。

私が抱えている問題は、私が現在 Drupal CMS で管理しているこのサイトを作成しなかったことですが、Drupal には非常に多くのコンテンツ エリアがいたるところにあるため、どこで何かが起こっているのかを追跡することは文字通り不可能です。ページには Views モジュール、ブロックなどがありますが、ページ上のすべての Drupal 関連コンテンツをロード後に何らかの方法で見つける必要があり、そのページにロードされる Drupal に関連するすべてのものを吐き出す必要があります。そもそもサイトをまとめた人々は、サイトの編集を行うためにお金をもらっているにもかかわらず、これを支援することに非協力的です。私の意見では、それらは役に立たない!

そのため、そのページのビューを見ると、「すべてのビデオ」セクションのみを出力しているように見えます。そのページの年のセクションでそれらがどのようにソートされているかを知るには、どこを見ればよいですか?

さて、main.js ファイルに次のコードが表示されます。

  /* Isotope for Videos and Gallery */
  blam('#block-views-videos-block .view-content').isotope({itemSelector: '.views-row', animationEngine: 'jquery'});
  blam('#block-views-press-gallery-block .view-content').isotope({itemSelector: '.views-row', animationEngine: 'jquery'});

  /* Remove class 'active' from video menu items */
  removeActiveClass('.menu-name-menu-videos-menu ul li', 1);

  blam('.menu-name-menu-videos-menu ul li a').click(function(){
    var selector;
    var menu_item = blam(this).text();
    removeActiveClass('.menu-name-menu-videos-menu ul li', 0);
    /*Add 'active' class to video menu item*/
    blam(this).closest('li').addClass('active');

    if( menu_item.indexOf("2012") != -1 ) {
      selector = '.2012';
    } else if( menu_item.indexOf("2011") != -1 ) {
      selector = '.2011';
    } else if( menu_item.indexOf("2010") != -1 ) {
      selector = '.2010';
    } else if( menu_item.indexOf("2009") != -1 ) {
      selector = '.2009';
    } else if( menu_item.indexOf("2008") != -1 ) {
      selector = '.2008';
    } else if( menu_item.indexOf("2007") != -1) {
      selector = '.2007';
    }

    if(selector) {
      blam('#block-views-videos-block .view-content').isotope({filter: selector});
    } else {
      blam('#block-views-videos-block .view-content').isotope({filter: '.views-row'});
    }
    return false;
  });

});

/* Removes all Active classes from menu items */

function removeActiveClass(e, i){
  var elements = blam(e);

  for(var index = i; index < elements.length; index++) {
    blam(elements[index]).removeClass('active');
  }
}

そこで、ここでこのビットを変更しました。

    if( menu_item.indexOf("2012") != -1 ) {
      selector = '.2012';
    } else if( menu_item.indexOf("2011") != -1 ) {
      selector = '.2011';
    } else if( menu_item.indexOf("2010") != -1 ) {
      selector = '.2010';
    } else if( menu_item.indexOf("2009") != -1 ) {
      selector = '.2009';
    } else if( menu_item.indexOf("2008") != -1 ) {
      selector = '.2008';
    } else if( menu_item.indexOf("2007") != -1) {
      selector = '.2007';
    }

これに:

if( menu_item.indexOf("2013") != -1 ) {
  selector = '.2013';
} else if( menu_item.indexOf("2012") != -1 ) {
  selector = '.2012';
} else if( menu_item.indexOf("2011") != -1 ) {
  selector = '.2011';
} else if( menu_item.indexOf("2010") != -1 ) {
  selector = '.2010';
} else if( menu_item.indexOf("2009") != -1 ) {
  selector = '.2009';
} else if( menu_item.indexOf("2008") != -1 ) {
  selector = '.2008';
} else if( menu_item.indexOf("2007") != -1) {
  selector = '.2007';
}

しかし、それでもうまくいきません。他に何か不足していますか?

4

1 に答える 1

2

彼らは実際には Views モジュールを使用してすべてのビデオを出力しています (これは私が思うに Videos と呼ばれるビューで、ここに表示されているビューのブロックがあります)。

フィルタリングは実際には Drupal のものではありません。Isotope と呼ばれる jQuery プラグインを使用して、アイテムの不透明度を変更したり、CSS3 を介してアニメーションを実行したりするフィルタリングを行っています。ビューの各アイテム (この場合は年を持つ各ビデオ) にクラスを適用します。たとえば、2013 年のアイテムには、クラスとして「2013」が含まれます。その情報を見つけた添付ファイルで強調表示しました。Chrome インスペクター (または Firebug) を使用すると、追加されたすべての同位体クラスを確認でき、年クラスも確認できます。

ここに画像の説明を入力

さて、最初の 3 つのクラスは 2013 であることがわかります。これは Isotope の問題である可能性があると思います。これのデバッグを開始するには、Isotope 関数を呼び出す JS ファイルを確認することをお勧めします。正しいファイルを示したいのですが、Drupal は js ファイルを縮小しているので、少し難しいです。

アイソトープのウェブサイトはこちら: http://isotope.metafizzy.co/index.html

于 2013-10-17T05:51:29.837 に答える