В настоящее время я создаю сайт сайта Django с несколькими сайтами. Я хотел бы иметь возможность переопределить функциональность плагина базовой линии cms.plugins.link
, чтобы иметь возможность ссылаться на любую другую страницу в любом из других сайтов.Настройка плагина Link
Я использую редактор по умолчанию, WYMeditor.
Я уже создал пользовательскую абстрактную модель CMSPlugin, которая предоставляет необходимую мне функциональность, используя класс cms.models.fields.PageField
, и использую его в плагинах на заказ.
Что я не уверен в том, как (или если) я могу либо изменить существующую модель cms.plugins.link
, либо каким-то образом расширить ее. Мне нужно, чтобы этот модифицированный плагин доступен в списке доступных плагинов в простом cms.plugins.text
экземпляре.
Для чего это стоит, код для моего пользовательского плагина следующим образом:
class PluginWithLinks(models.Model):
"""
There are a number of plugins which use links to other on-site or off-site
pages or offsite. This information is abstracted out here. Simply extend
this class if you need a class which has links as a core part of its
functionality.
"""
page_link = PageField(
verbose_name="page",
help_text="Select an existing page to link to.",
blank=True,
null=True
)
url = models.CharField(
"link", max_length=255, blank=True, null=True,
help_text="Destination URL. If chosen, this will be used instead of \
the page link. Must include http://")
link_text = models.CharField(
blank=True, null=True, max_length=100, default='More', help_text='The \
link text to be displayed.')
target = models.CharField(
"target", blank=True, max_length=100,
choices=((
("", "same window"),
("_blank", "new window"),
("_parent", "parent window"),
("_top", "topmost frame"),
))
)
class Meta:
abstract = True
@property
def link(self):
if self.url:
return self.url
elif self.page_link:
full_url = "http://%s%s" % (
self.page_link.site.domain,
self.page_link.get_absolute_url()
)
return full_url
else:
return ''