Drupal

Drupal开发人员和管理员的问答

2
如何摆脱死锁和锁定超时类型问题?
我读过多个博客,尝试过搜索google,但没有从任何解决方案中获得满意的结果。我有以下问题: PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction: DELETE FROM {cache_field} WHERE (cid LIKE :db_condition_placeholder_0 ESCAPE '\\') ; Array ( [:db_condition_placeholder_0] => field\_info:% ) in cache_clear_all() (line 163 of \includes\cache.inc). PDOException: SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction: …


10
获取分类条款
我想从Drupal 8中的某个词汇表检索分类术语。 显然,我仍然可以使用它,taxonomy_get_tree但已弃用。 我现在必须使用TermStorageInterface :: loadTree 我正在尝试从a访问此函数,Block但我不了解如何实例化TermStorageInterface该类。 我尝试直接访问该函数,但这不是静态函数: TermStorageInterface::loadTree('categories') 我尝试实例化课程,但它告诉了我 Cannot instantiate interface Drupal\taxonomy\TermStorageInterface $test = new TermStorageInterface(); 我不了解此类的工作方式以及如何访问分类链接。我想我缺少了解Drupal的工作原理的很大一部分。
17 taxonomy-terms  8 

3
“应该避免在类中进行重复调用,而应使用依赖注入”
在我的模块中,使用以下代码获取给定网址的网址别名: $alias = \Drupal::service('path.alias_manager')->getPathByAlias($_POST['url']); 但是我在我的模块中运行“自动审阅”(http://pareview.sh/)时,我得到以下警告: 16 | 警告| \在类中应避免重复调用,而应使用依赖注入 如何使用依赖注入来更新以上代码?我的整个课程代码如下。 <?php namespace Drupal\my_module\Controller; use Drupal\Core\Controller\ControllerBase; /** * MyModule Class defines ajax callback function. */ class MyModule extends ControllerBase { /** * Callback function for ajax request. */ public function getUserContent() { $alias = \Drupal::service('path.alias_manager')->getPathByAlias($_POST['url']); $alias = explode('/', $alias); $my_module_views = …

8
我如何获得基本路径?
我想在Drupal 8模板文件中使用基本路径。我尝试了以下操作,但没有得到正确的结果。 {{ app.request.baseUrl }} {{base_path}} 我需要的是该节点的绝对路径{{ app.request.baseUrl }}/{{ url }}。 我发现的一个解决方案是将这段代码放在预处理钩中,并将其传递给主题。 $host = \Drupal::request()->getHost(); $response = \Drupal::httpClient() 我正在寻找更好的解决方案。我应该用什么代替我正在使用的那个?
16 theming 

7
从导入/导出中排除配置
我以为这是新的配置管理系统的简单用例,但是我没有运气找到解决方法: 问题 我想将配置存储在git中,并在开发过程中使用drush导出配置,然后在部署时导入配置。与在Drupal 7中还原功能非常相似。我的问题是,我不想在git中存储用于各种集成的访问代码。这导致这些配置在上被删除 $ drush cim -y 我看过的地方 我希望将有一个简单的配置列表/配置,在导入/导出时应排除在外。似乎有些时候,但是必须将其再次删除,因为它在当前的Drupal 8版本中可用。 我研究了如何对活动和同步存储进行比较来进行配置更改,以查看是否存在可以删除更改的地方,但事实并非如此。我查看了配置导入是如何进行的,因为它有一些配置排除了它本身,但是看起来好像不是可扩展的。我查看了ConfigEvents,但是这些似乎都是在导入后发生的,因此看起来无法使用。 我是否缺少某些东西,还是无法简单地从导入/导出中排除配置?

3
获取捆绑中定义的所有字段
为了获取内容类型中使用的所有字段,在Drupal 7中,我使用以下代码。 $fields = field_info_instances('node', 'article'); Drupal 8的等效功能是什么?
16 entities 

9
如何从具有值数据的选择字段的允许值列表中删除项目?
我创建了一个具有列表/选择选项字段的内容类型,并根据需要输入了键|值对,以使选择列表起作用。 数据已输入,已经确定某些术语不再适用,应删除它们。 但是,当尝试删除所说的术语时,出现以下错误: Allowed values list: some values are being removed while currently in use. 显然,在项目的整个生命周期中,价值都会发生变化。一旦节点与列出的术语相关联,删除项目的实际方法是什么? 这是我能找到的最接近的东西: https://drupal.org/node/1653012 它引用了一个d6插件和一些我不想不必求助的补丁技巧。如果确实必须最终使用补丁程序删除该字段上的验证检查,那么在与它们关联的节点上将这些项目变成孤立项目是否有任何危害? 更新,我再次遇到了一个政府客户,在拥有Drupal网站的过去7年中,有一个政府客户选择了50个州和地区。现在,政策已更改,不再需要包括这些领土。能够从选择列表中删除项目很重要,因此,我提供了一笔赏金。 我正在寻找一种安全的解决方案,以便能够从选择列表中删除项目。我不知道该解决方案是否应该更新任何节点,因为我不确定字段值相对于节点总内容的存储方式。 我对在MySQL中运行纯SQL解决方案感到满意;或者,我正在寻找一个模块。
16 7  entities 

3
如何调试EntityMalformedException?
我遇到了致命错误EntityMalformedException:类型节点的实体上缺少捆绑属性。 尝试访问user / xyz时,在entity_extract_ids()(。\ includes \ common.inc的第7700行)中。 我试图在第7700行中检索有关格式错误的节点的信息,在该行中生成了错误消息,其内容类似于: if (!isset($entity->{$info['entity keys']['bundle']}) || $entity->{$info['entity keys']['bundle']} === '') { dpm($info);// or dpm($entity); throw new EntityMalformedException(t('Missing bundle property on entity of type @entity_type.', array('@entity_type' => $entity_type))); } dpm($entity) 返回意外的用户对象,而$ info包含大量信息。 有人可以让我走对路吗? 我已经读了所有关于缺少捆绑软件属性错误的信息,但是没有一个可以解决。 dpm($entity) 退货 uid (String, 2 characters ) 70 name (String, 9 …

5
Drush需要更高的引导程序级别才能运行
您对我执行时可能导致此错误的原因有任何想法: drush si geoslate --db-url='mysql://root:root@localhost/geoslate' --site-name=Geoslate 命令site-install需要更高的引导程序级别才能运行-您将需要从功能更强大的Drupal环境中调用以运行此命令。 无法执行drush命令'si vimn_geoslate'。 找不到Drupal安装目录 ?
16 drush 

3
如何发布新节点?
我提到了许多链接,包括以下内容: 服务模块。如何使用会话信息构造JSON数据以创建节点? GitHub的 - 创建使用服务6.3 REST节点 我尝试了几种方法将新节点发布到Drupal站点,但是失败了。我创建了一个示例CCK,用于存储具有姓名,年龄,性别,DOB的学生数据,并添加了一些列表。 我已经安装并配置了服务模块(D7),并在服务上创建了服务端点。 不出所料,GET是获取JSON中节点详细信息的最简单方法。http://localhost/drupal/services/node仅列出所有节点。 我仍然不知道如何使用POST方法。 我想搜索名字叫约翰的学生。我试过了localhost/drupal/services/node&node[name]=john。我为Chrome 使用 POST Man插件,但未成功。我还尝试了其他方法。 我尝试将新学生添加到该站点,但没有成功。 谁能指导我使上述工作正常进行? 更新: 我尝试添加类型为article的新节点。工作正常。但是,当我尝试添加Department CCK类型的节点时,它显示“ s:22:” CSRF验证失败“; ”这是截屏 我已经通过链接https://drupal.org/node/2013781 我遵循会话= session_name = session_id,但仍然出现错误。
16 services 

5
仅在特定页面上包含其他jQuery版本
jQuery更新模块包括此脚本。 <script type="text/javascript" src="/sites/all/modules/jquery_update/replace/jquery.min.js?6"></script> 我在每个页面上都需要这个,除了我正在使用花式框的某个模板文件外,还需要更高版本的jQuery。 我只需要将以上脚本$scripts放在page-media-photos.tpl.php 的变量中,以排除jQuery更新。我该如何实现?
16 6  javascript 

2
了解Drupal的会话管理和用户身份验证
我有一个要求,我必须用中央服务器(即SSO服务器)的身份验证替换默认的用户身份验证。 通过调试Drupal,我知道所有会话管理都在includes/session.inc文件中进行。我要进行验证,如图所示: 场景:登录 步骤的详细信息将是: 替换登录表单,以将用户名和密码提交到SSO服务器(不是在Drupal上,而是在.NET上)。 使用该站点的数据库在SSO服务器上对用户进行身份验证;并将响应发送回我的网站的某个自定义PHP页面(或模块形式的表单?)。 使用响应,在用户表中标识用户,然后为该用户创建会话,而无需检查密码(因为这将意味着双重身份验证)。默认情况下,Drupal设置cookie的名称为$insecure_session_namevariable,值为value $sid。我希望Drupal不要在此处设置cookie,而是将变量的值发送到SSO服务器。 SSO服务器将获取值,创建一个cookie,然后将其放置在主域中domain.com(以提醒两者,my website并且sso server它们都位于主域的子域中,而在Drupal中也是如此)。然后,Drupal站点可以使用该cookie登录。 我知道这是一个很难回答的问题,我只是在寻找应该如何开始的指针?正如他们所说的“您不应该破解核心”。因此,我的问题是: 我应该在哪里寻找深度了解Drupal身份验证和会话管理的方式? 有没有一种方法可以includes/session.inc使用钩子来调用函数(如函数注释中所说的“仅供内部使用/不得修改”)? 注意:我将使用相同的方法注册用户,以便将记录保留在SSO服务器的中央数据库中。在此期间,将在Drupal站点的数据库中为同一用户输入一些垃圾密码(因为登录时不会检查该密码)。

2
暴露过滤器中的日期弹出
我正在使用具有视图3的Drupal 7。 我已经为日期字段使用了公开的过滤器,并且我想提供从datepopup中选择日期作为日期过滤器的选项?我怎样才能做到这一点?
16 views  datetime 


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.