При внедрении сайта Django CMS я немного застрял в управлении ссылками (внутренним или внешним). В моем проекте у меня есть специальный плагин, который оператор должен использовать довольно часто. Я добавил скриншоты диалога редактирования и рендеринга в конце вопроса.Плагин с редактируемым элементом ссылки
Диалог редактирования хорош, но прямо сейчас кнопка представляет собой только поле символов. Таким образом, выбор ссылки на странице в Django CMS или внешнем URL отсутствует. Я искал ссылку, но до сих пор теряюсь.
Как добавить функцию, позволяющую оператору выбрать внутреннюю или внешнюю ссылку?
Плагин состоит из следующих частей:
models.py
from django.db import models
from cms.models.pluginmodel import CMSPlugin
from djangocms_text_ckeditor.fields import HTMLField
class CardPlugin(CMSPlugin):
title = models.CharField(max_length=256,default='')
description = HTMLField(configuration='CKEDITOR_SETTINGS',
default='')
button = models.CharField(max_length=256,default='')
def __str__(self):
return str(self.title)
cms_plugins.py
class CardCMSPlugin(CMSPluginBase):
model = CardPlugin
name = 'Card'
render_template = "card-default.html"
карты default.html
{% load cms_tags %}
<section class="card card--primary-light">
<div class="card__inner">
<div class="card__content">
<div class="card__text">
<h2 class="card__title">
{{ instance.title }}
</h2>
<p class="card__description">
{{ instance.description }}
</p>
</div>
{% if instance.button %}
<div class="card__buttons">
<a href="#0" class="button button--primary-inverse">{{ instance.button }}</a>
</div>
{% endif %}
</div>
</div>
</section>
тонированное окно
Диалог редактированияПлагин выглядит следующим образом:
Я предварительно попробовал детское плагин. У меня был плагин Text в качестве дочернего элемента для плагина.Но это кажется каким-то поверхностным. Прямо сейчас добавление нового окна выполняется очень быстро: добавление поля и табуляция по трем полям и нажатие вводят. Готово. Добавление детей действительно является бременем для пользователя и усложняет структуру, не наживая ничего. Значит, нет ничего похожего на LinkField? Я не вижу PlaceholderFields для применения к моему вопросу, так как это плагин CMS, правильно? – itsafire
Это не бремя, это просто более типичный способ работы с django-cms. Вы можете добавить «LinkField» к вашей модели, тогда 'instance.linkfield' будет' href' attr вашей кнопки. Однако проблема в том, что у вас нет возможности плагина [link plugin] (https://github.com/divio/djangocms-link) для ссылки на страницы или внешние URL-адреса или дополнительные настройки, такие как классы или шаблоны , И «PlaceholderField» - это то, что вы, возможно, захотите заглянуть, я могу помочь вам, если вы не знакомы с ним. –
Но я использую HTMLField, предоставленный djangocms_text_ckeditor.fields в моей модели, и у меня есть полноценный редактор в моем плагине. Это кажется настолько сильным. Является ли это плохой дизайн в Django CMS? Какой смысл тогда иметь плагины, когда нужно снова разогнать свои потребности на более мелкие несвязанные биты? – itsafire