2013-05-15 3 views
1

В настоящее время я создаю сайт сайта 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 '' 

ответ