А разве после регистрации в базе не обновляются таблицы с кешем? Может я конечно что-то не то делаю, но чтобы я не выводил в шаблоне твига у меня абсолютно все кешируется, даже $user. Но вот что я случайно заметил. У меня был план запихнуть значение в блок вьюхи и отключить в ней кеш. Но и он рассыпался, потому что, если вывести в твиге вьюху с настройками без кеширования (абсолютно неважно какую, главное чтобы в ней был отключен кеш):
$variables['test'] = views_embed_view('test', 'block-1');
Можете привести пример как правильно его использовать?
Я сохраняю значение так $_SESSION['status'] = $status; А как его потом передать в twig? Оно всё равно не обновляется в кешируемой странице. В общем я полдня просидел и у меня ничего не получилось.
Создаю мультисайтинг модулями из коробки - Content Translation и Views. Куда ещё проще? Или можно как-то ещё реализовать мультисайтинг? Может есть более простые аналоги вьюса?
Попробую объяснить ещё раз. У меня два сайта: английский и русский. На русском создаю ноду. Её перевожу с помощью модуля Content Translation и всё работает.
Переводить поля и термины словарей нужно не в самом вьюсе, а с помощью модуля Configuration Translation
. Устанавливаете модуль, заходите в конфикурацию - перевод конфигурации и там переводите то что нужно. Ну а вьюс уже подхватит эти переводы.
Нет. У меня два сайта и два языка английский и русский. Всё создано. А вьюс я создаю только на английском сайте и мне его не нужно переводить на русский. Мне просто нужно вывести комментарии именно через вьюс, а он упорно подставляет русский титл. Он берёт русский титл из ноды созданной на первом русском сайте. И к этой ноде создан перевод, где титл переведён на английский. Когда комментарии вывожу не через вьюс (отключаю его), то титл показывается верно - на английском. Т.е. мультисайтинг без вьюса работает отлично, а вот с вьюсом титл всегда на русском...
Да я нажимал на эту вкладку и там уже используется English (original). Т.е. вьюху я создаю на английском сайте и когда я нажимаю на Добавить перевод, то меня просто перекидывает на эту же вьюху. Т.е. переводить больше нечего. В базе для этой ноды прописываются два титла: на русском и на английском (см. скриншот), но вьюс упорно берёт русский титл, не смотря на то что я выбрал английский язык.
Проблема была в том, что я не понял, что для того чтобы модуль сработал нужно заходить по конкретному адресу.
В данном случае для генерации материала нужно перейти по адресу http://site.ru/creator/node
Vaplas, спасибо за помощь!
Всё равно не получается! То вообще ничего не создаётся, то выходит ошибка:
RuntimeException: Failed to start the session because headers have already been sent by "T:\openserver\domains\drupal8.ru\sites\drupal8.ru\modules\node_auto\node_auto.module" at line 2. in Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->start() (line 140 of vendor\symfony\http-foundation\Session\Storage\NativeSessionStorage.php).
Модуль в итоге получился такой: node_auto
C темизацией модуля brick разобрался.
Для темизации отдельного набора кирпича (brick bundle), например с машинным именем columns нужно переименовать файл eck-entity.html.twig в папке \modules\eck\templates в файл eck-entity--brick--columns.html.twig и скопировать в папку со своей темой.
Например, для темизации дополнительного поля field_image в наборе кирпичей columns нужно создать файл field--brick--field_image--columns.html.twig.
Скопировал код в функцию темы function theme_preprocess_node(&$variables) и работает как надо. Не думаю что сама восьмёрка виновата, скорее всего чего-то не хватает в моём коде. В модуле он работать не хочет...
Я как раз писал модуль, опираясь на эту статью. И как результат выходит ошибка. Через kint(Node::load($nid)); сравнивал обе ноды (добавленную вручную и созданную программно): там всё идентично.
Все посмотрел? CKedtior - это отдельный мир, прикрутка его плагинов к друпалу гуглится. Накрайняк, хотя бы виджет, где за даются два изображения, из которых он сам формирует нужный html.
Чтобы уменьшались изображения, нужно пропатчить модуль /core/modules/editor
Патч взял отсюда: патч
Патчил этим способом: способ
Уже пропатченный модуль: Editor
А вот как сделать, чтобы эти уменьшенные изображения увеличивались по клику, пока не разобрался.
Забыл сразу написать, что эта ошибка связана с очисткой кеша, т.е. она появляется только после очистки кеша. Сейчас установил на локалке с нуля drupal 8.0.3, создал две вьюхи и всё было сначала хорошо.
Возникла потребность сделать разную сортировку для каждого типа комментариев. Чтобы модуль сработал только например, для комментариев форума "comment_forum" добавил такое условие:
$node = \Drupal::routeMatch()->getParameter('node');
if ($node->comment_forum[0]) {код сортировки}
Вроде работает, но может есть более правильный способ как это сделать?
Поэтому, либо реально подставлять значение программно (только посмотри, как правильно делать, а то что такое "default.png", у меня в каждой папке такой есть, какой ему брать?)
Отключить кеширование для конкретной переменной
А разве после регистрации в базе не обновляются таблицы с кешем? Может я конечно что-то не то делаю, но чтобы я не выводил в шаблоне твига у меня абсолютно все кешируется, даже $user. Но вот что я случайно заметил. У меня был план запихнуть значение в блок вьюхи и отключить в ней кеш. Но и он рассыпался, потому что, если вывести в твиге вьюху с настройками без кеширования (абсолютно неважно какую, главное чтобы в ней был отключен кеш):
$variables['test'] = views_embed_view('test', 'block-1');
Отключить кеширование для конкретной переменной
вывел в твиге время последнего доступа {{user.access.value}}, значение замерло и изменилось только после очистки кеша
Формат даты в представлениях Views Drupal 8
Как вариант можно воспользоваться фильтром twig - replace и переопределить поле дата во вьюхе:
{{ created|replace({'ago': "назад"}) }}
Отключить кеширование для конкретной переменной
Вот именно, что твиг кеширует шаблоны. Знаю как отключить это кеширование полностью, но вот как отключить для конкретной переменной...
Отключить кеширование для конкретной переменной
Отключить кеширование для конкретной переменной
Можете привести пример как правильно его использовать?
Я сохраняю значение так $_SESSION['status'] = $status; А как его потом передать в twig? Оно всё равно не обновляется в кешируемой странице. В общем я полдня просидел и у меня ничего не получилось.
Views и мультисайтинг
Создаю мультисайтинг модулями из коробки - Content Translation и Views. Куда ещё проще? Или можно как-то ещё реализовать мультисайтинг? Может есть более простые аналоги вьюса?
Попробую объяснить ещё раз. У меня два сайта: английский и русский. На русском создаю ноду. Её перевожу с помощью модуля Content Translation и всё работает.
Мультиязычный Drupal 8: перевод Представлений Views на языки и перевод терминов таксономии - рубрик и тегов
Переводить поля и термины словарей нужно не в самом вьюсе, а с помощью модуля Configuration Translation
. Устанавливаете модуль, заходите в конфикурацию - перевод конфигурации и там переводите то что нужно. Ну а вьюс уже подхватит эти переводы.
Views и мультисайтинг
Нет. У меня два сайта и два языка английский и русский. Всё создано. А вьюс я создаю только на английском сайте и мне его не нужно переводить на русский. Мне просто нужно вывести комментарии именно через вьюс, а он упорно подставляет русский титл. Он берёт русский титл из ноды созданной на первом русском сайте. И к этой ноде создан перевод, где титл переведён на английский. Когда комментарии вывожу не через вьюс (отключаю его), то титл показывается верно - на английском. Т.е. мультисайтинг без вьюса работает отлично, а вот с вьюсом титл всегда на русском...
Views и мультисайтинг
Да я нажимал на эту вкладку и там уже используется English (original). Т.е. вьюху я создаю на английском сайте и когда я нажимаю на Добавить перевод, то меня просто перекидывает на эту же вьюху. Т.е. переводить больше нечего. В базе для этой ноды прописываются два титла: на русском и на английском (см. скриншот), но вьюс упорно берёт русский титл, не смотря на то что я выбрал английский язык.
Программно создать ноду
Проблема была в том, что я не понял, что для того чтобы модуль сработал нужно заходить по конкретному адресу.
В данном случае для генерации материала нужно перейти по адресу http://site.ru/creator/node
Vaplas, спасибо за помощь!
Программно создать ноду
Программно создать ноду
Всё равно не получается! То вообще ничего не создаётся, то выходит ошибка:
RuntimeException: Failed to start the session because headers have already been sent by "T:\openserver\domains\drupal8.ru\sites\drupal8.ru\modules\node_auto\node_auto.module" at line 2. in Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->start() (line 140 of vendor\symfony\http-foundation\Session\Storage\NativeSessionStorage.php).
Модуль в итоге получился такой: node_auto
CkEditor не уменьшает изображения
C темизацией модуля brick разобрался.
Для темизации отдельного набора кирпича (brick bundle), например с машинным именем columns нужно переименовать файл eck-entity.html.twig в папке \modules\eck\templates в файл eck-entity--brick--columns.html.twig и скопировать в папку со своей темой.
Например, для темизации дополнительного поля field_image в наборе кирпичей columns нужно создать файл field--brick--field_image--columns.html.twig.
Программно создать ноду
Скопировал код в функцию темы function theme_preprocess_node(&$variables) и работает как надо. Не думаю что сама восьмёрка виновата, скорее всего чего-то не хватает в моём коде. В модуле он работать не хочет...
Программно создать ноду
Я как раз писал модуль, опираясь на эту статью. И как результат выходит ошибка. Через kint(Node::load($nid)); сравнивал обе ноды (добавленную вручную и созданную программно): там всё идентично.
CkEditor не уменьшает изображения
CkEditor не уменьшает изображения
CkEditor не уменьшает изображения
Чтобы уменьшались изображения, нужно пропатчить модуль /core/modules/editor
Патч взял отсюда: патч
Патчил этим способом: способ
Уже пропатченный модуль: Editor
А вот как сделать, чтобы эти уменьшенные изображения увеличивались по клику, пока не разобрался.
Ошибка при выводе меню через представления SQLSTATE[42S22]: Column not found: 1054 Unknown column 'taxonomy_term_field_data.tid1
Что касается хука, то я попробовал сам написать его по аналогии для семёрки, вот что получилось:
<?php
Ошибка при выводе меню через представления SQLSTATE[42S22]: Column not found: 1054 Unknown column 'taxonomy_term_field_data.tid1
Забыл сразу написать, что эта ошибка связана с очисткой кеша, т.е. она появляется только после очистки кеша. Сейчас установил на локалке с нуля drupal 8.0.3, создал две вьюхи и всё было сначала хорошо.
Только стоило очистить кеш и сайт упал:
Отключить обязательное поле "изображение" из формы комментариев для админа
Оба варианта работают. Воспользовался первым. Спасибо!!!
Сортировка комментариев по дополнительному полю типа Дата
Возникла потребность сделать разную сортировку для каждого типа комментариев. Чтобы модуль сработал только например, для комментариев форума "comment_forum" добавил такое условие:
$node = \Drupal::routeMatch()->getParameter('node');
if ($node->comment_forum[0]) {код сортировки}
Вроде работает, но может есть более правильный способ как это сделать?
Отключить обязательное поле "изображение" из формы комментариев для админа
Отключить обязательное поле "изображение" из формы комментариев для админа
$form['field_image']['#required'] = false; вообще не работает, не отменяет обязательность полей.