Добавить расширение файла helloword, созданного Ваней

Обновлено: 21.11.2024

Краткое практическое введение в основные концепции Bloomreach Experience Manager

Это краткое руководство дает краткий обзор основ Bloomreach Experience Manager и его уровня доставки (HST) с помощью примера "Hello World style", в котором показано, как шаблон Модель-Представление-Контроллер реализован для рендеринга. страницы на веб-сайте на базе Bloomreach Experience Manager.

Это руководство специально предназначено для разработчиков Java, которые хотят быстро начать работу с Bloomreach Experience Manager. Тем не менее, любой, у кого есть базовые знания Java и доступ к IDE, должен быть в состоянии следовать.

Как насчет приложения Essentials Setup и библиотеки функций?

Возможно, вы уже видели, что Bloomreach Experience Manager предоставляет приложение для настройки Essentials, включающее библиотеку функций, содержащую множество готовых функций, что позволяет быстро запустить проект. Этот учебник «обходит» Essentials и позволяет вам создать простую страницу Hello World с нуля, чтобы вы могли увидеть, как она работает внутри.

Чтобы узнать, как настроить свой проект с помощью Essentials и создать веб-сайт с помощью готовых функций, следуйте руководствам "Начало работы" и "Создание веб-сайта".

Очень простой привет, мир

Сначала вы создадите простую статическую страницу Hello World, которую будет обслуживать Bloomreach Experience Manager. Вы узнаете, как добавить шаблон Freemarker в проект и как настроить Bloomreach Experience Manager для его использования.

Шаг 1. Создайте новый проект

Начните с проверки того, что ваша среда разработки соответствует необходимым требованиям.

Затем создайте проект Bloomreach Experience Manager, используя архетип Maven, как описано в разделе Создание проекта.

После создания проекта откройте его в выбранной вами интегрированной среде разработки (см. наши страницы об Eclipse и Intellij).

Шаг 2. Создайте проект

Скомпилируйте и запустите проект с помощью следующих команд Maven:

Это создает файлы WAR и немедленно запускает проект с помощью Cargo. Если вы делаете это впервые, это может занять некоторое время, так как Maven загрузит все зависимости проекта с удаленного сервера репозитория.

Шаг 3. Добавьте шаблон Freemarker

В среде IDE перейдите к папке relay-data/webfiles/src/main/resources/site и создайте папку с именем freemarker, внутри нее папку с именем home и добавьте в нее файл с именем home.ftl. Вставьте следующий код в файл:

Поместив шаблон Freemarker в модуль веб-файлов, он будет автоматически перезагружаться каждый раз, когда вы его изменяете, что ускоряет разработку.

Шаг 4. Знакомство с консолью

Консоль обеспечивает прямой доступ к репозиторию контента. Все данные, включая контент и конфигурацию, хранятся в этом репозитории как узлы JCR. Консоль отображает эти узлы в виде древовидной структуры. Щелчок по узлу позволяет просматривать и изменять свойства этого узла. Узлы имеют тип узла, который определяет его свойства и дочерние узлы аналогично тому, как схема XML определяет элементы и атрибуты.

В этом руководстве вы будете работать с разделом конфигурации уровня доставки в узле hst:myproject/hst:configurations, который содержит конфигурацию вашего веб-сайта.

Шаг 5. Настройте шаблон

Давайте начнем с настройки Bloomreach Experience Manager для использования только что созданного вами шаблона. Перейдите к узлу /hst:myproject/hst:configurations/myproject, и вы увидите что-то похожее на это:

Узел содержит несколько дочерних узлов с конфигурацией, но для этого конкретного шага выберите узел hst:templates. Добавьте новый дочерний узел, либо нажав «Добавить» в верхнем меню, либо щелкнув узел правой кнопкой мыши и выбрав «Добавить узел». Назовите его домашней страницей. По умолчанию тип узла должен быть установлен на hst:template. Нажмите OK, чтобы создать. После этого нажмите кнопку «Добавить свойство» над свойствами. Откроется диалоговое окно:

Добавьте свойство с именем hst:renderpath . Установите значение для местоположения созданного вами файла Freemarker: webfile:/freemarker/home/home.ftl. Нажмите OK, чтобы закрыть диалоговое окно.

Шаг 6. Добавьте страницу (компонент)

Уровень доставки использует иерархический шаблон Модель-Представление-Контроллер для отображения веб-страниц. Каждая страница представляет собой иерархию компонентов MVC. Итак, вы создали представление, создав шаблон Freemarker и добавив его в конфигурацию.У вас еще нет контроллера или модели, но вы уже можете настроить страницу, состоящую из одного компонента MVC, только с представлением.

Выберите узел hst:pages и добавьте дочерний узел с именем home типа hst:component . Обратите внимание, что для страницы не существует отдельного типа узла, узел страницы — это просто компонент верхнего уровня в иерархии.

Добавьте свойство hst:template к домашнему узлу со значением homepage .

Ссылка на конфигурацию шаблона домашней страницы появится рядом со значением свойства.

Шаг 7. Настройте файл Sitemap

Последний шаг – сопоставление URL-адреса настроенной вами страницы. Уровень доставки использует карту сайта для настройки пространства URL-адресов веб-сайта и сопоставления каждого URL-адреса со страницей и (необязательно) элементом контента. Вы хотите, чтобы ваша страница отображалась как домашняя страница вашего сайта, а это значит, что вы должны добавить корневой элемент карты сайта.

Выберите узел hst:sitemap и добавьте дочерний узел с именем root типа hst:sitemapitem .

Добавьте свойство с именем hst:componentconfigurationid и задайте для него значение hst:pages/home (со ссылкой на только что созданную конфигурацию страницы).

Шаг 8. Запишите изменения

Нажмите кнопку "Записать изменения в репозиторий" в правом верхнем углу, чтобы сохранить сделанные вами изменения, активировав новый шаблон, страницу и конфигурацию карты сайта.

Более динамичный привет, мир

В предыдущем разделе вы создали статический шаблон. Однако большая часть управления контентом заключается в том, что вы можете управлять отображаемой информацией. Поэтому в этом разделе вы расширите пример, чтобы он динамически отображал содержимое, созданное и управляемое в Bloomreach Experience Manager.

Шаг 1. Создайте тип документа

Bloomreach Experience Manager поддерживает строгое разделение контента и презентации. Контент хранится в документах. Эти документы имеют четко определенную структуру, что упрощает работу редакторов. Разделение упрощает работу редакторов с фактическим содержанием. Знание HTML не требуется, и, самое главное, вы можете повторно использовать содержимое где угодно.

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

В CMS откройте приложение Content и выберите Типы документов в раскрывающемся списке в левом верхнем углу. Выберите пространство имен myproject и щелкните параметр «Новый тип документа» в раскрывающемся списке.

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

Далее выберите макет типа документа. Это используется для определения макета шаблона редактирования в CMS и не имеет отношения к тому, как контент отображается на сайте. Выберите параметр макет из двух столбцов.

Редактор типа документа позволяет добавлять поля к типу. Добавьте поле String (Primitive) для нашего заголовка и установите для Caption значение Title, а для Path — значение title. Затем добавьте редактор форматированного текста (составное поле) к типу документа. Установите заголовок на Content и путь к content. После добавления полей нажмите «Готово», а затем выберите «Тип действий», «Зафиксировать». Теперь тип документа готов для использования в CMS.

Шаг 2. Создайте документ

Выберите «Документы» в раскрывающемся списке в верхнем левом углу и добавьте новый документ в папку «Мой проект».

Назовите документ «Hello World». Также обратите внимание на поле имени URL. Он использует это имя для создания удобной для URL-адреса версии документа, которая используется в качестве имени файла. После того, как вы нажмете OK, вам будет представлен интерфейс редактора документов, содержащий поля, которые мы настроили для этого типа документа.

Введите текст в поля документа и нажмите "Готово" . Затем нажмите «Опубликовать» в меню «Публикация», чтобы документ стал доступен на сайте.

Шаг 3. Создайте модель

В простом примере Hello World вы создали представление в виде статического шаблона. Теперь, когда у вас есть содержимое для рендеринга, пришло время создать модель и контроллер, а также настроить полный компонент MVC.

Начнем с модели. На уровне доставки модели реализованы в виде так называемых компонентов содержимого: простых объектов Java, которые обертывают фактическое содержимое, хранящееся в узлах JCR в репозитории. Каждый документ должен иметь соответствующий класс компонента содержимого, расширяющий org.hippoecm.hst.content.beans.standard.HippoBean .

Хорошей новостью является то, что для большинства типов документов компоненты содержимого могут генерироваться динамически. Это относится к вашему простому типу документа, так что вам не нужно ничего делать!

Шаг 4. Создайте контроллер

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

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

Приведенный выше пример является очень типичной реализацией. Компонент содержимого извлекается из контекста запроса на основе URL-адреса (вы настраиваете URL-адрес домашней страницы для сопоставления с документом, который вы создали на одном из следующих нескольких шагов). Компонент содержимого затем сохраняется в атрибуте запроса, чтобы он был доступен механизму шаблонов при отображении представления.

Шаг 5. Сделайте представление динамическим

Теперь у вас есть модель и контроллер, который извлекает ее и сохраняет в атрибуте запроса. Теперь вы можете изменить свой шаблон Freemarker, чтобы представление динамически отображало содержимое, обернутое моделью.

Снова откройте шаблон home.ftl и измените его, чтобы он выглядел следующим образом:

Помимо обычного синтаксиса и выражений Freemarker, вы можете использовать специальные теги Bloomreach Experience Manager из библиотеки тегов HST. Примером в приведенном выше шаблоне является тег hst.html>. Этот тег будет обрабатывать данные, содержащиеся в поле Rich Text, гарантируя, что все внутренние ссылки проверены и переписаны на правильный URL-адрес в контексте текущей страницы.

Теперь вы сделали все изменения кода, поэтому остановите, перестройте и перезапустите проект:

Шаг 6. Настройте компонент MVC

После завершения сборки вернитесь в консоль, чтобы добавить только что созданный компонент Java.

Теперь настройте страницу для использования этого компонента.

Выберите домашний узел в hst:pages . Добавьте к нему свойство с именем hst:referencecomponent и установите значение hst:components/simplecomponent .

Не забудьте записать изменения.

Шаг 7. Сопоставьте URL с контентом

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

В последний раз вернитесь к консоли и выберите узел hst:sitemap. Выберите корневой узел. Добавьте свойство с именем hst:relativecontentpath и установите значение hello-world. Это сообщит уровню доставки, чтобы найти контент по этому пути относительно корневой папки сайта ( myproject ). Здесь вы используете «имя URL», отображаемое при именовании вашего документа при его создании. Если вы создали документ во вложенной папке, введите путь, например mysubfolder/hello-world .

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

Запишите изменения в репозиторий и снова посетите сайт. Теперь вы действительно видите отображаемый контент!

Целью этого руководства является создание очень простого расширения, добавляющего новую директиву. Эта директива выведет абзац, содержащий «hello world».

В этом руководстве представлена ​​только основная информация. Для получения дополнительной информации обратитесь к другим руководствам, в которых содержится более подробная информация.

Для работы с этим расширением вам потребуются базовые знания о docutils и Python.

Обзор¶

Мы хотим, чтобы расширение добавило в Sphinx следующее:

Директива helloworld, которая просто выводит текст «hello world».

Предпосылки¶

Мы не будем распространять этот подключаемый модуль через PyPI, а вместо этого включим его как часть существующего проекта.Это означает, что вам нужно будет использовать существующий проект или создать новый с помощью sphinx-quickstart.

Мы предполагаем, что вы используете отдельные папки исходного кода ( source ) и сборки ( build ). Ваш файл расширения может находиться в любой папке вашего проекта. В нашем случае сделаем следующее:

Создать папку _ext в исходном коде

Создайте новый файл Python в папке _ext с именем helloworld.py

Вот пример структуры папок, которую вы можете получить:

Написание расширения¶

Откройте helloworld.py и вставьте в него следующий код:

В этом примере происходят некоторые важные вещи, и вы увидите их для всех директив.

Класс директив

Наша новая директива объявлена ​​в классе HelloWorld.

Этот класс расширяет класс директив docutils. Все расширения, создающие директивы, должны расширять этот класс.

Этот класс содержит метод запуска. Этот метод является обязательным и является частью каждой директивы. Он содержит основную логику директивы и возвращает список узлов docutils для обработки Sphinx. Эти узлы — способ docutils для представления содержимого документа. Доступно множество типов узлов: текст, абзац, ссылка, таблица и т. д.

Класс nodes.paragraph создает новый узел абзаца. Узел абзаца обычно содержит некоторый текст, который мы можем установить во время создания экземпляра с помощью параметра text.

Функция настройки

Эта функция является обязательной. Мы используем его для подключения нашей новой директивы к Sphinx.

Самое простое, что вы можете сделать, это вызвать метод add_directive(), что мы и сделали. Для этого конкретного вызова первым аргументом является имя самой директивы, используемой в файле reST. В этом случае мы будем использовать helloworld. Например:

Мы также возвращаем метаданные расширения, которые указывают версию нашего расширения, а также тот факт, что расширение безопасно использовать как для параллельного чтения, так и для записи.

Использование расширения¶

Добавьте каталог _ext к пути Python, используя sys.path.append . Это должно быть размещено в верхней части файла.

Обновите или создайте список расширений и добавьте имя файла расширения в список

Мы не распространяем это расширение в виде пакета Python, нам нужно изменить путь Python, чтобы Sphinx мог найти наше расширение. Вот почему нам нужен вызов sys.path.append .

Теперь вы можете использовать расширение в файле. Например:

В приведенном выше примере будет создано:

Дополнительная литература¶

Это основной принцип расширения, создающего новую директиву.

В этом руководстве мы создадим расширение Hello World для LibreOffice Calc, используя язык LibreOffice Basic. Это простое расширение для иллюстрации некоторых основных элементов расширения в LibreOffice. Расширение добавит кнопку (рядом с кнопкой «Экспортировать как PDF») на стандартную панель инструментов, и при нажатии на нее появится диалоговое окно «Hello, World!». Исходный код этого руководства находится на github.

Содержание

Шаг 1. Создание папки для нашего расширения

1) Выберите место и создайте папку с именем helloworld.

Шаг 2. Создание библиотеки для нашего макроса

1) Откройте LibreOffice Calc. В строке меню выберите «Инструменты» > «Макросы» > «Упорядочить макросы» > «LibreOffice Basic».

2) Нажмите кнопку Организатор.

3) Выберите вкладку "Библиотеки" и нажмите кнопку "Создать".

4) Назовите его HelloWorldLibrary и нажмите OK. Мы можем увидеть нашу созданную библиотеку в списке библиотек.


5) Нажмите кнопку "Закрыть", чтобы выйти из диалогового окна LibreOffice Basic Macro Organizer.

Шаг 3. Создание макроса

1) Выберите «Мои макросы» > «HelloWorldLibrary» > «Module1» и нажмите кнопку «Изменить».

2) Скопируйте макрос ниже и вставьте в LibreOffice Basic IDE, затем сохраните (Ctrl+S).

Шаг 4. Экспорт нашей библиотеки

1) В строке меню интегрированной среды разработки LibreOffice Basic выберите «Инструменты» > «Упорядочить макросы» > «LibreOffice Basic».

2) Нажмите кнопку Организатор.

3) Перейдите на вкладку "Библиотеки" и выберите HelloWorldLibrary из списка библиотек, затем нажмите кнопку "Экспорт".

4) Выберите «Экспортировать как библиотеку BASIC» и нажмите «ОК».

5) Сохраните библиотеку в нашей папке helloworld, затем нажмите «Закрыть», чтобы выйти из органайзера макросов LibreOffice Basic и макросов LibreOffice Basic. Как мы видим ниже, экспортированная нами библиотека содержит 3 файла.

Шаг 5. Добавляем описание к нашему расширению

1) Перейдите в папку helloworld, затем создайте подпапку с именем pkg-description.

2) Внутри папки pkg-description создайте файл с именем pkg-description.en.

3) Вставьте содержимое ниже в файл pkg-description.en, нажмите «Сохранить» (Ctrl+S) и закройте файл.

Шаг 6. Добавление лицензии

1) Внутри папки helloworld создайте подпапку с именем Registration.

2) Внутри папки Registration создайте файл с именем license.txt и вставьте в него содержимое по этой ссылке. Затем сохраните (Ctrl+S) и закройте файл.

Шаг 7. Добавление файла манифеста

1) Внутри папки helloworld создайте подпапку с именем META-INF.

2) Внутри папки META-INF создайте файл с именем manifest.xml и вставьте в него содержимое ниже. Затем сохраните (Ctrl+S) и закройте файл.

Шаг 8. Добавление изображений

1) Внутри папки helloworld создайте подпапку с именем icons.

2) Перейдите по этой ссылке и загрузите оттуда 2 изображения, сохраните их в папку с иконками.

Шаг 9. Добавление файла описания

1) Внутри папки helloworld создайте файл с именем description.xml.

2) Вставьте содержимое ниже в файл description.xml. Затем сохраните (Ctrl+S) и закройте файл.

Шаг 10. Добавление кнопки на панель инструментов LibreOffice Calc

1) Внутри папки helloworld создайте файл с именем Addons.xcu.

2) Скопируйте этот код и вставьте в файл Addons.xcu. Затем сохраните (Ctrl+S) и закройте файл.

Шаг 11. Это наша файловая структура на данный момент

Шаг 12. Упаковка расширения

1) В папке helloworld выберите все файлы (Ctrl+A).

2) Щелкните правой кнопкой мыши и сожмите в файл helloworld.zip.

3) Переименуйте helloworld.zip в helloworld.oxt. Теперь наше расширение готово, и на следующем этапе мы собираемся установить его в LibreOffice Calc.

Шаг 13. Установка нашего расширения в LibreOffice Calc

1) Откройте LibreOffice Calc и выберите Инструменты > Диспетчер расширений.

2) Нажмите кнопку "Добавить" и выберите расширение helloworld.oxt.

3) Примите Лицензионное соглашение на программное обеспечение расширения, чтобы установить расширение.

4) Нажмите кнопку "Закрыть" и перезапустите LibreOffice Calc.

Заключение

В этом руководстве мы создали расширение Hello World для LibreOffice Calc. Полный исходный код можно найти на github.

Разработан компанией Netscape в 1995 году как расширение HTML для Netscape Navigator 2.0.

JavaScript – это кроссплатформенный объектно-ориентированный язык сценариев, используемый для создания интерактивных веб-страниц (например, для создания сложной анимации, интерактивных кнопок, всплывающих меню и т. д.). Существуют также более продвинутые серверные версии JavaScript, такие как Node.Js, которые позволяют добавлять на веб-сайт больше функциональных возможностей, чем просто загрузка файлов (например, совместная работа нескольких компьютеров в реальном времени). Внутри основной среды (например, веб-браузера) JavaScript может быть подключен к объектам своей среды, чтобы обеспечить программный контроль над ними.

JavaScript и Java в чем-то похожи, но в чем-то существенно различаются.

JavaScript и спецификация ECMAScript

JavaScript стандартизируется в Ecma International — европейской ассоциации стандартизации информационных и коммуникационных систем (ранее ECMA была аббревиатурой Европейской ассоциации производителей компьютеров) для предоставления стандартизированного международного языка программирования на основе JavaScript.

Начало работы с JavaScript

Чтобы открыть веб-консоль (Ctrl+Shift+I в Windows и Linux или Cmd-Option-K на Mac), выберите «Веб-консоль» в меню «Разработчик», которое находится в меню «Инструменты» в Firefox. .

Урок 1. Основы JavaScript — непонятый язык эпохи

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

Чтобы начать писать JavaScript, откройте Блокнот и напишите свой первый код JavaScript "Hello world":

приветствовать меня('Мир'); /* Конец вашего кода */ >)();

Не забывайте всегда включать (function())(); до конца вашего кода. Вы узнаете, что они означают, но пока их можно рассматривать как выполнение следующих действий —

Значительно повысить производительность

Предотвратите глупую семантику в JavaScript, которая сбивает с толку новичков

Предотвратите взаимодействие фрагментов кода, выполняемых в консоли, друг с другом (например, когда что-то, созданное в одной консоли, используется для другой консоли).

Понимание операторов, именования переменных, пробелов и другого базового синтаксиса JavaScript.

Простое объявление переменной

JavaScript чувствителен к регистру и использует набор символов Unicode

var First не то же самое, что var first.

Пробелы не имеют значения вне кавычек

В JavaScript существует три типа объявлений переменных.

Вы также можете просто присвоить значение переменной. Например, x = 42. Эта форма создает необъявленную глобальную переменную.

Значения. У каждого значения есть тип, определяющий его роль. Ниже перечислены семь основных типов.

Вывод: false, true // логическое значение 18, 3.14, 0b10011, 0xF6, NaN // число "цветок", "John" // строка не определена, null , Infinity // специальный

EPL (чтение, оценка, печать, цикл): принимает код, который вы ему даете, и возвращает результат. Доступ к JavaScript REPL можно получить в инструментах разработчика браузера. (например, вкладка консоли в инструментах разработчика FireFox/Chrome). Вы можете получить к нему доступ, щелкнув правой кнопкой мыши веб-браузер (на веб-странице) и нажав «Проверить». Это принесет консоль, отладчик вместе с другими инструментами

> 3 // минарный сдвиг a = b // присваивание a == b // равно a != b // неравно a === b // строго равно a !== b // строго неравно ab // меньше и больше, чем a = b // меньше или равно, больше или eq a += b // a = a + b (работает с - * %. ) a && b // логическое и a || b // логическое или & AND 5 & 1 (0101 & 0001) 1 (1) | ИЛИ 5 | 1 (0101 | 0001) 5 (101) ~ НЕ ~ 5 (~0101) 10 (1010) ^ XOR 5 ^ 1 (0101 ^ 0001) 4 (100) > сдвиг вправо 5 >> 1 (0101 >> 1) 2 (10) >>> заполнение нулями правый сдвиг 5 >>> 1 (0101 >>> 1) 2 (10) ">

Вкладки улучшают читаемость, но не имеют особого значения

Комментарии: используются для оставления примечаний в коде, но не являются частью инструкций для выполнения компьютером.

Неопределенное значение ведет себя как ложное при использовании в логическом контексте. Неопределенное значение преобразуется в NaN при использовании в числовом контексте. нулевое значение ведет себя как 0 в числовом контексте и как ложное в логическом контексте.

Веб-платформа предоставляет несколько способов получения уведомлений о событиях DOM.

Два распространенных подхода

1 .addEventListener() и 2. Конкретные обработчики событий . HTML-элемент.Метод click() имитирует щелчок мышью по элементу

Регистрация обработчиков одного события

Обработчики одного события — это свойства определенных элементов DOM, позволяющие управлять реакцией элемента на события. Элементы могут быть интерактивными (ссылки, кнопки, изображения, формы и т. д.) или неинтерактивными (например, базовый элемент). События – это такие действия, как:

Обработчик события обычно называется именем события, на которое он реагирует, например onclick, onkeypress, onfocus и т. д.

Вы можете указать обработчик события on для определенного события (например, щелчка) для данного объекта различными способами:

, или установив соответствующее свойство из JavaScript: document.querySelector("button").onclick = function(event) < … >.">

Демонстрация особенностей HTML-атрибутов event для этих трех слов.

Читайте также: