Drupal 页面加载...页面上到底是啥?

Posted

技术标签:

【中文标题】Drupal 页面加载...页面上到底是啥?【英文标题】:Drupal Page loading... what exactly is on page?Drupal 页面加载...页面上到底是什么? 【发布时间】:2013-10-17 05:17:02 【问题描述】:

是否有某种模块或某些东西可以设置为只有管理员才能在页面上显示,当它加载时(例如在底部或其他地方)告诉我加载的所有内容或该页面上的某些内容?比如,我需要节点、模块、分类术语、模板、视图、URL 别名等等等等,一切皆有可能。

我遇到的问题是我没有创建我现在使用 Drupal CMS 管理的这个网站,但是,Drupal 到处都是该死的内容区域,以至于根本不可能跟踪到底有什么东西在哪里发生在。页面上有一个视图模块、块等,但我需要在页面加载后以某种方式找出页面上所有与 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';

但它仍然不起作用。我还缺少其他东西吗?

【问题讨论】:

【参考方案1】:

他们实际上是使用 Views 模块输出所有视频(我认为这是一个名为 Videos 的视图,并且您可以在此处看到该视图的一个块)。

过滤实际上不是 Drupal 的事情,这可能就是您努力寻找它的原因。他们正在使用一个名为 Isotope 的 jQuery 插件来进行过滤,这会改变项目的不透明度等,并通过 CSS3 制作动画。他们对视图的每个项目应用一个类,在这种情况下,每个视频都有年份。例如,来自 2013 年的任何项目都将具有“2013”​​作为一个类。我在附件中突出显示了我从中找到该信息的地方。使用 Chrome 检查器(或 Firebug),您可以查看添加的所有同位素类,也可以查看年份类。

现在,您可以看到前三个确实有 2013 级,所以我认为这可能是 Isotope 的问题。开始调试的一个好地方是查看调用 Isotope 函数的 JS 文件。我想指出正确的文件,但 Drupal 已经缩小了 js 文件,所以有点难。

同位素网站在这里:http://isotope.metafizzy.co/index.html

【讨论】:

这很有帮助。谢谢你。现在我知道站点上没有安装 Views Isotope 模块,因为它没有在模块中列出。但是有一些选项可以将上下文过滤器添加到视图和其他东西......当我转到所有视图时,我会在视频视图中得到这个:Videos Display: Block In database Type: Content default 也许他们没有使用 Views Isotope 模块,但实际上只是使用 Isotope js 进行过滤。您将不得不搜索 js 文件以查找已完成同位素脚本的位置。 js 文件可能列在主题 .info 文件中。你不能通过 drupal 界面来做到这一点,你必须“弄脏你的手”。视频 display: block 只是将视图的内容作为块输出。如果您从 Drupal 管理仪表板转到块页面,您会看到该块。 是的,它在 .info 文件中:scripts[] = js/jquery.isotope.min.js 虽然不确定是否有未缩小的版本,但缩小将很难处理...... arggg! 您不必自己处理该文件。那是插件,应该保持不变。但是,在另一个 js 文件中,您应该找到对 isotope 的引用。在那里工作的开发人员会“调用”同位素。可能看起来像这样$('#container').isotope( filter: '.something' ); 你绝对在这里。但是我已经包含了2013,但它仍然不起作用。我错过了什么吗?还是我现在做对了?

以上是关于Drupal 页面加载...页面上到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

drupal页面上的“上下文”

通过 https 加载 Drupal 7 页面时,Firebug 中止错误

将 Google 地图添加到 Drupal 中的联系信息页面

在页面加载动画上制作 css 的正确方法是啥? [复制]

如何覆盖Drupal 7上的“禁用JavaScript”页面

ajax 页面加载视图页面的 ajax 寻呼机由 ajax