Привет друпал сообщество.
Нужна небольшая помощь по Drupal 8. Пишу модуль, который будет будет крутит подряд видео фоном. Делаю его через модуль, который создает блок. Данный блок будет выводится только на нескольких страницах и поэтому их я перечисляю, где выводить.
Проблема.
Я написал js. Подключаю его через .libraries.yml
<?php dependencies:
- core/jquery
js:
js/video.js: {}?>
затем в Plugin Block вывожу соответственно данную библиотеку
Проблема в том, что этот js есть на тех страницах, где нет этого блока.
Как мне решить данную проблему?
Спасибо.
Комментарии
создайте блок в библиотеке пользовательских блоков
/admin/structure/block/block-content
и вставьте js обычным html-кодом.
настройте видимость блока с js так же как и целевого блока (с видео)
Я конечно не дурак думаю, но так пробовал.
Понимаете тут мне нужно подключить
- core/jquery
Он не работает так если просто вставить,
будет работать если я перед кодом добавлю например
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
А что делают теги php у вас в yaml?
тут просто так код вставил) на drupal.ru
https://www.drupal.org/developing/api/8/assets
Этим я и руководствовался когда писал.
Пробовал сейчас не объединять js через
{preprocess: false}
все равно выводит этот js на всех страницах.
Как всегда все решает невнимательность.
Подключал 2 раза эту библиотеку, второй раз в .module. Всем спасибо за помощь решено.
Напишу тут как подключить html, js и css к блоку в drupal 8, простое и понятное пособие. Хоть вопрос и простой, но внятного примера нету.
1. Создаем модуль с именем mymoduleblock
2. Создаем mymoduleblock.info
type: module
description: 'My module block page.'
package: Custom
core: 8.x
dependencies:
- block
Тут указываем зависимость от block (dependencies: - block)
3. Затем создаем каталог templates и в нем файл mymoduleblock-KEY.html.twig, где KEY это ключ
В этом файле вы можете вставлять html и js (но если использует jqure, js не будет работать, поэтому стоит подключать через библиотеку и js и css)
Также этот файл twig вы можете подключать переменные например var1
4. Создаем mymoduleblock.module
Тут мы можем подключить переменную, например var1
/**
* @file
* Currently (31/07/2016) , Drupal needs this blank file.
*/
function mymoduleblock_theme() {
return [
'mymoduleblock_KEY' => [
'variables' => ['var1' => NULL],
],
];
}
5. Создание библиотеки
Создаем файл mymoduleblock.libraries.yml
version: 1.x
css:
theme:
css/mymoduleblock.css: {}
js:
js/mymoduleblock: {}
dependencies:
- core/jquery
- core/drupal.ajax
- core/drupal
- core/drupalSettings
- core/jquery.once
Прописываем все что нужно подключить.
6. Последний шаг. Добавление блока и библиотеки.
Создаем каталог в нашем модуле mymoduleblock/src/Plugin/Block и тут файл BlockMyModule.php
/**
* @file
* Contains \Drupal\mymoduleblock\Plugin\Block\BlockMyModule.
*/
namespace Drupal\mymoduleblock\Plugin\Block;
use Drupal\Core\Block\BlockBase;
/**
* Provides a 'mymoduleblock' block.
*
* @block(
* id = "mymoduleblock",
* admin_label = @Translation("My module block"),
* )
*/
class BlockMyModule extends BlockBase {
/**
* {@inheritdoc}
*/
public function build() {
$items = array();
return array(
'#items' => $items,
'#theme' => 'mymoduleblock_KEY',
'#attached' => array(
'library' => array('mymoduleblock/mymoduleblock'),
),
);
}
}
где 'library' => array('имя модуля/имя библиотеки'),
Затем включаем этот блок и все.