Содержание
Простая CMS с Thesis — ElixirCasts
Elixir 1.7
Phoenix 1.3
Thesis 0.3.0
Посмотреть исходный код на GitHub
Thesis — это легкая, но мощная CMS, созданная Inixir для Elixir.
Несмотря на то, что Thesis не является полнофункциональной CMS, она делает многое и ее невероятно легко использовать там, где она вам нужна. В этом выпуске мы увидим, как просто добавить Thesis в приложение Phoenix. Теперь давайте кратко рассмотрим приложение, которое мы будем использовать.
Наше приложение в настоящее время имеет только одну страницу контента. И это проблема, потому что мы хотим, чтобы это был блог. Мы будем использовать Thesis, чтобы дать нам возможность легко добавлять дополнительные сообщения в блог.
Сначала пойдем в Хекс и возьмем Тезис. Затем мы откроем наш Mixfile и добавим его в список зависимостей.
микс.exs
...
дефп депс делает
[
...
{:тезис, "~> 0.3.0"},
...
]
конец
...
Затем мы загрузим наш новый пакет. После загрузки Thesis нам нужно запустить скрипт установки. Это добавляет Thesis в наше приложение, а также создает некоторые миграции базы данных. Итак, давайте продолжим и перенесем нашу базу данных.
$ микс deps.get ... $ смешать тезис.установить Сгенерированное приложение для диссертации * создание lib/teacher/thesis_auth.ex * создание priv/repo/migrations/20180830010133_create_thesis_tables.exs * создание priv/repo/migrations/20180830010134_add_meta_to_thesis_page_contents.exs * создание priv/repo/migrations/20180830010135_add_indexes_to_tables.exs * создание priv/repo/migrations/20180830010136_add_template_and_redirect_url_to_thesis_pages.exs * создание priv/repo/migrations/20180830010137_change_content_default_for_page_content.exs * создание priv/repo/migrations/20180830010138_create_thesis_files_table.exs * создание priv/repo/migrations/20180830010139_create_thesis_backups_table.exs * создание priv/repo/migrations/20180830010140_change_and_convert_page_data_type_in_backups_table. exs * обновление config/config.exs * обновление web.ex * done Теперь запустите mix ecto.migrate, чтобы убедиться, что ваша база данных обновлена. $ mix ecto.migrate
После установки Thesis нам нужно обновить наш макет, чтобы включить thesis_editor
. Мы откроем наш app.html.eex
и сразу после тега body мы добавим thesis_editor
, передав наше соединение.
Путь к шаблону: lib/teacher_web/templates/layout/app.html.eex
... <тело> <%= thesis_editor(@conn) %> ...
С этим мы можем запустить наш сервер.
$ микс phx.сервер [info] Запуск TeacherWeb.Endpoint с Cowboy с использованием http://0.0.0.0:4000
И если мы вернемся в браузер, мы увидим, что виджет загрузился в правом нижнем углу экрана. Это предоставляется Thesis для редактирования страницы. Щелкнем по нему — и увидим, что можем редактировать настройки страницы — здесь мы можем редактировать различные свойства страницы, такие как заголовок и описание.
Импортировать, экспортировать или восстанавливать контент — здесь вы можете экспортировать и импортировать контент, что полезно, если у вас разные среды, например, перенос чего-то из промежуточной стадии в производственную. В Thesis также хранятся разные версии страницы, к которым вы можете вернуться, опубликовать изменения и отменить изменения.
Но мы не можем редактировать текст на нашей странице. Это потому, что для того, чтобы сделать часть контента редактируемой, нам нужно обернуть ее в функцию content
. Итак, давайте сделаем это.
Мы откроем нашу страницу index.html.eex
и давайте обернем наш заголовок функцией content
, присвоив ей идентификатор, и укажем «html» в качестве типа контента.
Затем проделаем то же самое для нашей сводки, обернув ее в функцию content
с идентификатором и снова указав «html».
Путь к шаблону: lib/teacher_web/templates/page/index.html. eex
<%= content(@conn, "Заголовок домашней страницы", :html) do %>Рекордный блог
<% конец%> <дел> <%= content(@conn, "Обзор главной страницы", :html) do %>Добро пожаловать в блог Record, где мы говорим о прекрасной музыке.
<% конец%> дел>
Затем, если мы вернемся в браузер и отредактируем страницу, мы увидим, что две области содержимого теперь можно редактировать. И они используют контент с нашей страницы по умолчанию. Давайте продолжим и отредактируем их.
И у нас есть простой редактор HTML. Давайте внесем некоторые изменения в нашу страницу, и как только мы получим наш текст там, где мы хотим, мы можем продолжить и «Опубликовать изменения» — наши изменения теперь сохранены.
Теперь, когда мы знаем, как редактировать содержимое страницы, давайте посмотрим, как мы можем добавить страницу. Давайте откроем наш config.exs
, и я вставлю нашу конфигурацию, чтобы разрешить динамическое создание страниц с помощью Thesis.
Для использования наших динамических страниц требуется шаблон. Вы можете включить список различных шаблонов на выбор здесь. Давайте включим шаблон с именем «blog.html», который нам нужно создать.
конфиг/config.exs
...
конфиг:тезис,:динамические_страницы,
представление: TeacherWeb.PageView,
шаблоны: ["blog.html"],
not_found_view: TeacherWeb.ErrorView,
not_found_template: "404.html"
...
Затем мы продолжим и создадим наш шаблон «блог» в нашем каталоге «страницы». Я продолжу и вставлю структуру шаблона, который мы будем использовать. Это простой шаблон, который мы можем использовать для наших сообщений в блоге. Он имеет разделы для заголовка и тела.
Путь к шаблону: lib/teacher_web/templates/page/blog.html.eex
<%= content(@conn, "Заголовок блога", :html) do %><дел> <%= content(@conn, "Запись в блоге", :html) do %>Здесь идет название блога
<% конец%>Здесь размещается сообщение в блоге
<% конец%> дел>
Теперь, когда у нас есть наш шаблон, нам нужно обновить наш маршрутизатор, чтобы добавить маршрут для наших динамически создаваемых страниц. Мы откроем наш маршрутизатор и включим новый подстановочный маршрут. Это должен быть последний маршрут, иначе он всегда будет совпадать. И он будет обрабатываться нашим PageController
с действием, которое мы назовем «динамическим».
lib/teacher_web/router.ex
...
получить "/", PageController, :index
получить "/*путь", PageController, :динамический
...
Теперь нам нужно открыть PageController
и добавьте наше динамическое действие
. Затем внутри него мы добавим функцию render_dynamic
, предоставленную Thesis, передав наше соединение. Это то, что Thesis использует для рендеринга нашей страницы из базы данных.
lib/teacher_web/controllers/page_controller.ex
...
def dynamic(conn, _params) сделать
render_dynamic (подключение)
конец
...
Теперь нам нужно перезапустить наш сервер, так как мы внесли изменения в наш config.exs
. И теперь, когда мы возвращаемся в браузер и наводим курсор на виджет Thesis, мы видим значок для добавления новой страницы.
Давайте добавим нашу первую страницу с диссертацией. Мы дадим ему наш путь. Затем идут поля для заголовка страницы и описания. Затем мы можем выбрать шаблон для нашей страницы. Поскольку мы добавили только один шаблон, мы видим только наш шаблон «Блог». Если бы мы указали какие-то другие шаблоны в конфиге, то увидели бы их здесь.
Нажимаем «применить» — и видим, что наша страница создана по указанному нами пути. Вернемся на нашу домашнюю страницу. И обновите страницу, чтобы дать ссылку на наш новый пост. Отлично, теперь мы можем получить доступ к нашему новому сообщению в блоге, созданному с помощью Thesis.
Теперь одна вещь, которую мы действительно могли бы использовать в нашем блоге, это изображение. К счастью, Thesis позволяет загружать изображения. По умолчанию Thesis хранит файлы в базе данных. Одно предостережение заключается в том, что если вы храните много изображений, ваша база данных будет увеличиваться в размерах. В качестве альтернативы Thesis позволит вам легко использовать собственный загрузчик. Ваш загрузчик просто должен иметь возможность обрабатывать структуру %Plug.Upload{}
, которую вы затем укажете здесь для загрузчика
. Мы остановимся на Thesis.RepoUploader
для этого приложения.
Затем вернемся к нашему шаблону блога и добавим еще одну функцию content
. Дайте ему имя «Изображение блога», а затем тип контента «изображение», чтобы Thesis знал, что это изображение. Давайте также дадим ему изображение-заполнитель для использования по умолчанию.
Путь к шаблону: lib/teacher_web/templates/page/blog.html.eex
<%= content(@conn, "Изображение блога", :image, alt: "Изображение блога", сделать: "https://www.placehold.it/300x150") %> ...
Затем давайте сохраним нашу страницу и вернемся в браузер, и появится наше новое изображение. Давайте отредактируем нашу страницу и загрузим новое изображение для использования. Затем давайте обновим содержимое заголовка нашего блога, а затем его содержание.
Все выглядит хорошо, так что давайте опубликуем наши изменения. Отлично, наша страница обновлена, и наше изображение отображается. Теперь наш сайт работает хорошо, но есть еще одна вещь. Мы не хотим, чтобы каждый в Интернете мог редактировать наш сайт.
Вернемся к нашему коду. И когда мы побежали $ mix thesis.install
Thesis создал модуль с именем thesis_auth.ex
. Давайте откроем его. Внутри него есть единственная функция с именем page_is_editable?
. В настоящее время возвращается true, что позволяет редактировать наш сайт.
Одна из приятных особенностей Thesis заключается в том, что мы можем использовать любую стратегию аутентификации, какую захотим, чтобы определить, кто может редактировать нашу страницу. Все, что нам нужно сделать, чтобы интегрировать его с Thesis, — это вернуть логическое значение для page_is_editable?
, чтобы указать, может ли пользователь редактировать страницу или нет.
Чтобы лучше понять, как это будет работать, давайте взглянем на модуль auth. ex
в нашем каталоге помощников. И мы видим два signed_in?
функций. Они просто проверяют, установлено ли значение «auth» в наших параметрах. Если это так, мы возвращаем «true». В противном случае мы возвращаем «false». Хотя вы бы не стали делать это в реальном приложении, я надеюсь, что это дает лучшее представление о том, насколько легко вы можете включить существующую логику аутентификации в Thesis.
Вернемся к thesis_auth.ex
и обновить page_is_editable?
для вызова Auth.signed_in?
. Теперь, чтобы страницу можно было редактировать, в наших параметрах должно быть установлено значение «auth».
библиотека/учитель/thesis_auth.ex
...
def page_is_editable?(conn) сделать
TeacherWeb.Helpers.Auth.signed_in?(conn)
конец
...
Затем, если мы вернемся в браузер, мы не сможем редактировать нашу страницу. Итак, давайте имитируем вход в систему, добавив «auth=true» в нашу строку запроса. И отлично — теперь наша страница доступна для редактирования.
CMS статического сайта | Pulse
Подберите CMS для своего веб-дизайна. Порадуйте своих клиентов и снова наслаждайтесь созданием сайтов. Формы, электронная торговля, безопасные страницы и многое другое в стандартной комплектации.
Начните с бесплатной версии
Нам доверяют более 4000 дизайнеров для достижения отличных результатов
Pulse идеально подходит как для меня, так и для моего бизнеса в области веб-разработки! Люблю рубашку, ребята!
Tim Plumb
Дизайнер от 🇬🇧
Я искал не-DB CMS для написания руководств по обслуживанию в Markdown. Наконец-то у нас есть победитель!
Paul Boag
UX Designer от 🇬🇧
Думаю для клиентов на простых сайтах это идеальная CMS. Легко шаблон. Простой в использовании. WYSIWYG — это здорово.
Steve White
UI and UX Designer from 🇺🇸
Pulse — классная CMS, особенно для дизайнеров, которые боятся программировать. Вы можете разделить весь сайт на блоки и обновить его.
Джей Каушал
Фрилансер из 🇮🇳
«Pulse — это надежная CMS, которая предлагает больше отдачи от денег, которые вы за нее платите».
«Pulse — это чрезвычайно простая CMS. Платформа с плоскими файлами невероятно легкая во многих отношениях. Серверная часть проста и проста в использовании, а темы несложные».
«Так хорошо, что я много раз спасал себя в клиентских проектах.
5 звезд 🌟🌟🌟🌟🌟»
Все необходимые функции в одном пакете
Простой редактор контента для вас и ваших клиентов
Пользователи могут легко добавлять текст, изображения и многое другое с помощью WYSIWYG-редактора и медиагалереи. Для профессионалов также есть HTML и Markdown.
Попробуйте добавить демо-образ
Дизайн, как всегда
Шаблоны ручного кода в HTML? Скачать шаблоны Bootstrap с ThemeForest? Используете RapidWeaver или Blocs для Mac? Хотите использовать конструктор? Благодаря простому механизму шаблонов Pulse мы обеспечим вам возможность продолжить работу с собственным потоком проектирования.
Попробуйте демо
Набор функций и простота расширения с помощью вставок кода
Управление мультимедиа, блоги, управление пользователями, многоязычные сайты, аналитика, быстрые страницы, функции SEO, безопасные страницы, области загрузки клиентов, автоматическое резервное копирование. . И с удалением кода -ins, нет ничего, что вы не можете сделать.
Посмотрите, что вы можете сделать в демоверсии
Размещение в любом месте на сервере, подходящем для вашего проекта
Неограниченное количество установок и проектов для вас и ваших клиентов, хранящихся на ваших или их серверах. Данные принадлежат вам, и в соответствии с требованиями GDPR ЕС вы можете установить их в нужном для вас месте.
Начать сборку и обновление для загрузки позже
Множество интеграций готовы к работе
Добавление форм MailChimp, страниц Stripe Checkout, видео YouTube, Google Maps, синхронизация с IA Writer и GitHub. не нужно беспокоиться о пользовательских плагинах.
Добавить демо-версию Кнопка «Купить сейчас»
Вы устали от постоянных просьб от вашей команды или клиента исправить сайт?
После того, как пользователи перешли на использование Pulse для своих проектов, они обнаружили:
86 % экономии времени при настройке клиентских сайтов.
«Pulse — это самая быстрая CMS, которую я когда-либо внедрял… такая скорость просто ЭПИЧЕСКАЯ!»
Daniel Halseth
Инженер по ИТ-консалтингу и развитию бизнеса из 🇺🇸 | Подробнее об истории Даниэля
93% сообщают о меньшем количестве обучения после передачи.
«Pulse — это так здорово, потому что мне не нужно обучать своих клиентов или предлагать поддержку после запуска проекта».
Johan Strater
Продуктовый и веб-дизайнер из 🇩🇪 | Подробнее об истории Йохана
У 92% меньше проблем с хостингом и скоростью.