Drupal

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

1
在模块开发中何时使用包含(inc)文件
我想我了解.inc文件的结构差异(与.module相比),但是有人可以描述设计差异吗?我看到drupal示例模块使用hook_menu调用了.inc文件,或者我看到了调用.inc文件以进行函数定义。 在什么情况下将代码放入.inc文件?是否遵守一些一般的设计准则? 除了清楚为什么要使用一个(或多个).inc文件之外,还有其他好处吗?性能?版本控制? 谢谢!
10 7 

1
哪个性能更高:entity_metadata_wrapper或field_get_items?
要从实体获取值,有两种方法: 使用field_get_items并获取字段的值 使用entity_metadata_wrapper并获取字段的值 尽管entity_metadata_wrapper抽象化了语言差异,但有时它的API仍然很笨拙,尤其是在使用PHP 5.3时。例如,获取长文本字段的值通常采用以下路线: $field = $wrapper->field->value(); print $field['safe_value']; 幸运的是,PHP 5.4支持以下语法:print $wrapper->field->value()['safe_value'];。 但是我的问题是更关注性能。它们都如何工作?他们是否在每次请求值时查询数据库?是否entity_metadata_wrapper一次请求所有内容?(field_get_item更适合于单值检索。) 我不够勇敢地深入探究Drupal源。

5
使用Services 3.x和JSON创建注释和节点
我无法让服务识别到/comment.json的POST。创建节点也有类似的问题。 以下是我得到的错误:HTTP / 1.1 406不可接受:缺少必需的参数注释 此消息来自文件:/services/server/rest_server/includes/RESTServer.inc具体来说,以下几行: elseif (!isset($info['optional']) || !$info['optional']) { return services_error(t('Missing required argument !arg', array( '!arg' => $info['name'], )), 406); } 基本上,似乎认为缺少“ comment”参数(并且它不是可选的)。 这是我提供的JSON的许多位之一(向节点8801发布注释) {name:"test",language:"und",cid:"0",pid:"0",uid:"17593",nid:"8801", comment:{subject:"Subject of the comment, if not entered it will be auto-generated", comment_body: {und:[ [{value:"value of the field comment in the comment, remember that …
10 7  services  8  json 

2
如何创建一个GET表格
例如,在管理区域上的过滤器表单最好是GET表单,这样它们就可以添加书签,并且可以在整个分页中维护过滤器。 如何最好地将form_api用于此类表单?_validate挂钩会被提交吗?可以省略_submit挂钩吗? 例如,暴露于视图的过滤器以这种方式工作;但是视图中处理此问题的代码非常复杂,太复杂了,以至于无法在开发具有简单过滤器形式的自定义接口时用作示例。
10 forms 

3
hook_form_alter执行顺序
有没有一种方法可以在Drupal 7中更改hook_form_alter的执行顺序,而无需更改模块的权重或对Drupal Core进行黑客攻击? 我正在尝试从翻译模块更改在translation_form_node_form_alter中添加的元素。在调试表单时,我找不到元素,因此我假设我的钩子在翻译模块中的钩子之前执行。
10 7  forms  hooks 

1
默认情况下,Drupal 8 core是否收集访客数据?
最近几天以来,我进行了很多搜索,但没有得到答案。我正在准备网站的隐私政策。我不提供任何用户注册或用户登录功能,但匿名用户可以发表评论。现在,在我阅读了有关DA的问答之后,出现了问题, 不要在Drupal 7中收集IP地址 现在,由于我无意收集任何用户信息(尚未启用统计信息模块),因此我可以简单地写下“我不收集任何用户信息”。同样,问题来了,如果代码在我们不知情的情况下收集IP地址/主机名该怎么办。 因此,如果有一种方法可以知道收集了哪些信息以及如何保存,那么我们可以确定这一点,并且可以在隐私策略中声明,或者如果Drupal核心未收集任何数据,那么我们也可以确定并写下“我们不收集任何访客数据”。有办法知道吗? 注意:请让我知道,如果这个问题是针对隐私政策的(不是drupal),我将其移至SO。但是,它又与Drupal CMS代码有关,所以我想先在这里问一下。 更新: 在Drupal核心提出了一个问题:Drupal核心的法律隐私政策声明 然后您会看到评论与其他问题相关联:GDPR合规性引起的隐私问题,该问题已经在进行中,并且有关此模块的创建正在进行中,该模块将成为通用数据保护法规。 如果您要添加一些建议,请添加有问题的评论。
10 8  users 

4
为什么“撰写者更新drupal / drupal”无效?
我使用安装了Drupal 8.2.0网站composer create-project drupal/drupal testsite。 现在,我想将其升级到Drupal 8.2.1。但是,运行composer update drupal/drupal 不起作用。它显示以下错误: 未安装列出的用于更新的软件包“ drupal / drupal”。无视。 我该怎么做呢?在example.gitignore中清楚地记录了支持。 # Ignore core when managing all of a project's dependencies with Composer # including Drupal core. # core 因此,必须有某种方法可以使用作曲家来做到这一点,但是怎么做呢?
10 8  composer 

1
如何使用Composer更新核心?
好的,我是一名作曲新手。因此,在我以前的站点中,我使用了作曲管理器来更新Drupal的核心。使用起来非常简单(只需运行“ composer drupal-update”)。但是,作曲经理现在表示已弃用。 由于Drupal 8.1的改进,该模块的Drupal 8版本已被弃用,不再需要。直接使用Composer获取所需的模块,该模块还将下载其所需的库。 因此,今天我收到警告,我需要对内核应用安全更新,但是找不到关于如何使用作曲家更新Drupal内核的任何文档。 这是通过Drupal Console,Drush完成的还是我需要运行的实际Composer命令?除了“从drupal.org下载最新版本的Drupal并手动替换所有文件”之外,我还不清楚首选的过程是什么。
10 8  composer 

2
如何创建和使用自定义挂钩?
我在这里发布了一个问题,它有一个建议,但没有答案。有没有人对如何在Drupal 8中实现自定义钩子提供任何建议,该钩子将允许其他模块更新由父模块创建的目录?目录将是无序列表。
10 8 

1
drush / drush dev-master需要codegyre / robo〜1.0.0-beta1
我正在将Drupal 6站点过渡到Drupal 8.1,所以按照官方说明,我在其自己的目录中设置了一个新安装。由于这只是一个站点,因此我按照说明在$ databases数组声明后将数据库凭据放入site / default / default.settings.php中。 运行drush --status返回以下内容。 Drush version : 8.1-dev Drush temp directory : /tmp Drush configuration : Drush alias files : Drupal root : /media/psf/Home/apps/newp Drupal Settings File : MISSING 由于此Drupal是8.1-dev,因此必须升级。由于这是使用Composer进行的全局安装,因此我运行composer global update。 您的要求无法解决为一组可安装的软件包drush / drush dev-master需要codegyre / robo〜1.0.0-beta1 检查github上的drush-ops页面不会显示任何异常,也不显示我的Google搜索。 我在俯视什么?
10 8  drush 

4
如何修剪正文(field_body)?
我已经为节点创建了一个视图,该视图将内容显示为呈现的实体。除其他外,我在树枝模板中输出body字段: {{ content.field_body }} 现在,我想将文本限制为200个字符,并放置三个点。我已经测试了三种不同的方法来执行此操作,但是没有任何效果。问题是,每种方式也都计数和修剪HTML字符。 1:我在“管理显示”中添加了“修剪”格式=>文本有限,但不正确。而且我没有三个点。 2:我修剪了树枝模板中的文本。但是要计算文字数,我必须先渲染它。因此,twig将文本输出为HTML(我在页面上看到HTML标签!) {% set text = content.field_body|render %} {{ text|length > 200 ? text|slice(0, 200) ~ '...' : text }} 3:我试图解决template_preprocess_node()中的问题。在这里,我在计算HTML标记方面也有同样的问题。 $body_text = $node->get('field_body')->getValue()[0]['value']; $trimmed_text = substr($body_text, 0, 200) . '...'; 如何正确修剪文字? 非常感谢您的帮助!
10 theming  8 

4
获取所有内容类型的列表
如何获得在Drupal 8站点中定义的所有内容类型的列表? 在Drupal 7中,它曾经是node_type_get_types(),但已被弃用。 我尝试过,Entity::loadMultiple()但似乎没有用。我当时正在考虑进行自定义查询,但是我不知道它如何存储在数据库中。
10 nodes  8 


3
如何通过管理界面或Drush禁用模块?
在Drupal 7中,可以通过管理界面或Drush禁用模块drush pm-disable。在Drupal 8中,管理界面中的复选框为灰色,而Drush无法通过pm-disable禁用它们?如何使用Drush或通过管理UI禁用Drupal 8中的模块?还是我需要Drupal控制台来执行这些任务? (对于错误地使用“以编程方式”一词所引起的混淆,很抱歉,它是指“通过命令行”的含义。)
10 8  drush 

1
应该以什么顺序运行配置导入和模块更新?
由于模块的架构版本存储在键值存储中,因此它对于每个站点都是唯一的,并且不会通过配置管理进行同步。这是有道理的,因为更新可能需要进行未封装在配置中的调整(例如数据库更新),但是配置中可能还包含其他更改(例如,添加新的配置值)。 以任何顺序运行配置导入和数据库更新是否存在任何风险? 运行这些操作的首选顺序是什么? 更新挂钩是否需要对可能已经导入的配置项进行特殊调整? 完全更新生产环境是否需要其他操作?

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.