CoreCommunity ExtensionsIncubatorDistributionsTYPO3 4.5 ProjectsTYPO3 4.7 ProjectsTYPO3 6.0 ProjectsTYPO3 6.1 ProjectsTYPO3 6.2 Projects (+)

Documentation

Version 4 (Armin Ruediger Vieweg, 2012-03-12 17:51)

1 4 Armin Ruediger Vieweg
{{>toc}}
2 4 Armin Ruediger Vieweg
3 1
h1. Documentation
4 1
5 1
h2. Installation
6 1
7 1
Just install the extension and include the "static setup":http://forge.typo3.org/projects/extension-sprite/repository/entry/trunk/Configuration/TypoScript/setup.txt to your template.
8 1
9 2 Armin Ruediger Vieweg
h2. Configuration tutorial
10 1
11 1
h3. Create my first sprite
12 1
13 1
It is very easy to setup the first sprite. Just create a folder and put some images in there, then use this snippet:
14 1
<pre><code>  page.5 < lib.sprite_generator
15 1
  page.5.userFunc {
16 1
  	name = whatever
17 1
  	directories.10 = fileadmin/templates/images/sprite/
18 1
  }</code></pre>
19 1
20 1
Set a unique name, which will be used as prefix for sprite classes. In this example the spriteclass will look like: tx-sprite-whatever-imagename.
21 1
You can define several directories, so it is used like an array (.10, .20, ...).
22 1
23 1
You need to assign the user-function call to the page node. Then the sprite will be created and the css file will attached to headerData.
24 1
25 1
26 1
h3. Use my first sprite
27 1
28 1
Now we have a cool sprite, but of course we want to use it in our template. Instead using the IMAGE cObject we use this:
29 1
<pre><code>  lib.logo < lib.spriteImage
30 1
  lib.logo.params = class="tx-sprite-whatever tx-sprite-whatever-logo" alt="The optional alt tag"
31 1
</code></pre>
32 1
33 1
We need to define two classes:
34 1
# The class of the sprite, which contains the image
35 1
# The class of the sprite part we want to show. It contains the automatic calculated background positions and the width and height of our image
36 1
37 1
This example tells us, that there exists an image _logo.png_ in the specified _fileadmin/templates/images/sprite/_ directory. The name of the image (without extension) will be taken as last part of the sprite classname.
38 2 Armin Ruediger Vieweg
39 2 Armin Ruediger Vieweg
The html output will be:
40 2 Armin Ruediger Vieweg
<pre><code class="html"><img src="typo3conf/ext/sprite/Resources/Public/Images/blank.gif" alt="The optional alt tag" class="tx-sprite-whatever tx-sprite-whatever-logo"></code></pre>
41 2 Armin Ruediger Vieweg
42 2 Armin Ruediger Vieweg
The sprite extension provides its own blank.gif (also known as spacer).
43 2 Armin Ruediger Vieweg
44 2 Armin Ruediger Vieweg
h3. Fill my sprite
45 2 Armin Ruediger Vieweg
46 2 Armin Ruediger Vieweg
You've got several possibilities to define which images should be part of the sprite:
47 2 Armin Ruediger Vieweg
# *directories* (array): An array of directories which contain images. The images will not be loaded recursive.
48 2 Armin Ruediger Vieweg
# *files* (array): The same like directories, but you have to enter files. Files will be checked if they exist.
49 2 Armin Ruediger Vieweg
# *files* (string): You can also assign a string to the files property, which should contains the filenames comma separated.
50 2 Armin Ruediger Vieweg
51 2 Armin Ruediger Vieweg
*Super flexibility:*
52 2 Armin Ruediger Vieweg
You can add typoscript instead of fixed paths. This makes it incredible flexible. One of the possibilities is the creation of a website-wide-sprite. That means a sprite which contains all used images (tt_content) on the entire website. Lower in the documentation you'll find a typoscript which creates such a sprite and replaces all tt_content outputs with the sprites. This is not always useful - you have to decide yourself if it is useful to you.
53 3 Armin Ruediger Vieweg
54 3 Armin Ruediger Vieweg
h3. Use my sprite dynamically
55 3 Armin Ruediger Vieweg
56 3 Armin Ruediger Vieweg
There exists a *lib.dynamicSpriteImage* which makes it a bit more dynamic to output sprite images.
57 3 Armin Ruediger Vieweg
<pre><code>10 < lib.dynamicSpriteImage
58 3 Armin Ruediger Vieweg
10.10.class.cObject = RECORDS
59 3 Armin Ruediger Vieweg
10.10.class.cObject {
60 3 Armin Ruediger Vieweg
  source.field = pid
61 3 Armin Ruediger Vieweg
  tables = pages
62 3 Armin Ruediger Vieweg
  conf.pages = TEXT
63 3 Armin Ruediger Vieweg
  conf.pages.field = abstract
64 3 Armin Ruediger Vieweg
  stdWrap.wrap = tx-sprite-whatever tx-sprite-whatever-section-|
65 3 Armin Ruediger Vieweg
}</code></pre>
66 3 Armin Ruediger Vieweg
67 3 Armin Ruediger Vieweg
This will output (if the current page got the section "company"):
68 3 Armin Ruediger Vieweg
<pre><code class="html"><img src="typo3conf/ext/sprite/Resources/Public/Images/blank.gif" alt="" class="tx-sprite-whatever tx-sprite-whatever-section-company"></code></pre>
69 3 Armin Ruediger Vieweg
70 3 Armin Ruediger Vieweg
h2. Configuration
71 3 Armin Ruediger Vieweg
72 3 Armin Ruediger Vieweg
_here will come a table of configuration_
73 3 Armin Ruediger Vieweg
74 3 Armin Ruediger Vieweg
h2. The whole website sprite
75 3 Armin Ruediger Vieweg
76 3 Armin Ruediger Vieweg
h3. Creating the sprite
77 3 Armin Ruediger Vieweg
78 3 Armin Ruediger Vieweg
<pre>
79 3 Armin Ruediger Vieweg
# get all page uids (comma separated)
80 3 Armin Ruediger Vieweg
lib.page_uids = CONTENT
81 3 Armin Ruediger Vieweg
lib.page_uids {
82 3 Armin Ruediger Vieweg
	table = pages
83 3 Armin Ruediger Vieweg
	select {
84 3 Armin Ruediger Vieweg
		pidInList = 24
85 3 Armin Ruediger Vieweg
		recursive = 9
86 3 Armin Ruediger Vieweg
	}
87 3 Armin Ruediger Vieweg
	renderObj = COA
88 3 Armin Ruediger Vieweg
	renderObj {
89 3 Armin Ruediger Vieweg
		10 = TEXT
90 3 Armin Ruediger Vieweg
		10 {
91 3 Armin Ruediger Vieweg
			field = uid
92 3 Armin Ruediger Vieweg
			stdWrap.wrap = |,
93 3 Armin Ruediger Vieweg
		}
94 3 Armin Ruediger Vieweg
	}
95 3 Armin Ruediger Vieweg
}
96 3 Armin Ruediger Vieweg
97 3 Armin Ruediger Vieweg
# get all images as comma separated paths (should rename this lib)
98 3 Armin Ruediger Vieweg
lib.contents = CONTENT
99 3 Armin Ruediger Vieweg
lib.contents {
100 3 Armin Ruediger Vieweg
	table = tt_content
101 3 Armin Ruediger Vieweg
	select {
102 3 Armin Ruediger Vieweg
		pidInList.stdWrap.cObject < lib.page_uids
103 3 Armin Ruediger Vieweg
		recursive = 9
104 3 Armin Ruediger Vieweg
		andWhere = image IS NOT NULL
105 3 Armin Ruediger Vieweg
	}
106 3 Armin Ruediger Vieweg
	renderObj = COA
107 3 Armin Ruediger Vieweg
	renderObj {
108 3 Armin Ruediger Vieweg
		30 < tt_content.image.20
109 3 Armin Ruediger Vieweg
	}
110 3 Armin Ruediger Vieweg
	stdWrap {
111 3 Armin Ruediger Vieweg
		HTMLparser.tags.img.allowedAttribs = src
112 3 Armin Ruediger Vieweg
		split {
113 3 Armin Ruediger Vieweg
			token = >
114 3 Armin Ruediger Vieweg
			cObjNum = 1
115 3 Armin Ruediger Vieweg
			1 = TEXT
116 3 Armin Ruediger Vieweg
			1.current = 1
117 3 Armin Ruediger Vieweg
			1.stdWrap.split {
118 3 Armin Ruediger Vieweg
				token = "
119 3 Armin Ruediger Vieweg
				cObjNum = 1
120 3 Armin Ruediger Vieweg
				returnKey = 1
121 3 Armin Ruediger Vieweg
				1.current = 1
122 3 Armin Ruediger Vieweg
			}
123 3 Armin Ruediger Vieweg
			1.wrap = |,
124 3 Armin Ruediger Vieweg
		}
125 3 Armin Ruediger Vieweg
	}
126 3 Armin Ruediger Vieweg
}
127 3 Armin Ruediger Vieweg
</pre>
128 3 Armin Ruediger Vieweg
129 3 Armin Ruediger Vieweg
h3. Replacing all tt_content images with sprites
130 3 Armin Ruediger Vieweg
131 3 Armin Ruediger Vieweg
<pre>
132 3 Armin Ruediger Vieweg
page.1331568638 < lib.sprite_generator
133 3 Armin Ruediger Vieweg
page.1331568638.userFunc {
134 3 Armin Ruediger Vieweg
	name = overall
135 3 Armin Ruediger Vieweg
	files < lib.contents
136 3 Armin Ruediger Vieweg
	useJpg = 1
137 3 Armin Ruediger Vieweg
}
138 3 Armin Ruediger Vieweg
139 3 Armin Ruediger Vieweg
tt_content.image.20.1 {
140 3 Armin Ruediger Vieweg
	stdWrap {
141 3 Armin Ruediger Vieweg
		HTMLparser.tags.img.allowedAttribs = src
142 3 Armin Ruediger Vieweg
		split {
143 3 Armin Ruediger Vieweg
			token = >
144 3 Armin Ruediger Vieweg
			cObjNum = 1
145 3 Armin Ruediger Vieweg
			1 = TEXT
146 3 Armin Ruediger Vieweg
			1.current = 1
147 3 Armin Ruediger Vieweg
			1.stdWrap.split {
148 3 Armin Ruediger Vieweg
				token = "
149 3 Armin Ruediger Vieweg
				cObjNum = 1 || 2
150 3 Armin Ruediger Vieweg
151 3 Armin Ruediger Vieweg
				2 = TEXT
152 3 Armin Ruediger Vieweg
				2.current = 1
153 3 Armin Ruediger Vieweg
				2.split {
154 3 Armin Ruediger Vieweg
					token = /
155 3 Armin Ruediger Vieweg
					cObjNum = 1 || 2 || 3
156 3 Armin Ruediger Vieweg
157 3 Armin Ruediger Vieweg
					3 = TEXT
158 3 Armin Ruediger Vieweg
					3.current = 1
159 3 Armin Ruediger Vieweg
					3.split {
160 3 Armin Ruediger Vieweg
						token = .
161 3 Armin Ruediger Vieweg
						cObjNum = 1 || 2
162 3 Armin Ruediger Vieweg
163 3 Armin Ruediger Vieweg
						1 = COA
164 3 Armin Ruediger Vieweg
						1 {
165 3 Armin Ruediger Vieweg
							10 = LOAD_REGISTER
166 3 Armin Ruediger Vieweg
							10.spriteclass.cObject = TEXT
167 3 Armin Ruediger Vieweg
							10.spriteclass.cObject.current = 1
168 3 Armin Ruediger Vieweg
169 3 Armin Ruediger Vieweg
							20 < lib.spriteImage
170 3 Armin Ruediger Vieweg
							20.params = class="tx-sprite-overall tx-sprite-overall-{register:spriteclass}"
171 3 Armin Ruediger Vieweg
							20.params.insertData = 1
172 3 Armin Ruediger Vieweg
						}
173 3 Armin Ruediger Vieweg
					}
174 3 Armin Ruediger Vieweg
				}
175 3 Armin Ruediger Vieweg
			}
176 3 Armin Ruediger Vieweg
		}
177 3 Armin Ruediger Vieweg
	}
178 3 Armin Ruediger Vieweg
}
179 3 Armin Ruediger Vieweg
</pre>