Drupal

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


5
hook_preprocess_page():如何区分视图页面?
我正在编写一个自定义模块,该模块仅需要在“视图”页面中插入一些JavaScript和CSS文件。 我正在使用hook_preprocess_page,但是我不能确定当前页面是否来自视图: function mymodule_preprocess_page(&vars) { var_dump($vars); //output: nothings that reference the views! if([view page]) { drupal_add_js([...]); drupal_add_css([...]); // Rebuild scripts $scripts = drupal_get_js(); $vars['scripts'] = $scripts; // Same for css } } 我知道我可以使用模板文件(page-my_view_page_path.tpl.php),但是只有在启用了模块的情况下,才必须包括js和额外的CSS;所以我喜欢把这些东西直接放在我的模块代码中。 有想法吗?
10 views  7  theming  javascript 

4
如何将文件实体迁移到媒体实体?
我正在使用Migrate模块进行从D7到D8的迁移,并且正在用代码手动编写整个迁移(而不是使用内置的D7迁移模块,因为我想对迁移进行更多的粒度控制。) 我具有以下结构:D7站点有一个image字段,其中图像存储为File实体。在D8站点上,图像字段是对媒体实体的实体引用(媒体实体又具有图像字段)。 最初,我的图像迁移有以下几点: id: image_files source: plugin: legacy_images constants: source_base_path: http://example.com/ destination: plugin: 'entity:file' process: fid: fid filename: filename source_full_path: - plugin: concat delimiter: / source: - constants/source_base_path - uri - plugin: urlencode uri: plugin: file_copy source: - '@source_full_path' - uri filemime: filemime status: status 在我的文章节点迁移文件中,我具有以下内容: 'field_article_image/target_id': plugin: migration migration: …
10 8  migration 

2
如何设置Cookie寿命?
我在D8实例中设置Cookie生存期时遇到问题。我想将其设置为零,以便关闭浏览器注销用户。 我已添加ini_set('session.cookie_lifetime', 0);到site / default / settings.php文件。该文件中没有以前的cookie_lifetime参考。我加了线。我还清除了Drupal缓存并清除了我的Chrome缓存。可悲的是,它没有得到尊重。在浏览器关闭后,会话仍然存在。 我已经搜索了整个代码库,ini_set('session.cookie_lifetime', 200000);但是在我的网站中似乎不存在。我看不到Drupal在哪里设置cookie寿命。我还尝试通过根目录中的php.ini文件添加设置,但是Drupal否决了该设置。 我觉得这很简单,所以我想避免使用插件。期待大家的来信。提前致谢。
10 8  cookies 

1
如何从实体参考字段获取参考实体ID的数组
我有一个基数entity_reference字段BaseFieldDefinition::CARDINALITY_UNLIMITED。我想要一个参考实体ID的列表。我知道可以通过调用来获取所有引用的实体$x->referencedEntities(),但是我只希望id可以在以后加载实体。目前,我正在这样做: $a = []; foreach ($entity->autoren as $v) { $a[] = $v->target_id; } $this->setCurrentAnwaltReferenzen($a); 有谁知道像D7(-> raw())那样更好的解决方案? 谢谢
10 8  entities 

6
如何在链接窗口小部件自动完成中显示10个以上的项目?
这是有关链接模块的问题。由于使用链接模块可以同时输入外部或内部链接,因此我们强烈依赖它。 不幸的是,要从其“自动完成”字段中显示的项目数限制为10个。我们有许多节点的标题几乎相同,因此,当存在以下情况时,我们正在搜索的节点不会显示在“自动完成”字段中超过10个匹配的标题。 该限制已硬编码在中core/lib/Drupal/Core/Entity/EntityAutocompleteMatcher.php。有没有一种优雅的方法可以从自定义模块中增加这个数量呢?我需要扩展class EntityAutocompleteMatcher吗?我必须在哪里放置扩展,以及如何确保从链接小部件中执行扩展?
10 8  navigation  ajax 

3
如何解决“ Hook实现不应与@param文档重复。”?
我正在使用PhpStorm尝试清理自定义模块中的代码。对于以下功能,我收到此警告: 挂钩实现不应重复@param文档。 /** * Implements hook_field_widget_form_alter(). * * @param array $element * @param array $form_state * @param array $context */ function mymodule_field_widget_form_alter(&$element, $form_state, $context) { if ($context['widget'] instanceof \Drupal\text\Plugin\Field\FieldWidget\TextareaWidget) { $element['#after_build'][] = '_mymodule_remove_textarea_help'; } } 我应该怎么做才能解决这个问题?我以为我需要删除@param评论,但是当我这样做时,PhpStorm抱怨我没有任何参数评论。

8
如何在Drupal 8迁移模块中刷新新的迁移?
在编写Drupal 8迁移过程时,如果我重新安装自定义迁移模块,则只能刷新新的迁移过程。Drush cr不起作用。 说明: 我有一个模块,即:cm_migrations,其中有2个迁移: cm_users cm_tags 随着drush ms我看到: Group: beer Status Total Imported Unprocessed Last imported cm_users Idle 3 3 0 2016-02-09 16:56:25 cm_tags Idle 4 0 4 我编写了一个新的迁移过程: cm_beers 我执行了,drush cr; drush ms并且看到了与以前相同的表。 仅当我卸载并安装时,cm_migrations我才能看到三个迁移过程: Group: beer Status Total Imported Unprocessed Last imported cm_users Idle 3 3 0 2016-02-09 …
10 migration 

1
主题挂钩与模块挂钩
有时,当我尝试应用一个钩子时,只是意识到它应该在模块文件中。 有没有一种方法可以知道可以在主题的template.php文件中或模块中实现哪些钩子?
10 hooks 

5
保存或删除节点后如何执行重定向到自定义页面?
我尝试执行的操作不起作用,但仍然重定向到/ node / {id}: function hook_form_alter(&$form, $form_state, $form_id) { $form['actions']['submit']['#submit'][] = 'callback_set_redirect'; } function callback_set_redirect($form, FormStateInterface $form_state) { $form_state->setRedirect('custom.landing.page'); }
10 8  redirection 

3
管理员可以创建没有密码的新帐户吗?
管理员创建新帐户(admin / people / create)时,系统会提示他们输入该帐户的密码。我的客户希望这样的情况是,在后端创建帐户时,管理员不必输入密码,但是会向用户发送一条带有一次性登录链接的通知消息,然后可以设置使用该密码登录后输入密码。实现这样的最佳方法是什么? 我曾想过可能会更改表单以将#default_value密码字段的值设置为随机密码,然后再设置'#access' => FALSE,但是我不确定这是否是最好的方法。
10 7  users 


6
如何使用服务基本身份验证?
如何使用服务基本身份验证模块? 我想为我的服务添加http基本身份验证。我已经安装了它并在端点配置上启用了它。我在端点配置中得到了此“ HTTP基本认证Services_basic_auth没有可用的设置”。设置页面在哪里?
10 7  services 

2
如何通过REST服务创建具有角色的用户?
我可以通过以下JSON格式创建一个新用户。(使用POSTER附加程序将此数据发布到REST服务。) { "name":"user34", "pass":"3323", "mail":"sample@example.com", "status":"1" } 我的问题是如何创建具有特定角色的用户。我尝试使用以下JSON格式。 { "name":"user35", "pass":"pwds3", "mail":"sample2@example.com", "status":"1", "roles":{ "2":"authenticated user", "4":"moderator" } } 但是响应给出了以下错误 [“检测到非法选择。请与站点管理员联系。”]
10 7  users  services 

5
通过ajax更新选择列表值时如何避免“检测到非法选择”?
我有四个实体引用字段,用于表单中的用户实体。主机表单是节点编辑表单。其中三个是选择列表,最后一个是内联实体表单。 通过IEF添加用户实体后,我尝试更新选择列表值: function ebep_users_feature_users_list_ajax($form, $form_state) { $ief = array_shift($form_state['inline_entity_form']); $options = array('_node' => t('- None -')); $commands = array(); foreach($ief['entities'] as $data) { $options[$data['entity']->uid] = $data['entity']->name; } foreach(_ebep_users_feature_getUserListFieldNames() as $fieldName) { $form[$fieldName]['und']['#options'] = $options; $commands[] = ajax_command_replace('#'.$fieldName.'_wrapper', drupal_render($form[$fieldName])); } return array('#type' => 'ajax', '#commands' => $commands); } 它可以工作,但是当我尝试通过IEF添加另一个用户时,我得到了: 检测到非法选择。请联系网站管理员。
10 7  ajax  forms 

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.