<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Codeline &#187; snippet</title>
	<atom:link href="http://codeline.richmd.ru/tag/snippet/feed/" rel="self" type="application/rss+xml" />
	<link>http://codeline.richmd.ru</link>
	<description>Веб созидание</description>
	<lastBuildDate>Thu, 22 Apr 2010 09:01:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>How-to create dynamic XML for Flash menu based on TYPO3 pagetree</title>
		<link></link>
		<comments>http://codeline.richmd.ru/2008/05/how-to-create-dynamic-xml-for-flash-menu-based-on-typo3-pagetree/#comments</comments>
		<pubDate>Thu, 22 May 2008 16:24:28 +0000</pubDate>
		<dc:creator>Павел Антонов</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://codeline.richmd.ru/?p=24</guid>
		<description><![CDATA[Русская версия статьи / Russian version TYPO3 features not limited to HTML pages, you can provide user with any type of web content. It&#8217;s absolutely not required to install special extension for XML-based content, but there are lots of them in TYPO3-repository. I not like use extensions, if there exists TYPO3-solution with typoscript. Here I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://codeline.richmd.ru/?p=23">Русская версия статьи / Russian version</a></p>
<p>TYPO3 features not limited to HTML pages, you can provide user with any type of web content. It&#8217;s absolutely not required to install special extension for XML-based content, but there are <a href="http://typo3.org/extensions/repository/?tx_terfe_pi1[view]=search&#038;no_cache=1&#038;tx_terfe_pi1[sword]=xml">lots of them in TYPO3-repository</a>.</p>
<p>I not like use extensions, if there exists TYPO3-solution with typoscript. Here I will provide example how to generate XML with pagetree data for Flash menu. Using this technique you can crate any type of XML-data, Google Sitemaps, WML, etc.<br />
<span id="more-24"></span><br />
XML for Flash menu application looks something like this:</p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
</pre>
</td>
<td class="code">
<pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=1&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=2&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 2&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=3&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=4&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 3-1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=5&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 3-2&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=6&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 3-3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=7&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 4&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre>
</td>
</tr>
</table>
</div>
<p>Typoscipt for generating this XML:</p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</pre>
</td>
<td class="code">
<pre class="php" style="font-family:monospace;">########################################
# PAGETREE TO XML
########################################
xmlmenu = PAGE
xmlmenu.typeNum = 111
# Disable all standard header generation by TYPO3
xmlmenu.config.disableAllHeaderCode = 1
# Setup correct content type header for XML
xmlmenu.config.additionalHeaders = Content-Type: application/xml
&nbsp;
# Output XML header
xmlmenu.10 = TEXT
xmlmenu.10.value = <span style="color: #000000; font-weight: bold;">&lt;?</span>xml version<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1.0&quot;</span> encoding<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
xmlmenu.10.postCObject = TEXT
xmlmenu.10.postCObject.char = 10
&nbsp;
# Output XML data of pagetree
xmlmenu.20 = HMENU
xmlmenu.20 {
 wrap = &lt;menu&gt;|&lt;/menu&gt;
 entryLevel = 0
 1 = TMENU
 1 {
  expAll = 1
  NO {
   doNoShowLink = 1
   allStdWrap.cObject = COA
   allStdWrap.cObject.10 = TEXT
   allStdWrap.cObject.10.typolink.parameter.field = uid
   allStdWrap.cObject.10.typolink.returnLast = url
   allStdWrap.cObject.10.noTrimWrap = |&lt;item url=&quot;|&quot; |
   allStdWrap.cObject.20 = TEXT
   allStdWrap.cObject.20.field = nav_title // title
   allStdWrap.cObject.20.wrap = title=&quot;|&quot;/&gt;
  }
&nbsp;
# We need too surround subitems with &lt;item&gt;&lt;/item&gt;
  IFSUB &lt; .NO
  IFSUB = 1
  IFSUB {
# Added closing &lt;/item&gt;
   wrapItemAndSub = |&lt;/item&gt;
# Raplace &lt;item ... /&gt; with &lt;item ...&gt;
   allStdWrap.cObject.20.wrap = title=&quot;|&quot;&gt;
  }
 }
&nbsp;
 2 &lt; .1
 3 &lt; .1
 4 &lt; .1
 5 &lt; .1
}</pre>
</td>
</tr>
</table>
</div>
<p>Flash application can  now access XML data with address &#8220;index.php?type=111&#8243;</p>
<p>You can add content output into TYPO3 if required, and use this for Full Flash sites and use TYPO3 as your backend.</p>
<p>So, no extensions, just TYPO3 and typoscript&#8230;</p>
<p>P.S.: <strong>Dear, Readers, if you interested in English versions of articles about TYPO3 and TYPO3 snippets please let me know. Leave comments in my blog.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://codeline.richmd.ru/2008/05/how-to-create-dynamic-xml-for-flash-menu-based-on-typo3-pagetree/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Создаем XML дерева страниц TYPO3 для Flash меню</title>
		<link></link>
		<comments>http://codeline.richmd.ru/2008/05/%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%b5%d0%bc-xml-%d0%b4%d0%b5%d1%80%d0%b5%d0%b2%d0%b0-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86-typo3-%d0%b4%d0%bb%d1%8f-flash-%d0%bc%d0%b5%d0%bd%d1%8e/#comments</comments>
		<pubDate>Thu, 22 May 2008 13:15:35 +0000</pubDate>
		<dc:creator>Павел Антонов</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://codeline.richmd.ru/?p=23</guid>
		<description><![CDATA[English version / Английская версия статьи Возможности TYPO3 совсем не ограничены одними только HTML страницами. Для того что бы сформировать XML файл по контенту в TYPO3 совершенно не нужны какие-либо расширения, коих, к моему удивление, такое большое количество в репозитории. Поскольку я не приветствую использование расширений без особой причины, приведу пример формирования XML выгрузки страниц [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://codeline.richmd.ru/?p=24">English version / Английская версия статьи</a></p>
<p>Возможности TYPO3 совсем не ограничены одними только HTML страницами. Для того что бы сформировать XML файл по контенту в TYPO3 совершенно не нужны какие-либо расширения, коих, к моему удивление, <a href="http://typo3.org/extensions/repository/?tx_terfe_pi1[view]=search&#038;no_cache=1&#038;tx_terfe_pi1[sword]=xml">такое большое количество в репозитории</a>.<br />
Поскольку я не приветствую использование расширений без особой причины, приведу пример формирования XML выгрузки страниц из TYPO3 для Flash меню. Стоит отметить, что тем же способом можно выдавать абсолютно любого вида и направленности данные, как например, Google Sitemaps или WML и т.д.<br />
<span id="more-23"></span><br />
XML для Flash menu имеет следующий вид:</p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
</pre>
</td>
<td class="code">
<pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=1&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=2&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 2&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=3&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=4&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 3-1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=5&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 3-2&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=6&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 3-3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;index.php?id=7&quot;</span> <span style="color: #000066;">title</span>=<span style="color: #ff0000;">&quot;Page 4&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/menu<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre>
</td>
</tr>
</table>
</div>
<p>Typoscipt генерации такого XML:</p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</pre>
</td>
<td class="code">
<pre class="php" style="font-family:monospace;">########################################
# PAGETREE TO XML
########################################
xmlmenu = PAGE
xmlmenu.typeNum = 111
# отключаем генерацию стандартных заголовка страницы TYPO3
xmlmenu.config.disableAllHeaderCode = 1
# устанавливаем корректный тип контента
xmlmenu.config.additionalHeaders = Content-Type: application/xml
&nbsp;
# Выдаем заголовок XML
xmlmenu.10 = TEXT
xmlmenu.10.value = <span style="color: #000000; font-weight: bold;">&lt;?</span>xml version<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1.0&quot;</span> encoding<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>
xmlmenu.10.postCObject = TEXT
xmlmenu.10.postCObject.char = 10
&nbsp;
# Сами данные дерева страниц
xmlmenu.20 = HMENU
xmlmenu.20 {
 wrap = &lt;menu&gt;|&lt;/menu&gt;
 entryLevel = 0
 1 = TMENU
 1 {
  expAll = 1
  NO {
   doNoShowLink = 1
   allStdWrap.cObject = COA
   allStdWrap.cObject.10 = TEXT
   allStdWrap.cObject.10.typolink.parameter.field = uid
   allStdWrap.cObject.10.typolink.returnLast = url
   allStdWrap.cObject.10.noTrimWrap = |&lt;item url=&quot;|&quot; |
   allStdWrap.cObject.20 = TEXT
   allStdWrap.cObject.20.field = nav_title // title
   allStdWrap.cObject.20.wrap = title=&quot;|&quot;/&gt;
  }
&nbsp;
# отличается от NO тем, что нам надо обернуть под элементы в &lt;item&gt;&lt;/item&gt;
  IFSUB &lt; .NO
  IFSUB = 1
  IFSUB {
# Добавляем завершающий &lt;/item&gt;
   wrapItemAndSub = |&lt;/item&gt;
# Заменяем &lt;item ... /&gt; на &lt;item ...&gt;
   allStdWrap.cObject.20.wrap = title=&quot;|&quot;&gt;
  }
 }
&nbsp;
 2 &lt; .1
 3 &lt; .1
 4 &lt; .1
 5 &lt; .1
}</pre>
</td>
</tr>
</table>
</div>
<p>Flash приложение теперь может получать данные для меню по адресу &#8220;index.php?type=111&#8243;</p>
<p>При желании можно добавить и выгрузку контента из TYPO3, что может быть актуально для сайтов созданных полностью на Flash, но использующих TYPO3 в качестве системы управления. И без всяких расширений&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://codeline.richmd.ru/2008/05/%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%b5%d0%bc-xml-%d0%b4%d0%b5%d1%80%d0%b5%d0%b2%d0%b0-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86-typo3-%d0%b4%d0%bb%d1%8f-flash-%d0%bc%d0%b5%d0%bd%d1%8e/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Замена редиректов для HMENU на прямые ссылки</title>
		<link></link>
		<comments>http://codeline.richmd.ru/2006/10/hmenu-direct-links/#comments</comments>
		<pubDate>Sat, 07 Oct 2006 11:25:27 +0000</pubDate>
		<dc:creator>Павел Антонов</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://codeline.richmd.ru/?p=12</guid>
		<description><![CDATA[Typo3 при генерации меню (HMENU) использует редиректы для страниц типа &#8220;External URL&#8221;. В общем случае этот механизм не вызывает нареканий, но иногда требуется, чтобы меню содержало прямую ссылку на ресурс или файл. Например, при использовании Secure Downloads (naw_securedl) возникает проблема с тем, что ссылка не указывает фактически на требуемый файл. Для того, чтобы заставить меню [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Typo3</strong> при генерации меню (HMENU) использует редиректы для страниц типа &#8220;External URL&#8221;. В общем случае этот механизм не вызывает нареканий, но иногда требуется, чтобы меню содержало прямую ссылку на ресурс или файл. Например, при использовании <a href="http://typo3.org/extensions/repository/view/naw_securedl/0.1.2/">Secure Downloads</a> (naw_securedl) возникает проблема с тем, что ссылка не указывает фактически на требуемый файл.<br />
<span id="more-12"></span><br />
Для того, чтобы заставить меню генерировать прямы ссылки, можно воспользоваться следующим кодом:</p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre>
</td>
<td class="code">
<pre class="php" style="font-family:monospace;">		NO<span style="color: #339933;">.</span>allStdWrap<span style="color: #339933;">.</span>override <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span><span style="color: #339933;">.</span>value<span style="color: #339933;">.</span>field <span style="color: #339933;">=</span> doktype
			<span style="color: #b1b100;">if</span><span style="color: #339933;">.</span>equals <span style="color: #339933;">=</span> 3
			field <span style="color: #339933;">=</span> title
			typolink <span style="color: #009900;">&#123;</span>
				target <span style="color: #339933;">=</span> _blank
				extTarget <span style="color: #339933;">=</span> _blank
				ATagParams <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;noicon&quot;</span>
				parameter<span style="color: #339933;">.</span>field <span style="color: #339933;">=</span> url
				parameter<span style="color: #339933;">.</span><span style="color: #990000;">split</span> <span style="color: #009900;">&#123;</span>
					token <span style="color: #339933;">=</span> <span style="color: #339933;">/</span>
					cObjNum <span style="color: #339933;">=</span> 1
&nbsp;
					<span style="color:#800080;">1.</span><span style="color: #990000;">current</span> <span style="color: #339933;">=</span> 1
					<span style="color:#800080;">1.</span><span style="color: #990000;">rawUrlEncode</span> <span style="color: #339933;">=</span> 1
					1<span style="color: #339933;">.</span>wrap <span style="color: #339933;">=</span> <span style="color: #339933;">/|</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span></pre>
</td>
</tr>
</table>
</div>
<p>Использование split связано с тем, что в некоторых ссылках присутствовали пробелы и пришлось кодировать URL (при этом не трогая обратный слэш &#8220;/&#8221;)</p>
<p>Кстати, использование split в меню несколько проблематично. Дело в том, что все optionSplit обрабатываются генератором меню и следоватоельно split с более чем одним вариантом объекта обрабатываешьего split будет работать некорректно.</p>
]]></content:encoded>
			<wfw:commentRss>http://codeline.richmd.ru/2006/10/hmenu-direct-links/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Подменяем картинку в коде генерируемом IMGTEXT с функцией увеличения (Enlage)</title>
		<link></link>
		<comments>http://codeline.richmd.ru/2006/09/%d0%bf%d0%be%d0%b4%d0%bc%d0%b5%d0%bd%d1%8f%d0%b5%d0%bc-%d0%ba%d0%b0%d1%80%d1%82%d0%b8%d0%bd%d0%ba%d1%83-%d0%b2-%d0%ba%d0%be%d0%b4%d0%b5-%d0%b3%d0%b5%d0%bd%d0%b5%d1%80%d0%b8%d1%80%d1%83%d0%b5%d0%bc%d0/#comments</comments>
		<pubDate>Mon, 25 Sep 2006 22:25:53 +0000</pubDate>
		<dc:creator>Павел Антонов</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://codeline.richmd.ru/?p=10</guid>
		<description><![CDATA[Идея заключается в подмене атрибуты картинки &#8220;src&#8221; на свой. Решение оказалось довольно таки простым. [code] tt_content.image.20.1.stdWrap.addParams { _offset = 2 src = 1 src.cObject = CASE src.cObject { key.field = image_frames 1 = IMG_RESOURCE 1 { file = GIFBUILDER file { XY = [10.w], [10.h] format = jpg 10 = IMAGE 10 { file.import.current = [...]]]></description>
			<content:encoded><![CDATA[<p>Идея заключается в подмене атрибуты картинки &#8220;src&#8221; на свой. Решение оказалось довольно таки простым.<br />
<span id="more-10"></span><br />
[code]<br />
tt_content.image.20.1.stdWrap.addParams {<br />
	_offset = 2</p>
<p>	src = 1<br />
	src.cObject = CASE<br />
	src.cObject {<br />
		key.field = image_frames<br />
		1 = IMG_RESOURCE<br />
		1 {<br />
			file = GIFBUILDER<br />
			file {<br />
				XY = [10.w], [10.h]<br />
				format = jpg<br />
	    			10 = IMAGE<br />
    				10 {<br />
					file.import.current = 1<br />
					file.width.field = imagewidth<br />
	    			}</p>
<p>    				20 = IMAGE<br />
    				20 {<br />
    					offset = 2, [10.h]-12<br />
	    				file = fileadmin/templates/img/lupe.gif<br />
    				}<br />
			}<br />
		}<br />
		default < .1<br />
	}<br />
}<br />
[/code]</p>
<p>Подмена всегда деалется во втором по очереди тэге (_offset = 2). Если картина создана без возможности увеличения, то никаких изменений не произойдет (img будет первым и единственным тэгом).</p>
<p><strong>CASE</strong> используется для выбора различных способов (картинок, накладываемых на оригинал) создания превью.</p>
]]></content:encoded>
			<wfw:commentRss>http://codeline.richmd.ru/2006/09/%d0%bf%d0%be%d0%b4%d0%bc%d0%b5%d0%bd%d1%8f%d0%b5%d0%bc-%d0%ba%d0%b0%d1%80%d1%82%d0%b8%d0%bd%d0%ba%d1%83-%d0%b2-%d0%ba%d0%be%d0%b4%d0%b5-%d0%b3%d0%b5%d0%bd%d0%b5%d1%80%d0%b8%d1%80%d1%83%d0%b5%d0%bc%d0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Подстановка данных в блоки контента</title>
		<link></link>
		<comments>http://codeline.richmd.ru/2006/07/%d0%bf%d0%be%d0%b4%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85-%d0%b2-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82-%d1%80%d0%b5%d0%b4%d0%b0%d0%ba%d1%82%d0%b8%d1/#comments</comments>
		<pubDate>Thu, 20 Jul 2006 17:06:17 +0000</pubDate>
		<dc:creator>Павел Антонов</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://codeline.richmd.ru/?p=3</guid>
		<description><![CDATA[Есть следующая задача: Допустим сайт имеет обычную стоку копирайта. Строчка копирайта вставляет блоком обычного контета, таким образом пользователь получает возможно редактировать ее по необходимости. При этом нужно обеспечить, чтобы год подставлялся автоматически и менялся ежегодно без участия пользователя. То есть, текст частично генерируется системой, частично редактируема пользователем, при этом контроль за внешним видом остается за [...]]]></description>
			<content:encoded><![CDATA[<p>Есть следующая задача:</p>
<p>Допустим сайт имеет обычную стоку копирайта. Строчка копирайта вставляет блоком обычного контета, таким образом пользователь получает возможно редактировать ее по необходимости. При этом нужно обеспечить, чтобы год подставлялся автоматически и менялся ежегодно без участия пользователя. То есть, текст частично генерируется системой, частично редактируема пользователем, при этом контроль за внешним видом остается за последним.<br />
<span id="more-3"></span><br />
<strong>Создание блока копирайта</strong><br />
Создается блок типа TEXT содержащий следующий текст:</p>
<pre>
© 2005-2006, Компания Ко
</pre>
<p>Пусть блок имеет uid=100. В шаблоне с помощью разметки TemplaVoila создаем элемент, содержимое которого будет браться из объекта TypoScript с именем lib.copyright. Теперь мы можем вставить копирайт на каждую страницу сайта используя следующий код:</p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
</pre>
</td>
<td class="code">
<pre class="php" style="font-family:monospace;">lib<span style="color: #339933;">.</span>copyright <span style="color: #339933;">=</span> RECORDS
lib<span style="color: #339933;">.</span>copyright <span style="color: #009900;">&#123;</span>
	source <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span>
	tables <span style="color: #339933;">=</span> tt_content
<span style="color: #009900;">&#125;</span></pre>
</td>
</tr>
</table>
</div>
<p>Пользователь может исправлять блок по своему желанию, частично цель достигнута. Остается реализовать автоматическую подстановку текущего года. </p>
<p><strong>Подстановка данных в контент пользователя</strong><br />
Первое что приходит в голову реализовать собственный рендеринг блока. Такой подход имеет право на жизнь, но придется написать очень много кода, что делает такое решение мало привлекательным. Значительно проще подставить необходимые данные в уже созданный/от-рендеренный блок.</p>
<p>Typo3 предоставляет целых два механизма для замены данных в контенте: использование <strong><a href="http://typo3.org/documentation/document-library/references/doc_core_tsref/current/view/8/26/" target="_blank">TEMPLATE</a></strong> и использование параметра <strong>insertData</strong> у <strong><a href="http://typo3.org/documentation/document-library/references/doc_core_tsref/current/view/5/1/" target="_blank">stdWrap</a></strong>.</p>
<p><strong>Вариант 1: <a href="http://typo3.org/documentation/document-library/references/doc_core_tsref/current/view/8/26/" target="_blank">TEMPLATE</a></strong><br />
В данном варианте мы используем блок контента пользователя как шаблон для вставки наших данных. Пользователь при редактировании блока с копирайтом, использует определенный нами маркер ###CURRENT_YEAR### в качестве текущего года:</p>
<pre>© 2005-###CURRENT_YEAR###, Компания Ко</pre>
<p>Код выполняющий подстановку маркера выглядит следующим образом:</p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre>
</td>
<td class="code">
<pre class="php" style="font-family:monospace;">lib<span style="color: #339933;">.</span>copyright <span style="color: #339933;">=</span> TEMPLATE
lib<span style="color: #339933;">.</span>copyright <span style="color: #009900;">&#123;</span>
	template <span style="color: #339933;">=</span> RECORDS
	template <span style="color: #009900;">&#123;</span>
		source <span style="color: #339933;">=</span> 100
		tables <span style="color: #339933;">=</span> tt_content
	<span style="color: #009900;">&#125;</span>
	marks <span style="color: #009900;">&#123;</span>
		CURRENT_YEAR <span style="color: #339933;">=</span> TEXT
		CURRENT_YEAR<span style="color: #339933;">.</span>data <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #339933;">:</span> Y
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre>
</td>
</tr>
</table>
</div>
<p><strong>Вариант 2: insertData</strong><br />
Второй вариант использует подобный механизм замены директив заключенных в фигурные скобки в случае указанного параметра insertData (.<a href="http://typo3.org/documentation/document-library/references/doc_core_tsref/current/view/5/1/" target="_blank">stdWrap</a>). В данном случае пользователь долен указать одну из директив источника (<a href="http://typo3.org/documentation/document-library/references/doc_core_tsref/current/view/2/2/" target="_blank">getText</a>). </p>
<p>Для подстановки текущего года мы будем использовать <a href="http://typo3.org/documentation/document-library/references/doc_core_tsref/current/view/8/18/" target="_blank">регистры Typo3</a>, в этом случае блок с копирайтом должен выглядеть следующим образом:<br />
[code]© 2005-{register:currentYear}, Компания Ко[/code]<br />
Код выполняющий подстановку выглядит следующим образом:</p>
<div class="wp_syntax">
<table>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
</pre>
</td>
<td class="code">
<pre class="php" style="font-family:monospace;">lib<span style="color: #339933;">.</span>copyright <span style="color: #339933;">=</span> RECORDS
lib<span style="color: #339933;">.</span>copyright <span style="color: #009900;">&#123;</span>
	source <span style="color: #339933;">=</span> 100
	tables <span style="color: #339933;">=</span> tt_content
	stdWrap <span style="color: #009900;">&#123;</span>
		preCObject <span style="color: #339933;">=</span> LOAD_REGISTER
		preCObject<span style="color: #339933;">.</span>currentYear<span style="color: #339933;">.</span>data <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #339933;">:</span> Y
		insertData <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre>
</td>
</tr>
</table>
</div>
<p>Нужно отметить, что во втором случае пользователь может так же вставлять в контент поля текущей страницы, название страниц выше в дереве и многое другое, что определено в <a href="http://typo3.org/documentation/document-library/references/doc_core_tsref/current/view/2/2/" target="_blank">getText</a>.</p>
<p><strong>Заключение</strong><br />
По идее первый способ должен работать быстрее. Второй дает более широкие возможности, но стоит ли их давать пользователю. На мой взгляд, простота в данном случае намного важнее.</p>
<p>Описанные подходы имеют большую ценность не только для подстановки информации в блоки контента, но и в тех случаях, когда функционала TypoScript не достаточно в каком либо из объектов TypoScript (например, HMENU). В таких случаях как раз удобно применять 2-й вариант выполнив подстановку данных уже после генерация HTML-кода.</p>
]]></content:encoded>
			<wfw:commentRss>http://codeline.richmd.ru/2006/07/%d0%bf%d0%be%d0%b4%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85-%d0%b2-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82-%d1%80%d0%b5%d0%b4%d0%b0%d0%ba%d1%82%d0%b8%d1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

