ДляСебятина

- Длясебятина, или заметки на салфетках

Коротенькие заметки о всяческой полезной мелочевке: как, к примеру, удалить сразу все сноски в Microsoft™ Word, как запустить AuthorIT в линуксе (без винды) с применением Wine или PlayOnLinux, как организовывать ссылки в том же AuthorIT так, чтобы... В общем, это просто ни к чему не обязывающий авторский поток сознания, без какой-либо предварительной структуризации, классификации и систематизации.

В ходе выполнения поставленной задачи способы и методы ее решения немедленно фиксируются и публикуются «по горячим следам», чтобы в дальнейшем не потерять все эти, с позволения сказать, life hacks, поскольку периодически они бывают важны, нужны, востребованы, а порой даже жизненно необходимы. Все для себя, любимого, но, быть может, еще кому сгодятся. Редакция от 24.08.2020.

Кастомные переменные в Drupal 8

Кастомные (в пользовательском контексте) переменные в Drupal 8 могут применяться для хранения и представления исходных (вводных) данных проекта, в состав которых входят наименование проекта, наименование продукта проекта, даты инициации и завершения проекта, заказчик, руководитель, куратор, все заинтересованные стороны, все участники проекта и многое-многое другое, в том числе параметры ссылок на внешние системы управления проектами (вроде Jira или Redmine).

Переменные могут существенно изменяться от проекта проекту, а могут и несущественно. Но в любом случае имеет смысл где-то их определить, зафиксировать документально и сохранить, а по мере необходимости вытаскивать на свет Божий и многократно повторно использовать в проектных документах. Все то же относится и к токенам. Редакция от 26.03.2021.

Клонирование сущностей через экспорт-импорт

Клонирование сущностей от проекта к проекту разумнее всего выполнять экспортом (безотносительно ГИС) предыдущего проекта с «последующим импортом последующего» 😂 Т.е. вновь создаваемого. Если, конечно, последующий проект представляется более-менее типовым.

А сущности в проектах применяются как простые, так и составные, т.е. консолидирующие все прочие, простые. Простая сущность - это топик, не содержащий в своей структуре внедренных топиков. Своего рода неспецифицированное изделие. Сложные же сущности содержат в своей структуре внедренные топики и являются изделиями специфицированными. Как книжки, состоящие из отдельных страниц.

Клонировать сущности имеет смысл в два этапа: экспортировать ВООБЩЕ ВСЕ топики, а затем их импортировать; экспортировать топики, содержащие внедренные топики, отдельно, а затем также отдельно их импортировать как консолидирующие. Для лучшего осмысления: сначала клонируем все поголовье, а затем отдельно особо выдающихся баранов, которые назначены нами козлами, ведущими свои субпоголовья.

Оба этапа проводятся с применением экспортеров на основе Views и импортеров на базе Feeds. Редакция от 22.03.2021.

Экспорт всех топиков предыдущего проекта с помощью Views

Экспорт всех топиков предыдущего проекта с помощью Views:

- Экспорт топиков - Title - Path (Content)

Настроить критерий фильтра: Content: Title:

- Настроить критерий фильтра - Content - Title

Должен содержать (, иначе экспортироваться будут ВООБЩЕ ВСЕ ТОПИКИ. Это как минимум. Если необходимо экспортировать все топики конкретного исходного предыдущего проекта, то тогда в поле Значение следует подставлять префикс этого проекта, например (_PREFIX_.

Интересно было бы еще экспортировать и поля Body, заполненные ранее участниками предыдущего проекта. Для этого во Views придется добавить Content: Body. Будет экспортирована полная HTML-разметка, но импорт с помощью CSV или даже XML может не прокатить из-за разметки, в связи с необходимостью конвертирования угловых скобок во всяческие gt и т.п. Вообще разумно экспортировать (сохранять) поля Body в отдельные файлы образцов.

Вопрос пока остается открытым и требует дополнительной проработки.

Импорт топиков последующего проекта с помощью CSV

Импорт топиков последующего проекта с помощью CSV без поля Body предусматривает создание нод типа topic для нового (последующего) проекта. Для этого _PREFIX_ меняется на новое значение (с учетом требований системы классификации и кодирования проектов). Затем выполняется импорт. Настройки импортера:

- Topic CSV Import (title и path)

Mappings Topic CSV Import (title и path):

- Mappings Topic CSV Import (title и path)

В результате импорта создаются отдельные ноды (сущности) нового проекта, но без какой-либо связки между собой.

Экспорт «консолидирующих» топиков предыдущего проекта с помощью Views

Экспорт топиков - Title - Path - Entity Embed (Content). Расширенные - Настройки запроса - Уникальность!

- Экспорт топиков - Title - Path - Entity Embed (Content)

Уникальность добавляется для того, чтобы не было дублирования. Для разделения списка внедренных топиков применен |.

Импорт «консолидирующих» топиков последующего проекта с помощью CSV

Импорт «консолидирующих» топиков последующего проекта с помощью CSV, настройки импортера:

- Редактировать CSV-импорт топиков (Title, Path, Entity Embed)

Mappings CSV-импорт топиков (Title, Path, Entity Embed):

- Mappings CSV-импорт топиков (Title, Path, Entity Embed)

Tamper CSV-импорт топиков (Title, Path, Entity Embed):

- Tamper CSV-импорт топиков (Title, Path, Entity Embed)

В плагине Explode в качестве разделителя применен |.

В итоге все атомарные несвязанные топики консолидируются, связи входимости образуются автоматически и будут подсвечиваться.

Нетрадиционное применение модуля Entity Usage

Модуль Entity Usage интересен всем тем, кто однажды открыл его для себя и остался удовлетворен его потребительскими свойствами. Кто не знает - это такой модуль с пёсьей мордой, изображенной на рисунке ниже. Функционал модуля позволяет выявлять всевозможные связи между различными сущностями. Если совсем уж простым языком, то модуль Entity Usage отображает список материалов, в которых (многократно и повторно) используется картинка этой самой морды.

Представление (Views), упомянутое внизу страницы drupal.org/docs/8/modules/entity-usage/installation-and-basic-usage, позволяет вытащить число раз использования, т.е. число материалов (страниц и т.д.), содержащих связанную сущность. Но если подойти нетрадиционно (что нынче в тренде), то можно заполучить от модуля гораздо больше полезной информации. В частности, информацию о входимости некой сущности НЕ ПРОСТО В СОСТАВ других сущностей, а в КОНКРЕТНЫЕ УЗЛЫ ИЕРАРХИЧЕСКИХ СТРУКТУР этих сущностей. С прямым попаданием в них. Редакция от 20.03.2021.

Drupal Entity Usage

Бессовестно вольный перевод с комментариями, первоисточник drupal.org/project/entity_usage. Модуль Entity Usage был весьма ожидаем (автором), но впервые упомянут только в июле 2016 года, т.е. с запозданием примерно в 15 лет по отношению к «десктоповому варианту» соответствующей фунциональной возможности программы AuthorIT. Редакция от 19.03.2021.

Модуль Drupal 7 HTML import. Сокращенный перевод с комментариями

Любопытный модуль Drupal 7 HTML import. Если хорошо структурированный стилями заголовков документ ворда сохранить в формате HTML, а затем хорошенько почистить с помощью Dreamweaver, то можно получить ноды из заголовков.

Сокращенный перевод описания, комментарии после развертывания, настройки и проверки работоспособности. Редакция от 04.04.2021.

Сущности Drupal без полей

Цитата из русского перевода руководства пользователя Drupal:

«В пределах сущности, данные хранятся как отдельные поля, каждое из которых содержит один тип данных, такие как форматированный или обычный текст, изображения или другие файлы или даты. Типы полей могут быть определены через ядро Drupal или модули.

Поля могут быть добавлены администратором для подтипа сущности, так что все сущности этого подтипа имеют одинаковый набор доступных полей. Например, Продавец тип материала на сайте городской ярмарки может иметь поля для Имя продавца, логотипа, URL сайта и описания, в то время как Основная страница тип материала может иметь только поля для заголовка и текста. Когда вы создаете или редактируете сущности, вы определяете значения для полей в сущности».

Всегда ли сущностям Drupal необходимы поля? Возможно ли обойтись без полей, как обойтись без полей и что это даст? Редакция от 14.03.2021.

Внедрение страницы Confluence в сущность Drupal

Внедрение страницы Confluence в сущность Drupal более очевидно и понятно всем, не один же автор будет периодически возвращаться и читать всю эту ахинею 😜

Итак, на любой пользовательской странице Confluence имеется меню •••, что в переводе означает Другие действия. Если двинуться дальше (Дополнительные сведения), то можно запросто Просмотреть формат хранения и убедиться в том, что страничка не только хранится в чистеньком HTML-коде, но имеет еще и уникальный идентификатор pageId в адресной строке браузера. Вот этим pageId и следует оперировать, используя способы загрузки контента сущностей Drupal без применения полей, а именно:

  • при создании сущности Drupal ей присваивается синоним path со значением, равным pageId;
  • при загрузке (генерации) сущности в сущность автоматически внедряется и рендерится страница с адресом, содержащим «на хвосте» pageId, равный path.

Вот и вся любовь.

Способы загрузки контента сущностей Drupal без применения полей

Способы загрузки контента сущностей Drupal без применения полей могут быть реализованы с помощью шаблонов страниц. Для Drupal 7 основным шаблоном будет node.tpl.php, для Drupal 8 и 9 - node.html.twig. Данные шаблоны копируются из каталогов /modules/node и /core/modules/node соответственно в каталоги используемой темы оформления.

Затем оба эти файла переименовываются под тип материала. Тип материала лучше создать свой собственный, например topic. В этом случае шаблоны будут иметь наименования node--topic.tpl.php и node--topic.html.twig.

Далее немножко логики (вместо конкретного кода):

  • создается переменная, которой присваивается значение идентификатора текущей ноды - nid или url (зависит от версии Drupal);
  • из созданной переменной выгрызается «передняя» часть адреса, включая слеш. На выходе получается числовое значение, соответствующее идентификатору внедряемой страницы Confluence pageId;
  • выполняется проверка существования страницы с идентификатором pageId в Confluence. Это явная перестраховка, но «береженого Бог бережет (решила монахиня, надевая презерватив на свечку)»;
  • если таковая страница существует, то оператор include, имеющийся как в php, так и в twig, «всасывает» ее HTML-код из Confluence в ноду Drupal;
  • рендерится код в какой-нибудь обертке типа div.

Вот и весь расклад.

В чем польза от бес_ПОЛЕ_зных сущностей Drupal?

В чем польза от бес ПОЛЕ зных сущностей Drupal? Трудно сказать. Но первое, что приходит в голову - это отсутствие необходимости манипуляций с запросами к базе данных Drupal, если речь идет о динамике. При загрузке значения поля «на лету» получается лишнее обращение к БД, в данном же случае такое обращение исключается. Это хорошо.

Можно по аналогии избавиться и от полей связанных сущностей. Можно вообще прикрутить HTML-код страницы не только Confluence, а даже Git или любого другого источника. Прогер пишет там себе что-то в Git, а его писанина синхронно обновляется в Drupal, что может быть очень удобно при глубоком детальном и дотошном документировании какого-нибудь программного обеспечения.

Автор при создании контента применяет AuthorIT, подготавливая при этом минимум два HTML-файла: один под анонс (teaser), а другой уже непосредственно под Body. Перед кодом файла анонса добавляется нолик, как в сов. секретных приказах Сталина. В частности, данную статью можно посмотреть в исходниках (форматах хранения):

  • анонс - /sites/default/files/054836.htm;
  • полная версия - /sites/default/files/54836.htm,

добавив перед ними доменное имя.

Как-то так...

Клонирование матрицы путем многократного повторного использования контента

Клонирование матрицы путем многократного повторного использования контента (reusing) - вовсе не преступление против т.н. «человечности» (какой идиот выдумал это словечко?!), а напротив - отличный технологический прием, работающий во благо и во имя всего прогрессивного человечества. Клонирование применяется к онлайновым библиотекам взаимоувязанных документов.

Суть проблемы: путь в матрицу, подробно расписанный в предыдущей статье, позволяет создавать всего лишь один «экземпляр класса», - библиотеки взаимоувязанных документов. Но экземпляров библиотек может потребоваться великое множество. Разумеется, все ожидаемые издержки на их клонирование должны быть сведены к минимуму. Редакция от 12.03.2021.

Путь в матрицу

Библиотека взаимоувязанных документов, привязанная к отечественным стандартам разработки, проектирования и документирования, выполненная в многопользовательском глобально-сетевом варианте. В качестве движка применяется Drupal с минимально необходимым числом «контрибных» модулей и модулей ядра. Почти никакого программирования. Последовательность действий при подготовке и импорте контента в Drupal для организации нод, «портирование» ранее созданной и обкатанной библиотеки. Редакция от 12.03.2021.

Связывание задач Jira со страницами Confluence

Связывание задач Jira со страницами Atlassian Confluence не несет в себе ничего принципиально нового. Кроме того, что ранее в Jira импортировали 95 задач, а в Atlassian Confluence - ровно столько же разделов, подразделов, пунктов и подпунктов документа в виде отдельных страниц, каждая из которых взаимно-однозначно соответствует одной-единственной задаче.

В поле Description каждой задачи имеется ссылка, позволяющая мгновенно разыскать «еёйную» страницу, чтобы затем связать задачу и страницу, как показано на рисунке ниже. Редакция от 12.03.2021.

Страницы

Copyright © «Техническая документация» 2008-2021. Заимствуйте наши материалы с блеском! При воспроизведении материалов портала обязательна установка активной гиперссылки на источник — страницу с этой публикацией на tdocs.su.

Яндекс.Метрика