---
myst:
html_meta:
"description": ""
"property=og:description": ""
"property=og:title": ""
"keywords": ""
---
(creating-initial-content-for-the-theme)=
# Theme Package V: Creating Initial Content
Our theme relies on some initial content structure, specifically the {file}`slider-images` folder with some images inside.
We will improve our theme package to create this content on install.
To do that we create the {file}`slider-images` folder in our {file}`setuphandlers.py` and load some example images into that folder.
We will add some images tp the {file}`theme/img` folder.
To create the folder and the images add the following code in your {file}`setuphandlers.py`:
```{code-block} python
:emphasize-lines: 2,5-6,22-23,31-67
# -*- coding: utf-8 -*-
from plone import api
from Products.CMFPlone.interfaces import INonInstallable
from zope.interface import implementer
import os
@implementer(INonInstallable)
class HiddenProfiles(object):
def getNonInstallableProfiles(self):
"""Hide uninstall profile from site-creation and quickinstaller"""
return [
'ploneconf.theme:uninstall',
]
def post_install(context):
"""Post install script"""
# Do something at the end of the installation of this package.
portal = api.portal.get()
_create_content(portal)
def uninstall(context):
"""Uninstall script"""
# Do something at the end of the uninstallation of this package.
def _create_content(portal):
if not portal.get('slider-images', False):
slider = api.content.create(
type='Folder',
container=portal,
title=u'Slider',
id='slider-images'
)
for slider_number in range(1, 4):
slider_name = u'slider-{0}'.format(str(slider_number))
slider_image = api.content.create(
type='Image',
container=slider,
title=slider_name,
id=slider_name
)
slider_image.image = _load_image(slider_number)
# NOTE: if your plone site is not a vanilla plone
# you can have different workflows on folders and images
# or different transitions names so this could fail
# and you'll need to publish the images as well
# or do that manually TTW.
api.content.transition(obj=slider, transition='publish')
def _load_image(slider):
from plone.namedfile.file import NamedBlobImage
filename = os.path.join(
os.path.dirname(__file__),
'theme',
'img',
'slide-{0}.jpg'.format(slider),
)
return NamedBlobImage(
data=open(filename, 'r').read(),
filename=u'slide-{0}.jpg'.format(slider)
)
```
```{note}
After adding this code to the file {file}`setuphandlers.py`, we need to restart Plone and uninstall/install our theme package add-on.
```