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

Documentation

Version 6 (Armin Ruediger Vieweg, 2012-03-15 10:39)

1 1
h1. Documentation
2 5 Armin Ruediger Vieweg
3 5 Armin Ruediger Vieweg
{{>toc}}
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 6 Armin Ruediger Vieweg
_lib.sprite_generator.userFunc._
73 6 Armin Ruediger Vieweg
74 6 Armin Ruediger Vieweg
|*Attribute*|*Type*|*Default*|*Description*|
75 6 Armin Ruediger Vieweg
|name|string|mysprite|This name takes part of the sprite css classes and the filenames of css and image files. If you insert several sprites, it is necessary to keep them unique.|
76 6 Armin Ruediger Vieweg
|directories|array|_emtpy_|Each image containing in the given directories are used for the sprite. If you define several directories, the image filenames must be unique.|
77 6 Armin Ruediger Vieweg
|files|array/string|_emtpy_|Adds imagefiles to the sprite, can be used addionally to directories. You can define an array, like directories or add the files as comma separated string. Each file must contain the path, related to your htdocs. Example /fileadmin/images/myimage.png|
78 6 Armin Ruediger Vieweg
|linkCssFiles|boolean|1|Adds the css file with sprite classes to headerData. If false, just the files will be created but not linked.|
79 6 Armin Ruediger Vieweg
|useJpg|boolean|0|Normally sprites are existing out of gif and png files. But there are some situations where it is useful to combine jpg images. If this flag is true the output of sprite is jpg. It is strongly recommended that the input images are jpg too.|
80 6 Armin Ruediger Vieweg
|iconSpace|integer|2|Pixels between the single images in spriteimage.|
81 6 Armin Ruediger Vieweg
82 3 Armin Ruediger Vieweg
83 3 Armin Ruediger Vieweg
h2. The whole website sprite
84 3 Armin Ruediger Vieweg
85 3 Armin Ruediger Vieweg
h3. Creating the sprite
86 3 Armin Ruediger Vieweg
87 3 Armin Ruediger Vieweg
<pre>
88 3 Armin Ruediger Vieweg
# get all page uids (comma separated)
89 3 Armin Ruediger Vieweg
lib.page_uids = CONTENT
90 3 Armin Ruediger Vieweg
lib.page_uids {
91 3 Armin Ruediger Vieweg
	table = pages
92 3 Armin Ruediger Vieweg
	select {
93 3 Armin Ruediger Vieweg
		pidInList = 24
94 3 Armin Ruediger Vieweg
		recursive = 9
95 3 Armin Ruediger Vieweg
	}
96 3 Armin Ruediger Vieweg
	renderObj = COA
97 3 Armin Ruediger Vieweg
	renderObj {
98 3 Armin Ruediger Vieweg
		10 = TEXT
99 3 Armin Ruediger Vieweg
		10 {
100 3 Armin Ruediger Vieweg
			field = uid
101 3 Armin Ruediger Vieweg
			stdWrap.wrap = |,
102 3 Armin Ruediger Vieweg
		}
103 3 Armin Ruediger Vieweg
	}
104 3 Armin Ruediger Vieweg
}
105 3 Armin Ruediger Vieweg
106 3 Armin Ruediger Vieweg
# get all images as comma separated paths (should rename this lib)
107 3 Armin Ruediger Vieweg
lib.contents = CONTENT
108 3 Armin Ruediger Vieweg
lib.contents {
109 3 Armin Ruediger Vieweg
	table = tt_content
110 3 Armin Ruediger Vieweg
	select {
111 3 Armin Ruediger Vieweg
		pidInList.stdWrap.cObject < lib.page_uids
112 3 Armin Ruediger Vieweg
		recursive = 9
113 3 Armin Ruediger Vieweg
		andWhere = image IS NOT NULL
114 3 Armin Ruediger Vieweg
	}
115 3 Armin Ruediger Vieweg
	renderObj = COA
116 3 Armin Ruediger Vieweg
	renderObj {
117 3 Armin Ruediger Vieweg
		30 < tt_content.image.20
118 3 Armin Ruediger Vieweg
	}
119 3 Armin Ruediger Vieweg
	stdWrap {
120 3 Armin Ruediger Vieweg
		HTMLparser.tags.img.allowedAttribs = src
121 3 Armin Ruediger Vieweg
		split {
122 3 Armin Ruediger Vieweg
			token = >
123 3 Armin Ruediger Vieweg
			cObjNum = 1
124 3 Armin Ruediger Vieweg
			1 = TEXT
125 3 Armin Ruediger Vieweg
			1.current = 1
126 3 Armin Ruediger Vieweg
			1.stdWrap.split {
127 3 Armin Ruediger Vieweg
				token = "
128 3 Armin Ruediger Vieweg
				cObjNum = 1
129 3 Armin Ruediger Vieweg
				returnKey = 1
130 3 Armin Ruediger Vieweg
				1.current = 1
131 3 Armin Ruediger Vieweg
			}
132 3 Armin Ruediger Vieweg
			1.wrap = |,
133 3 Armin Ruediger Vieweg
		}
134 3 Armin Ruediger Vieweg
	}
135 3 Armin Ruediger Vieweg
}
136 3 Armin Ruediger Vieweg
</pre>
137 3 Armin Ruediger Vieweg
138 3 Armin Ruediger Vieweg
h3. Replacing all tt_content images with sprites
139 3 Armin Ruediger Vieweg
140 3 Armin Ruediger Vieweg
<pre>
141 3 Armin Ruediger Vieweg
page.1331568638 < lib.sprite_generator
142 3 Armin Ruediger Vieweg
page.1331568638.userFunc {
143 3 Armin Ruediger Vieweg
	name = overall
144 3 Armin Ruediger Vieweg
	files < lib.contents
145 3 Armin Ruediger Vieweg
	useJpg = 1
146 3 Armin Ruediger Vieweg
}
147 3 Armin Ruediger Vieweg
148 3 Armin Ruediger Vieweg
tt_content.image.20.1 {
149 3 Armin Ruediger Vieweg
	stdWrap {
150 3 Armin Ruediger Vieweg
		HTMLparser.tags.img.allowedAttribs = src
151 3 Armin Ruediger Vieweg
		split {
152 3 Armin Ruediger Vieweg
			token = >
153 3 Armin Ruediger Vieweg
			cObjNum = 1
154 3 Armin Ruediger Vieweg
			1 = TEXT
155 3 Armin Ruediger Vieweg
			1.current = 1
156 3 Armin Ruediger Vieweg
			1.stdWrap.split {
157 3 Armin Ruediger Vieweg
				token = "
158 3 Armin Ruediger Vieweg
				cObjNum = 1 || 2
159 3 Armin Ruediger Vieweg
160 3 Armin Ruediger Vieweg
				2 = TEXT
161 3 Armin Ruediger Vieweg
				2.current = 1
162 3 Armin Ruediger Vieweg
				2.split {
163 3 Armin Ruediger Vieweg
					token = /
164 3 Armin Ruediger Vieweg
					cObjNum = 1 || 2 || 3
165 3 Armin Ruediger Vieweg
166 3 Armin Ruediger Vieweg
					3 = TEXT
167 3 Armin Ruediger Vieweg
					3.current = 1
168 3 Armin Ruediger Vieweg
					3.split {
169 3 Armin Ruediger Vieweg
						token = .
170 3 Armin Ruediger Vieweg
						cObjNum = 1 || 2
171 3 Armin Ruediger Vieweg
172 3 Armin Ruediger Vieweg
						1 = COA
173 3 Armin Ruediger Vieweg
						1 {
174 3 Armin Ruediger Vieweg
							10 = LOAD_REGISTER
175 3 Armin Ruediger Vieweg
							10.spriteclass.cObject = TEXT
176 3 Armin Ruediger Vieweg
							10.spriteclass.cObject.current = 1
177 3 Armin Ruediger Vieweg
178 3 Armin Ruediger Vieweg
							20 < lib.spriteImage
179 3 Armin Ruediger Vieweg
							20.params = class="tx-sprite-overall tx-sprite-overall-{register:spriteclass}"
180 3 Armin Ruediger Vieweg
							20.params.insertData = 1
181 3 Armin Ruediger Vieweg
						}
182 3 Armin Ruediger Vieweg
					}
183 3 Armin Ruediger Vieweg
				}
184 3 Armin Ruediger Vieweg
			}
185 3 Armin Ruediger Vieweg
		}
186 3 Armin Ruediger Vieweg
	}
187 3 Armin Ruediger Vieweg
}
188 3 Armin Ruediger Vieweg
</pre>