无法使用功能跟踪视图 -- 7 领域 和 features 领域 和 views 领域 drupal 相关 的问题

cannot track view with features


6
vote

问题

中文

我正在使用 Features 创建一个名为 foo 的要素,它跟踪内容类型和视图,以便在代码中描述它们,提交给我的存储库并最终推动暂存和生产服务器。

某些模块(例如 http://drupal.org/project/nodequeue ,, http://drupal.org / project / admin_views )创建一些视图作为其功能的一部分。问题是我不能将这些视图包含到我的 foo 功能中。因此,对于那些具体的视图,我必须重复(手动)我在本地完成的任何定制到暂存和生产服务器。

任何想法?

我尝试了什么:

1)我尝试在 99887663 文件中手动添加视图名称:

  features[views_view][] = admin_content_node   

但是当我做 drush fu foo_features -y 那条线被删除, 99887666 文件和视图定义没有被包含在 99887767 文件中。

2)我看看数据库:

  mysql> select vid, id, display_title, display_plugin, position from views_display; +-----+----------+---------------+----------------+----------+ | vid | id       | display_title | display_plugin | position | +-----+----------+---------------+----------------+----------+ |   3 | default  | Master        | default        |        1 | |   3 | page     | Page          | page           |        2 | |  30 | block    | Block         | block          |        2 | ... |  46 | default  | Defaults      | default        |        1 | |  46 | system_1 | System        | system         |        2 | +-----+----------+---------------+----------------+----------+   

最后一行(vid:46,display_plugin:system)似乎可疑,所以我已更改(直接通过sql) system foo0 。然后,我做了 foo1 并在[1]中重试该过程,以便将视图包含到特征中,但没有运气。我尝试过这一点,因为我认为"系统视图显示" (无论是什么意思)都不能包含在功能中。

英文原文

I'm using Features to create a feature called foo which tracks content types and views so they can be described in code, committed to my repository and eventually pushed into the staging and production servers.

Some modules (e.g http://drupal.org/project/nodequeue, http://drupal.org/project/views_bulk_operations, http://drupal.org/project/admin_views) create some views as part of their functionality. The problem is that I can't include those views into my foo feature. So for those specific views I have to repeat (by hand) any customization I did locally to the staging and production servers.

Any ideas?

What I've tried:

1) I tried manually adding the view name in the foo_features.info file:

features[views_view][] = admin_content_node 

but when I do drush fu foo_features -y that line is removed and the .info file and the view definition is not being included in the foo_features.views_default.inc file.

2) I had a look into the database:

mysql> select vid, id, display_title, display_plugin, position from views_display; +-----+----------+---------------+----------------+----------+ | vid | id       | display_title | display_plugin | position | +-----+----------+---------------+----------------+----------+ |   3 | default  | Master        | default        |        1 | |   3 | page     | Page          | page           |        2 | |  30 | block    | Block         | block          |        2 | ... |  46 | default  | Defaults      | default        |        1 | |  46 | system_1 | System        | system         |        2 | +-----+----------+---------------+----------------+----------+ 

That last row (vid: 46, display_plugin: system) seemed suspicious so I've changed (directly via SQL) system to page. I then did drush cc all and retried the process at [1] for including the view into the feature but without luck. I tried this because I thought that "system view displays" (whatever that means) cannot be included in features.

        

回答列表

10
 
vote
vote
最佳答案
 

这是通过克隆模块提供的四个视图所需的视图,禁用原始视图,并在克隆中完成100%可跟踪的所有工作。

 

This is bypassable by cloning the views you need from the four views that the module provides, disabling the original views, and doing all your work in your clones which are 100% trackable.

 
 
2
 
vote

如Magtak所示,这通过克隆观点来规避。他们需要在不同的名称下存储,以便工作;导出和导入视图(如varshith的建议)只会在更改视图的机器名称时这样做。克隆将具有与导出/导入相同的结果,除了它将强制执行机器名称更改,并包含更少的操作。

您需要执行此操作的原因是,这些模块不会通过将它们输入数据库添加视图,而是通过代码添加它们,就像在将视图添加到功能时会发生一样。功能将检查代码中已存在的视图是否已存在,如果它确实,不会为其添加到功能。 (顺便提及,当您通过界面更改代码定义的视图时会发生什么,这是该视图拍摄视图的副本,并将其输入数据库。这就是它存储更改的地方。这就是您可以找到定义视图的原因无论如何,数据库中的模块;这将发生在对它们进行更改的那一刻。这也是在恢复覆盖视图的情况下发生的事情,无论是从视图自身还是来自功能;数据库中的副本都被抛弃,视图默认为默认值代码)。

克隆方法的一个缺点是从那一刻开始,您可以自己维护模块最初添加的视图;您的克隆完全独立于原件,因此如果存在模块更新,则添加漂亮的新功能,您可能无法找到。如果您所做的话,您必须用手将这些更改添加到克隆。另一种方法是使用hook_views_default_views_alter()以在代码中添加您的添加。但是,这完全不受特征不支持(您 can 将此代码添加到一个特征;如果在该功能的.module文件中这样做,则在重新生成功能时,功能将单独留下它)。您需要知道您在执行代码中定义视图的情况。通过将自定义视图的导出与模块中的原始代码进行比较(将在Themodule.views_default.inc中找到)进行比较,但您仍然不是弱点不太可维护,而不是做克隆的事情)。

除了旁边,对于nodequeue,您肯定可以使用它默认添加的视图,但几乎不值得努力,克隆nodequeue视图。所有内容都是节点的视图,在NodeQueue上具有强制性关系,由nodequeue权重排序。从划痕开始时可能会产生同样的努力,因为它克隆了默认视图,然后进行更改。

 

As suggested by magtak, this is circumventable by cloning the Views. They will need to be stored under a different name for this to work; exporting and importing a View (as suggested by Varshith) will only work if you do so while changing the machine name of the View. Cloning will have the same result as export/import, except that it will enforce the machine name change, and encompasses less actions.

The reason you need to do this is that these modules add Views not by entering them into the database, but adding them through code, much like what happens when you add a View to a Feature. Features will check if a View already exists in code and will not offer it for adding it to your Feature if it does. (Incidentally, what happens when you change a View that is defined by code through the interface, is that Views takes a copy of the View and enters it into the database. That's where it stores your changes. This is why you might find Views defined by modules in the database anyway; this would happen the moment you make changes to them. This is also what happens when you revert an overriden View, either from Views itself or from Features; the copy in the database is ditched and Views defaults back to the code).

One downside to the clone approach is that from that moment on, you are on your own maintaining the View that was originally added by the module; your clone is completely independent of the original, so if there are module updates that add nifty new features, you'd probably not find out. If you did, you'd have to add those changes to your clone by hand. An alternative is using hook_views_default_views_alter() to add your additions in code. However, this is completely unsupported by Features (you can add this code to a Feature; if you do so in the .module file for the Feature, Features will leave it alone when regenerating the feature). You will need to know what you are doing defining Views in code by hand. You can get a long way by comparing an export of your customized View with the original code in the module (which would be found in themodule.views_default.inc), but it is still not for the faint hearted (and may turn out to be less maintainable than just doing the clone thing).

As an aside, for Nodequeue you can certainly use the Views it adds by default, but it is hardly worth the effort to go and clone a nodequeue View. All it is is a View of Nodes, with a mandatory relation on the nodequeue, sorted by the nodequeue weight. It is probably about the same effort starting from scratch as it is cloning the default View and then making your changes.

 
 
0
 
vote

我也有一个类似的问题。我目前正在进行的是导出我需要一个逐个的视图并将其导入它,然后创建该功能,以便您也可以包含它们。

 

I am having a similar issue too. What I am doing currently is exporting the views I need one by one and import it back and then create the feature so that you can include them as well.

 
 
 
 
0
 
vote

我对派对有点晚了,但是,在Nodequeue设置页面/ admin / structs / nodequeue /设置上取消选中"自动在每个队列中自动创建一个视图" ,您可能会在功能中获取它功能回到功能并尝试再次重新创建。

还,跟踪您未选中该复选框的功能。如果您忘记将其取消选中它,它将无法正常工作。

 

I'm a little late to the party, but FYI, you may have luck getting it in Features if you uncheck "Automatically create one view per queue" on the Nodequeue settings page /admin/structure/nodequeue/settings then go back to Features and try to Recreate again.

Also, track that you unchecked that checkbox in Features. If you forget to uncheck it on prod, it won't work right.

 
 

相关问题

0  使用ctools模态与表单#ajax错误ns_error_xpc_bad_convert_js  ( Using ctools modal with form ajax error ns error xpc bad convert js ) 
我正在为我的表单使用ctools模态,现在我需要创建依赖的选择。 在第一页加载全部工作正常,但是当我选择任何在选择#ajax回调中时,请按照所需选择依赖选择的值。但除了我的ctools模态窗口,单击错误 ns_error_xpc_bad_convert_js 。 这是我的代码部分: function metric...

4  Userpoints:以编程方式扣除点  ( Userpoints deduct points programmatically ) 
有没有办法从用户点编程方式扣除点? 如果在创建新内容时检查某个"特色项目" 字段,但是不希望从创建内容的用户扣除没有"特色项目" 的用户,请扣除来自用户的点。 ...

0  真正卸载模块  ( Truly uninstalling modules ) 
所以对摩托的开发相对较新(我在其他内容管理系统中进行了经验编程,并在PHP / MYSQL中编写定制函数)我注意到有趣的东西... 我意识到经过一些开发,即我通过上传到 /模块/ 安装的自定义模块应该在 /网站/全部/模块/ 中上传被拖欠更新覆盖。 所以我通过ftp迅速删除了模块,清除了缓存,重新挂载在正确的目录中...

0  如何从编辑和删除中阻止自定义菜单?  ( How can i block custom menu from edit and delete ) 
我通过其他drupal站点通过Web服务导入菜单。我想使用菜单API来导入此菜单,但我必须确定不可能删除或编辑菜单(即使是站点admin)是不可能的 ...

1  如何在视图中展示不同的位置暴露过滤器?  ( How to show in different positions exposed filters in a view ) 
我想以这种方式设计我的观点: EXPOSED FILTER1 EXPOSED FILTER2 MyView resulting output........... EXPOSED FILTER 3 .........

1  如何分割商务单:将地址和/或计费地址送入不同的行  ( How to split commerce order shipping address and or billing address into differ ) 
在一个视图中提取出去订单信息,我正在尝试加载和计费地址,但地址似乎都加入了,并且没有办法将它们分成不同的行。我正在抓住一个名为 Commerce Order: Shipping information 和 Commerce Order: Billing Information 的字段 目前它看起来像: Name...

0  PHP代码通过词汇ID阻止可见性  ( Php code for block visibility by vocabulary id ) 
我需要向某个词汇表显示一个块。 Drupal.org为Drupal 6有这款赛,但我找不到Drupal 7. http://drupal.org/node/69076 im在块可见性设置中查看PHP,因为我假设其最佳方式,但ID对任何其他解决方案都很满意。谢谢 ...

7  如何配置WYSIWYG过滤器以对齐图像?  ( How should i configure the wysiwyg filter to align the images ) 
这就是我的配置如何在WysiWyg过滤器中的看起来(在Drupal7中): a[!href|target<_blank|title], img[src|align<bottom?left?middle?right?top|alt|border|class|height|width|float], div[alig...

0  简单查询Drupal 7  ( Simple query drupal 7 ) 
我正在尝试创建一个简单的静态查询,以查看数据exsits,但我一直收到错误: $result = db_query('SELECT * FROM field_data_field_product_id WHERE field_product_id_value = "mnbvcxz"'); if ($result...

1  验证文本菲尔德  ( Validation on textfield ) 
我已经把我的验证模块带到了工作,我有这个: 函数product_id_form_validate($ form,&amp; $ form_state){ if($form_state['node']->field_product_id['und']['0']['value'] == '123'){ for...

5  使用分类系统选择字段作为实体参考视图供电选择框的上下文过滤器  ( Using a taxonomy select field as a contextual filter for an entity reference vie ) 
我在两个内容类型之间有父子关系:属性和公园。他们组织成我们呼叫市场的分类学。在创建公园时,您可以选择它所属的市场。然后创建一个属性(是一个孩子到公园),您还选择了市场,然后选择它应该是一个孩子的公园。我需要选择的Parks(这是一个实体参考)的Parks(这是一个实体参考),以基于仅选择的市场仅显示从该市场显示公园的...

0  节点不保存,而是再次重定向到编辑页面  ( Nodes do not save but instead redirect to edit page again ) 
当我的客户端,使用她的帐户时,尝试保存节点,她被发送回节点编辑页面而没有任何错误消息。节点未保存。当在节省节点上的AutioreCorderField中播放AudioreCorderField中的音频时,问题似乎似乎没有发生,但不是每个节点都需要音频。任何想法? 节点上的字段: 实体引用'子标题'节点 标题 分类学...

2  我的页面用标题显示,但内容div空,但仅适用于用户  ( My page showing up with a title but with the content div empty but only for us ) 
我已经创建了具有默认的4个领域(标题,正文,Meta标签,URL路径设置)和一个列表(整数),我增加了一个新的内容类型。我打电话给它"基本页面" 。 当我创建一个新的基本页面节点,并把一些数据,它会只要我登录的管理工作。如果我登录的任何其他用户,页面标题会显示出来,但身体会是空白的。 用户的内容Div实际上是完全空的...

0  如何将自定义CSS添加到各个页面?  ( How do i add custom css to individual pages ) 
im尝试在Drupal 7中使用特定非块区域中的搜索栏创建页面7.如果我使用Live CSS(或其他模块)编辑,它会编辑所有页面,并抵消我创建的内容。我需要一种方法来编辑每个单独页面的CSS样式;通过这种方式,我可以编辑搜索表单区域,并还有一种方法来添加自己的按钮图像。 我可以禁用Drupal区域/块,但这并没有真...

0  未找到视图块文件上的上下文筛选器  ( Contextual filter on views block file not found ) 
我正在尝试使用一个视图块,其中包含用于分类术语的上下文过滤器,以创建可以根据URL中的术语进行过滤的索引。 此功能很好地使用视图页面:因此,如果URL是/ my-index,则我会看到所有子页面。如果URL是/ my-index / apples,我会看到标有苹果的所有子页面。 现在我当我制作一个与所描述的页面视图相...

0  从Drupal 6升级到Drupal 7时润滑分段错误  ( Drush segmentation fault when upgrading from drupal 6 to drupal 7 ) 
我正在运行 <a href="/user/logout" class="mymodule">Log out</a>1 将d6升级到d7然后我几次收到这个错误。 <a href="/user/logout" class="mymodule">Log out</a>2 任何想法是什么分段错误? ...

1  从WebForm下载所有文件[已关闭]  ( Download all files from webform ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅拍摄了一个问题,仅通过编辑此帖。 关闭 2年前。 ...

1  自定义模块仅对一个用户可见  ( Custom module visible only for one user ) 
编辑: 14:38 PM Amsterdam:P 很高兴看到好人帮助!... 我想做什么: 这是整个原型代码。 function oleg_menu() { $items=array(); $items['user/%user/pgacademy/tests'] = array( ...

4  防止节点保存  ( Prevent node from being saved ) 
所以,这似乎是一个相当简单的任务,但我一直抓住了一段时间。 我需要 hook_node_presave 或 hook_node_submit (但不是 hook_node_validate )来检查节点中的字段值,并根据该值选择是否取消节点保存程序。 我该怎么做? (取消部分,不是检查部分;)) ...

0  如何为单个公开过滤器指定样式?  ( How do i specify a style for a single exposed filter ) 
我有一个看法,我展示了一些暴露过滤器;我想仅将特定的CSS类应用于特定的公开过滤器。 我已经看到,如果我在我的主题目录中复制了曝光形式的视图--php,并且调用它视图 - over-form - myformname.tpl.php我可以控制HTML代码;我认为将代码与提交的好处 if($widget->...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.