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> |