-
-
Save KalobTaulien/be41cda840c91d1e904e887e76177ac1 to your computer and use it in GitHub Desktop.
#site_settings/models.py | |
from django.db import models | |
from wagtail.admin.edit_handlers import FieldPanel, MultiFieldPanel | |
from wagtail.contrib.settings.models import BaseSetting, register_setting | |
@register_setting | |
class SocialMediaSettings(BaseSetting): | |
"""Social media settings for our custom website.""" | |
facebook = models.URLField(blank=True, null=True, help_text="Facebook URL") | |
twitter = models.URLField(blank=True, null=True, help_text="Twitter URL") | |
youtube = models.URLField(blank=True, null=True, help_text="YouTube Channel URL") | |
panels = [ | |
MultiFieldPanel([ | |
FieldPanel("facebook"), | |
FieldPanel("twitter"), | |
FieldPanel("youtube"), | |
], heading="Social Media Settings") | |
] |
<div class="container"> | |
<div class="row"> | |
<div class="col-lg-12 text-center"> | |
{% if settings.site_settings.SocialMediaSettings.facebook %} | |
<a href="{{ settings.site_settings.SocialMediaSettings.facebook }}"> | |
<i class="fab fa-facebook-f"></i> | |
</a> | |
{% endif %} | |
{% if settings.site_settings.SocialMediaSettings.twitter %} | |
<a href="{{ settings.site_settings.SocialMediaSettings.twitter }}"> | |
<i class="fab fa-twitter"></i> | |
</a> | |
{% endif %} | |
{% if settings.site_settings.SocialMediaSettings.youtube %} | |
<a href="{{ settings.site_settings.SocialMediaSettings.youtube }}"> | |
<i class="fab fa-youtube"></i> | |
</a> | |
{% endif %} | |
</div> | |
</div> | |
</div> |
Hii I used ClusterableModel, and Orderable in register_setting but I can't able to render the data please help me to render the data from this ClusterableModel and I would like to render any template in the project
my render code
home/home_page.html
{% for item in self.Social_Media.all %}
{{item.Name}}
{{item.url}}
{% endfor %}
social_media/models.py
from django.db import models
from wagtail.admin.edit_handlers import FieldPanel, InlinePanel, MultiFieldPanel
from wagtail.contrib.settings.models import BaseSiteSetting, register_setting
from wagtail.core.models import Orderable
from modelcluster.models import ClusterableModel
from modelcluster.fields import ParentalKey
@register_setting(icon='chain-broken')
class SocialMediaSettings(ClusterableModel, BaseSiteSetting):
panels = [
MultiFieldPanel([
InlinePanel('Social_Media', label="Name & URL"),
], heading="Social Media accounts")
]
class Meta:
verbose_name = 'social media'
class SocialMediaNameUrl(Orderable):
page = ParentalKey("social_media.SocialMediaSettings", related_name="Social_Media")
name = models.CharField(
max_length=255, help_text='Your Social media name, like instagram, facebook....')
url = models.URLField(
help_text='Your user account URL')
panels = [
MultiFieldPanel([
FieldPanel("name"),
FieldPanel("url"),
])
]
Tutorial can be found here:
https://learnwagtail.com/tutorials/adding-global-site-settings-your-wagtail-website/
Full Git Commit can be found here:
CodingForEverybody/learn-wagtail@c0cd8f0