Questions tagged «7»

版本标记应用于仅适用于版本的问题,而不仅仅是说明网站使用的版本。

3
删除组件后,Webform数据会怎样?我可以更改组件类型吗?
我继承了一个复杂的Webform,其中包含数百个提交。组件之一是文本字段,用于捕获表单提交者的电子邮件地址。由于某种原因,这是一个文本字段,而不是一个电子邮件字段,这使我无法使用该电子邮件地址发送确认电子邮件。 如果要删除文本字段电子邮件组件,所有数据将如何处理?我假设它将被删除。 有什么办法可以在保留数据的同时更改表单组件的类型? 更新:我正在使用Drupal 7和Webform 3.19
9 7  webforms 

2
Views上下文过滤器如何工作?
我正在尝试再次围绕上下文过滤器展开讨论!我曾经用过它,但是我又完全陷入了困境。这是我想做的事情: 生成带有分类术语插入到此克隆页面中的克隆内容节点页面。 例如:EXAMPLE.com/white-shoes/blue 当用户到达/ white-shoes页面时,它将显示面向白色的原始节点页面。现在,如果用户落在/ white-shoes / blue上,它将显示相同的节点页面,但是这次将重写所有正文内容,将白色替换为蓝色。 在“ 视图”中,我必须创建一个页面显示,其路径为:%/% 现在,我将创建一个上下文过滤器来检索nid。我添加Content:nid作为上下文过滤器。我选择提供默认值,然后输入以下PHP代码: $ x = drupal_lookup_path('源',arg(0)); $ y = explode('/',$ x); 返回$ y 1 ; 该PHP代码基本上将URL的/ white-shoes部分转换为NID。但它不起作用。我通过终端通过drush ev测试了代码,确实得到了返回的结果,所以我知道它可以工作。 我对分类术语名称进行了相同的操作,并为此添加了上下文过滤器。这次,我选择“ 提供默认值”并选择“ 来自URL的原始值”,然后选择第二个参数。 如您所见,当我为上下文过滤器输入预览值:AAA / BBB / CCC时。我的默认值被忽略。它本来应该抓住第二个参数,但是只有第一个。查看SQL语句WHERE,当它应该是BBB时,它将得到AAA。 所以问题是我在做错什么,还是对我想要完成的事情有更好的解决方案?
9 7  commerce  views 

2
如何更改“ form_set_error”输出的位置?
Drupal 7中有没有一种方法可以更改输出的位置form_set_error? 此刻,它调用drupal_set_message将所有表单错误排队到屏幕顶部。 相反,我希望每个消息都显示在相应字段的下方。 如果无法做到这一点,是否可以在不使用MODULE_form_name_validate()功能的情况下手动将表单标记为“无效” form_set_error?
9 7  forms 

5
如何获取上次插入的记录ID?
我想获取数据库表中最后插入的行的记录ID。我正在尝试使用db_last_insert_id(),但是它引发了异常。 调用未定义的函数 db_last_insert_id() 如何获取上次插入的记录ID?
9 7  database 

3
在自定义模块中通过文件字段以编程方式创建内容类型
我正在编写一个自定义模块,这是我之前做过的,但这是我第一次尝试使用字段创建内容类型。我实现了hook_node_info,内容类型显示在admin_menu下拉列表中的内容类型列表中,但是当我浏览到admin/structure/types它时未列出。 我实现了hook_install,并获取了在另一个SO问题上发现的一些代码。我已经将代码打印出一些调试信息到我的错误日志中,并且看起来一切正常,但是当我浏览到“结构内容类型”时,它没有显示我添加的字段。 这是钩子: function mymod_node_info() { return array( 'mymod_content' => array( 'name' => t('My Mod'), 'base' => 'mymod_content', 'description' => t('A Description'), ) ); } function mymod_install() { error_log('mymod_install'); $types = node_type_get_types(); if ( ! field_info_field('field_mymod_myfile') ) { $field = array( 'field_name' => 'field_mymod_myfile', 'type' => 'file', ); $created_field = …

3
如何加快drupal的node_save()函数?
node_save()的效率低下给我带来很多麻烦。但是节点可以解决我的问题吗?最终,这就是我想要找出的。 我创建了一个具有100,000次迭代的循环。我创建了使节点对象有效并正确保存的最低要求。这是节点保存代码: $node = new stdClass(); $node->type = "test_page"; node_object_prepare($node); $node->uid = 1; $node->title = $node_title; $node->status = 1; $node->language = LANGUAGE_NONE; if($node = node_submit($node)){ node_save($node); } 结果如下: 保存了100,000个节点,每个节点都使用node_save()。完成了5196.22秒。那就是19节省一秒钟。 至少可以说,这是不可接受的,特别是当此人每秒获得大约1200个单独的插入查询,并且这个人每秒获得25,000个插入时。 那么,这是怎么回事?瓶颈在哪里?是否与node_save()函数一起使用以及如何设计? 可能是我的硬件吗?我的硬件是一台开发服务器,除我之外没有人可以使用-Intel双核,3Ghz,Ubuntu 12.04和16 gig的ram。 在循环运行时,我的资源使用情况是:MySQL 27%CPU,6M RAM;PHP 22%CPU 2M RAM。 我的mysql配置由percona向导完成。 Mysql说,如果我的CPU使用率低于70%,我的问题就是磁盘绑定。当然,我只有WD Caviar 7200 RPM磨粉机,但我希望它每秒能获得超过19次插入! 不久之前,我写过关于每天节省30,000个节点的文章。但是,需要明确的是,该节点与任何外力无关。纯粹是了解如何提高对node_save()的调用速度的基准。 实际上,我需要使用node_save每分钟将30,000个项目放入数据库。如果不选择保存节点,我想知道我是否可以编写自己的drupal api函数“ node_batch_save()”或利用mysql的INSERT查询功能进行批量插入的功能。关于如何处理此问题的想法?
9 7  performance  nodes 

5
如何正确删除字段集合?
Drupal版本:7.21 字段收集模块版本:7.x-1.0-beta5 简短说明:我正忙于尝试以编程方式导入字段集合,但是在删除其中一些字段时,总会剩下一些“伪”字段集合。 详细说明:我的用户的个人资料上有一个字段收集字段。该字段集合包含3个文本字段。我想将数据从自定义sql数据库导入到用户的字段集合中。该字段集合可以具有多个值。当我第一次导入数据时,一切正常,我在字段集合的字段中看到了数据。大。 但是,这是棘手的部分。假设我为一个特定用户从定制数据库中导入了5行。它们被添加到字段集合中,因此此字段集合有5个项目,每个项目包含3个字段。然后,从自定义数据库中删除一些行,以使该用户仅剩下3行。我再次运行导入,更新了字段集合的前3个项目,但是接下来剩下的是前一次导入的2个项目。应该删除它们,因为我只有3个导入行,但仍然有5个字段收集项。 因此,我尝试删除这些字段收集项,但始终剩下一个或多个项。当我查看用户个人资料时,这些字段为空,但那里还是有东西。假设此时我在自定义数据库中为该用户添加了5个新行,因此该用户总共有8行。然后,我再次运行导入。前3个项目得到更新,但是当我尝试添加第4行时,它仍然从第4个字段集合项中获取实体ID,尝试对其进行更新,但失败并返回此错误: Fatal error: Call to undefined method stdClass::save() 我尝试使用以下每种方法删除字段收集项: // Method 1 entity_delete_multiple('field_collection_item', array($fc_id)); // Method 2 $field_collection_item = field_collection_item_load($fc_id); $field_collection_item->delete(); // Method 3 $field_collection_item = field_collection_item_load($fc_id); $field_collection_item->deleteRevision(); 这是我的完整代码: function import_user_field_collection(&$user, $old_user_id) { // I do a query to get the rows I want to …
9 7  entities 

9
视图3以编程方式删除暴露的过滤器
我有几种节点类型,每种类型都引用了不同的分类术语词汇。对于显示类别,我使用taxonomy_display模块。 例如,我们有两类:球杆和台球。 提示有价格,价格和木质过滤器。但是球没有木质过滤器。 因此,如果taxonomy_term tid引用了台球词汇,则需要删除木质过滤器。 因此,我需要以编程方式删除许多公开的过滤器之一。 function modulename_views_pre_view(&$view, &$display_id, &$args) { // Some custom logic wich field_info_instances checking ... $filter_field = 'filter_id'; // Removes from everywhere where i can find filter or filters properties unset($view->display[$view->current_display]->display_options['filters'][$filter_field]); unset($view->display[$view->current_display]->handler->options['filters'][$filter_field]); unset($view->display_handler->display->display_options['filters'][$filter_field]); unset($view->display_handler->options['filters'][$filter_field]); } 筛选器字段删除成功,但是我有php通知: Notice: Undefined index: field_wood_reference_tid in function views_handler_filter_term_node_tid->exposed_validate() 我也尝试删除hook_pre_execute()中的字段,但结果相同: function modulename_views_pre_execute(&$view) …
9 7  views 

1
为什么正文字段的语言不会保存为与节点相同的语言?
我遇到了一个问题,用户正在创建新节点并输入正文,但是将节点设置为该语言的“语言中立”。但是,当它保存节点时,正文字段的语言将设置为英语。为什么会这样呢?是什么原因造成的? 在此站点上,我们同时启用和配置了英语和法语。该站点是运行i18n的D7。 这类似于节点编辑页面中的“空正文”,不同之处在于,我想知道该字段将如何获得与节点最初不同的语言。

3
所有网络表单或按内容类型网络表单的Drupal 7 Captcha
我在D7上。 我的内容类型启用了网络表单。 要求 我需要为该内容类型的节点的所有Web表单实现验证码。 问题 在D7中,应该在设置页面中提供form_id以获取表单中的验证码,但是我将加载具有所有不同form_id的表单。 我现在用的是验证码模块。 有什么办法可以实现我的要求?
9 7  webforms  captcha 

2
有什么办法按周数过滤吗?
Drupal 7,意见3 我配置了几个视图,这些视图显示了多年的数据。使用日期字段作为过滤条件按年份过滤数据。对于每一年,我都有附件视图,需要按星期进一步过滤。我想知道是否有任何方法可以添加一个过滤条件来按周编号(即第1周到第52周)进行过滤,而不是确定每年几周的确切日期并将其手动输入为过滤条件。每个视图的唯一需要设置的日期是年份,其余日期根据星期数自动发生。 我在表视图中按年和周汇总了大量数据,其中每列都是附加的视图附件,并尝试避免必须手动输入每年的星期日期过滤器。 有人对此有任何建议/提示吗?非常感谢。 这是我当前正在使用的代码: function x_week_start($date) { $ts = strtotime($date); $start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts); return date('Y-m-d', $start); } function x_week_end($date) { $ts = strtotime($date); $start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts); return date('Y-m-d', strtotime('next saturday', …
9 7  views 

5
在保存节点上强制生成图像样式
我仍然在这里描述我的问题图像样式,在字段收集项中重复使用图像,但是我放弃了以获得解决方案。 我想到的一种解决方法是强制在nodesave上生成图像样式。有没有可能这样做?
9 7  media  entities 

2
显示限制匿名用户访问的菜单项
我有一个网站,该网站使用“ 私人”模块来设置对内容的访问权限,当然我的某些页面具有菜单项。现在,如果我将页面设置为私人页面,则只有拥有适当权限的用户才能看到该页面,这很棒,而且是我想要的。 但是我对菜单项有一些问题,如果分配给它们的内容不是公开的(例如,分配给它们的页面是私有的),它们就会消失,这是可以的,但是我仍然希望能够显示那些菜单项在导航中,因此如果用户单击它们,它将带他们到登录页面,要求他们输入详细信息以查看该特定页面。 因此,基本上,我想更改菜单项的行为,使其始终对网站的匿名和注册成员可见,但是当您单击它们时,您将能够看到页面(如果已登录)或重定向到登录页面(如果是匿名用户) 我发现这种解决方案对我来说不是最佳解决方案,因为我有很多这样的页面,因此我正在寻找一种更好的方法。我什至尝试了菜单项可见性模块,但也无济于事! 请问我该如何实现? 路卡
9 7  routes  users 

2
迁移失败:on子句不明确
我是migrate第一次使用该模块,并且已经使用过db_selectapi了一点,但遇到了错误。 我正在尝试将一些旧标签转换为drupal分类法。当我浏览该/admin/content/migrate页面时,它会正确执行查询并显示应迁移的正确行数。但是,当我实际尝试运行导入时,出现此错误: 迁移因源插件异常而失败:SQLSTATE [23000]:违反完整性约束:1052 on子句中的列'labelId'不明确 这是我在LabelMigration类中拥有的代码: $this->map = new MigrateSQLMap($this->machineName, array( 'labelId' => array('type' => 'int', 'not null' => TRUE) ), MigrateDestinationTerm::getKeySchema() ); $query = db_select('migrate_account_label', 'l') ->fields('l', array('labelId', 'label')) ; $query->leftJoin('migrate_asset_labels_membership', 'lm', 'l.labelId = lm.labelId'); $query->leftJoin('migrate_asset', 'a', 'lm.assetId = a.assetId'); $query->addExpression('count(*)', 'num'); $query->condition('a.type', 'B'); $query->groupBy('l.labelId'); $query->groupBy('l.label'); $this->source = new …
9 7  database  migration 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.