如何将块(同一块)分配两次或三次到不同的区域?我们的想法不是在同一页面上多次使用相同的块,而是在不同页面的不同位置,因此可以使用四个"显示":
它应该位于何处,应该像在textare中添加节点路径一样简单,对吧?我明白这就是它的意思......
如果它是一个模块(请上帝不,不是另一个模块!),我想了解一些细节.
谢谢.
我正在使用hook_block创建一个具有我正在创建的自定义模块名称的块.
我不能在不使用myModuleName_block的情况下创建块.
我是否需要为我想要创建的每个不同的块执行不同的模块?
我做了一个自定义的Drupal模块.在其中我创建了一个块和一个表单.如何使表单显示在块内容中?干杯.
区号:
function module_block($op = 'list', $delta = 0, $edit = array()) {
$block = array();
if ($op == "list") {
// Test
$block[0]["info"] = t('Block');
}
else if ($op == 'view') {
$block['content'] = module_function();
}
return $block;
}
// End module_block
Run Code Online (Sandbox Code Playgroud)
表格代码:
function module_my_form($form_state) {
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('Email'),
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
);
return $form;
}
Run Code Online (Sandbox Code Playgroud)
再次欢呼,任何帮助.
我想创建一个包含来自page.tpl.php的$ tabs的块
/**
* Implements hook_block_info().
*/
function mymodule_block_info() {
$blocks['tabs'] = array(
'info' => t('Tabs in block'),
'description' => t('blah blah blah'),
);
return $blocks;
}
/**
* Implements hook_block_view().
*/
function mymodule_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'tabs':
$block['subject'] = t("THIS IS ZHE TABS!");
$block['content'] = array(
'#theme' => 'menu_local_tasks',
'#primary' => menu_local_tasks(0),
'#secondary' => menu_local_tasks(1),
);
break;
}
return $block;
}
Run Code Online (Sandbox Code Playgroud)
该块正在正确注册,并且正在显示正确的选项卡.但是,Drupal会抛出很多错误!
Warning: Invalid argument supplied for foreach() in element_children() (line 6300 …Run Code Online (Sandbox Code Playgroud) 我正在 Drupal 8 中开发一个自定义模块。它显示有关使用我们服务的一些组织的数据。为此,我创建了一个控制器,用于显示数据库中的数据,该数据由另一个模块放在那里。从 Drupal 8 开发中可用的稀缺信息和教程中,我已经能够创建以下内容。在 .routing.yml 文件中,我像这样创建了一个到这个概览表的路径(它在这里没有正确复制,但缩进没问题):
OrganizationOverview.world:
path: '/world'
defaults:
_controller: 'Drupal\OrganizationOverview\Controller\OrganizationOverviewController::overview'
_title: 'World'
requirements:
_role: 'administrator'
_permission: 'access content'
Run Code Online (Sandbox Code Playgroud)
所以现在可以通过 URL 访问概览site.com/world。但我们想要的是将其显示在首页或网站上的其他任何位置。为此,它需要是一个块。为此,我创建了一个OrganizationOverviewBlock类,OrganizationOverview/src/Plugin/Block/OrganizationOverviewBlock.php其中根据 PSR-4 标准是正确的方法。这个类看起来像这样:
<?php
namespace Drupal\OrganizationOverview\Plugin\Block;
use Drupal\Core\Block\BlockBase;
use Drupal\Core\Session\AccountInterface;
/**
* Provides a 'OrganizationOverviewBlock' block.
*
* @Block(
* id = "organization_overview_block",
* admin_label = @Translation("OrganizationOverviewBlock"),
* category = @Translation("Custom")
* )
*/
class OrganizationOverviewBlock extends BlockBase
{
public function build()
{
return array(
'#markup' => 'Hello World', …Run Code Online (Sandbox Code Playgroud) 我的drupal网站上有200多个块.现在我无法从管理端重新排序块.
我可以拖放块.所以我的js没问题(我想是这样).保存块后,选定的块转到上一个位置.(重量没有更新.)
任何的想法?
我有一个查询节点数据库的块,但该节点可以翻译成英语/西班牙语/ ...
有没有办法获取用户选择的语言,以便我可以将查询更新为"AND node.language ='x'"(en/sp/..)?
<?php
$args = explode("/",$_GET['q']);
$result = db_query("
SELECT node_revisions.body AS body FROM
{node} AS node
INNER JOIN {node_revisions} AS node_revisions ON node.vid = node_revisions.vid
INNER JOIN {term_node} AS term_node ON term_node.nid = node.nid
INNER JOIN {term_data} AS term_data ON term_data.tid = term_node.tid
WHERE term_data.name = '".$args[1]."' AND node.type = 'country_page'
LIMIT 1
", $user->uid);
while($row = db_fetch_object($result)){
echo($row->body);
}
?>
Run Code Online (Sandbox Code Playgroud) 我正在构建一个模块,以块的形式管理广告单元,所有这些都需要彼此了解并传递信息.
因此,我需要找到一个简单的钩子或其他函数来获取将在页面上使用的每个块的列表,因此我可以确定知道页面上的整个广告单元列表.
我已经尝试过hook_block_list_alter()但是这似乎返回了我的Drupal安装中存在的块的整个列表,没有指定实际上将在这个页面上呈现哪些块.
所以,现在我该怎么办?
我创建了一个禅宗主题的子.我非常自豪,但在右上角(#second- menu)用户菜单显示 - 完美.
我只是不明白它是如何得到的?
这不奇怪吗?
我想为我通过转到结构/块布局/类型/添加自定义块类型创建的自定义块类型创建模板。我创建的类型称为菜单。如何从这里创建此自定义块类型的模板?我对 Drupal 不太熟悉,所以任何帮助将不胜感激。
drupal-blocks ×10
drupal ×9
drupal-7 ×2
drupal-8 ×2
php ×2
block ×1
custom-code ×1
drupal-6 ×1
drupal-forms ×1
drupal-zen ×1
localization ×1
module ×1
translation ×1