# List project templates

**URL:** <https://forum.inductiveautomation.com/t/list-project-templates/9925>\
**Category:** Ignition\
**Created:** [April 17, 2015, 10:55am UTC](https://forum.inductiveautomation.com/t/list-project-templates/9925 "2015-04-17T10:55:36Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Didi71](https://avatars.discourse-cdn.com/v4/letter/d/46a35a/32.png) [@Didi71](https://forum.inductiveautomation.com/u/Didi71)\
**Post date:** [April 17, 2015, 10:55am UTC](https://forum.inductiveautomation.com/t/list-project-templates/9925/1 "2015-04-17T10:55:36Z")

</div>

Hello.

Currently the function system.gui.getWindowNames() returns a list of the paths of all windows in the current project, sorted alphabetically. That is good! 😃  
But does exist a function to get a list of all templates in the current project? 😲

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![Paolo.Mariani](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paolo.mariani/32/3285_2.png) [@Paolo.Mariani](https://forum.inductiveautomation.com/u/Paolo.Mariani)\
**Post date:** [April 22, 2015, 4:51pm UTC](https://forum.inductiveautomation.com/t/list-project-templates/9925/2 "2015-04-22T16:51:40Z")

</div>

unfortunately there isn’t a built in method for getting a list of templates within scripting.

---

<div class="post-metadata">

**Author:** ![raymond1982](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/raymond1982/32/6490_2.png) [@raymond1982](https://forum.inductiveautomation.com/u/raymond1982)\
**Post date:** [September 3, 2018, 8:21pm UTC](https://forum.inductiveautomation.com/t/list-project-templates/9925/4 "2018-09-03T20:21:38Z")

</div>

A little late on this one. In case anyone is looking for an answer.

```auto
def getTemplateResourceType():
	"""Resource type string."""
	return 'component-template'

def getTemplateFilter():
	"""Filter throw away for template types."""
	return lambda x: bool(x.getResourceType() == getTemplateResourceType())

def getContext(event):
	"""Context."""
	return event.source.parent.getAppContext()

def getProjectReference(event):
	"""Project reference."""
	return getContext(event).getProject()

def getTemplateFolderMembers(event, folderName):
	"""
	Returns a list of resource objects.
	# Requires an event object and a template folder path. 
	# i.e. 'tank_components'
	"""
	if event and folderName:
		context = getContext(event)
		project_obj = context.getProject()
		# Get the folders resource id from the Template Manager.
		folder_resource_id = context.getTemplateManager().getId(folderName).getLeft()
		# Get the folder resource_object by the id.
		resource = project_obj.getResource(folder_resource_id)
		# get the folder uuid.
		folder_uuid = resource.getDataAsUUID()
		# returns an array of template objects under the specified folder.
		return project_obj.browseFolder('fpmi', [getTemplateResourceType()], folder_uuid)
	return []

def getAllTemplates(event):
	"""
	Returns a list of all template resource objects.
	# Requires an event object. 
	"""
	if event:
		# Get all resources.
		resources = getProjectReference(event).getResources()
		# returns an array of template objects.
		return filter(getTemplateFilter(), resources)
	return []

#example
for resource in getAllTemplates(event):
	print resource.getName()

#example
folder_name = 'tank_components'
for resource in getTemplateFolderMembers(event, folder_name):
	print resource.getName()

```
