<?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>empty pages &#187; projects</title> <atom:link href="http://look-in.net/category/projects/feed/" rel="self" type="application/rss+xml" /><link>http://look-in.net</link> <description></description> <lastBuildDate>Mon, 05 Dec 2011 06:07:14 +0000</lastBuildDate> <generator>http://wordpress.org/?v=2.9.2</generator> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>&#171;Flexible&#187; protocol buffer implementation.</title><link>http://look-in.net/2011/06/25/flexible-protocol-buffer/</link> <comments>http://look-in.net/2011/06/25/flexible-protocol-buffer/#comments</comments> <pubDate>Sat, 25 Jun 2011 10:08:45 +0000</pubDate> <dc:creator>slookin</dc:creator> <category><![CDATA[java]]></category> <category><![CDATA[projects]]></category> <category><![CDATA[google]]></category> <category><![CDATA[protocolbuf]]></category> <guid
isPermaLink="false">http://look-in.net/?p=463</guid> <description><![CDATA[Every body knows about protobuf from Google team. It is very useful and effective protocol for data exchanges.
&#171;Protocol Buffers are a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of  its internal RPC protocols and file formats.&#187;
For my project  I need to implement specific [...]]]></description> <content:encoded><![CDATA[<p>Every body knows about <a
href="http://code.google.com/p/protobuf/" target="_blank">protobuf</a> from Google team. It is very useful and effective protocol for data exchanges.</p><p
style="text-align: left;"><em>&laquo;Protocol Buffers are a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of  its internal RPC protocols and file formats.&raquo;</em></p><p>For my project<em> </em> I need to implement specific router for messages from different clients. So my router (receiver) should be able to read (parse) body of message in order to get information about for routing. But I couldn’t predict all protobuf message format on design phase, as result I should analyze message format on runtime.</p><p><span
id="more-463"></span></p><p>Google team suggest to use special technique &laquo;<a
href="http://code.google.com/apis/protocolbuffers/docs/techniques.html#self-description" target="_blank">Self-describing Messages</a>&raquo; : insert additional field to message with full protocol description. As result all messages will have information about their structue. It is good trick, but the message size will extremely big. (main advantage of protobuf in my project is small message size). So I decide to have full message format catalogue on my router and update this catalogue in runtime.</p><p>The plain-text .proto file should be prepared as message using descriptor.proto and protoc utility.</p><p>The code below shows how router will read protocol format from file system and parse incoming message.</p><p>We will use <strong>addressbook.proto</strong> from examples:</p><pre>package tutorial;
option java_package = "com.example.tutorial";
option
java_outer_classname = "AddressBookProtos";
message Person {
  required string name = 1;
  required int32 id = 2;        // Unique ID number for this person.
  optional string email = 3;
  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
}
  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }
  repeated PhoneNumber phone = 4;
}
// Our address book file is just one of these.
message AddressBook {
  repeated Person person = 1;
}</pre><p>Clients (sender) can implement classical way for producing message (generate java classes via protoc):</p><p><strong>protoc &#8211;java_out=. addressbook.proto </strong></p><p>And following example of message generate:</p><div><p><span
style="font-family: Courier New; font-size: 10pt;"> </span></p><pre>
<div><span style="font-family: Courier New; font-size: 10pt;">   Person.Builder person = Person.<em>newBuilder</em>();</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   person.setId(Integer.<em>valueOf</em>(42));</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   person.setEmail(</span><span style="font-family: Courier New; color: #2a00ff; font-size: 10pt;">"test_email@gmail.com");</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   person.setName(</span><span style="font-family: Courier New; color: #2a00ff; font-size: 10pt;">"Viktor Villari");</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   Person p = person.build();</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   FileOutputStream fstream = </span><span style="font-family: Courier New; color: #7f0055; font-size: 10pt;"><strong>new</strong></span><span style="font-family: Courier New; font-size: 10pt;"> FileOutputStream(</span><span style="font-family: Courier New; color: #0000c0; font-size: 10pt;"><em>messagePath);</em></span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   CodedOutputStream outSream = CodedOutputStream.<em>newInstance</em>(fstream);</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   p.writeTo(outSream);</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   outSream.flush();</span></div>
</pre><pre>as result we will have file with message (<span style="font-family: Courier New; color: #0000c0; font-size: 10pt;"><em>messagePath</em></span>)</pre><pre>After it we should generate descriptor for our addressbook.proto:</pre><pre><strong>protoc --descriptor_set_out=address.proto.descriptor  addressbook.proto </strong></pre><pre>I transfer address.proto.descriptor to receiver format catalogue and following code allow me to parse message:</pre><pre>
<div><span style="font-family: Courier New; color: #3f7f5f; font-size: 10pt;">   // read protocol Descriptor</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   FileInputStream input = </span><span style="font-family: Courier New; color: #7f0055; font-size: 10pt;"><strong>new</strong></span><span style="font-family: Courier New; font-size: 10pt;"> FileInputStream(</span><span style="font-family: Courier New; color: #0000c0; font-size: 10pt;"><em>protoDescripter);</em></span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   DescriptorProtos.FileDescriptorSet fdsProto = DescriptorProtos.FileDescriptorSet.<em>parseFrom</em>(input);</span></div>
<div><span style="font-family: Courier New; color: #3f7f5f; font-size: 10pt;">// point to specific file in FileDescriptorSet</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   System.</span><span style="font-family: Courier New; color: #0000c0; font-size: 10pt;"><em>out</em></span><span style="font-family: Courier New; font-size: 10pt;">.println(</span><span style="font-family: Courier New; color: #2a00ff; font-size: 10pt;">"File name = "</span><span style="font-family: Courier New; font-size: 10pt;"> + fdsProto.getFile(0).getName());</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   FileDescriptor fileDescr = FileDescriptor.<em>buildFrom</em>(fdsProto.getFile(0), </span><span style="font-family: Courier New; color: #7f0055; font-size: 10pt;"><strong>new</strong></span><span style="font-family: Courier New; font-size: 10pt;"> FileDescriptor[0]);</span></div>
<div><span style="font-family: Courier New; color: #3f7f5f; font-size: 10pt;">// point to specific message type in FileDescriptor</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   System.</span><span style="font-family: Courier New; color: #0000c0; font-size: 10pt;"><em>out</em></span><span style="font-family: Courier New; font-size: 10pt;">.println(</span><span style="font-family: Courier New; color: #2a00ff; font-size: 10pt;">"Message type = "</span><span style="font-family: Courier New; font-size: 10pt;"> + fileDescr.getMessageTypes().get(0).getName());</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   Descriptor messageType=fileDescr.getMessageTypes().get(0);</span></div>
<div><span style="font-family: Courier New; color: #3f7f5f; font-size: 10pt;">// read and parse incomming message</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   input = </span><span style="font-family: Courier New; color: #7f0055; font-size: 10pt;"><strong>new</strong></span><span style="font-family: Courier New; font-size: 10pt;"> FileInputStream(</span><span style="font-family: Courier New; color: #0000c0; font-size: 10pt;"><em>messagePath);</em></span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   DynamicMessage dm = DynamicMessage.<em>parseFrom</em>(messageType, input);</span></div>
<div><span style="font-family: Courier New; color: #3f7f5f; font-size: 10pt;">// output fields from message</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   Iterator&lt;FieldDescriptor&gt; i = messageType.getFields().iterator();</span></div>
<div><span style="font-family: Courier New; color: #7f0055; font-size: 10pt;"><strong>while</strong></span><span style="font-family: Courier New; font-size: 10pt;"> (i.hasNext()) {</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">    FieldDescriptor field = i.next();</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">    System.</span><span style="font-family: Courier New; color: #0000c0; font-size: 10pt;"><em>out</em></span><span style="font-family: Courier New; font-size: 10pt;">.println(messageType.getName() + </span><span style="font-family: Courier New; color: #2a00ff; font-size: 10pt;">"."</span><span style="font-family: Courier New; font-size: 10pt;"> + field.getName() + </span><span style="font-family: Courier New; color: #2a00ff; font-size: 10pt;">" value="</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">      + dm.getField(field) + </span><span style="font-family: Courier New; color: #2a00ff; font-size: 10pt;">" type="</span><span style="font-family: Courier New; font-size: 10pt;"> + field.getJavaType());</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">   }</span></div>
<div><span style="font-family: Courier New; font-size: 10pt;">So, output of code:</span></div>
File name = addressbook.proto
Message type = Person
Person.name value=Viktor Villari type=STRING
Person.id value=42 type=INT
Person.email value=test_email@gmail.com type=STRING
Person.phone value= type=MESSAGE
<span style="font-family: Courier New; font-size: 10pt;"></span></pre><pre><span style="font-family: Courier New; font-size: 10pt;"><strong>Resume</strong>: using this technique you able to build dynamic message parsing without increase size of each message.</span></pre></div> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2011/06/25/flexible-protocol-buffer/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>RSS потоки с форума DoubleBrick</title><link>http://look-in.net/2011/04/17/rss-doublebrick/</link> <comments>http://look-in.net/2011/04/17/rss-doublebrick/#comments</comments> <pubDate>Sun, 17 Apr 2011 11:31:22 +0000</pubDate> <dc:creator>slookin</dc:creator> <category><![CDATA[WebDev]]></category> <category><![CDATA[nxt]]></category> <category><![CDATA[projects]]></category> <category><![CDATA[lego]]></category> <category><![CDATA[rss]]></category> <guid
isPermaLink="false">http://look-in.net/?p=450</guid> <description><![CDATA[Всем добрый день!
Как и все разработчики, я готов потратить несколько часов сейчас, что бы потом получить дополнительные удобства и экономию времени. Так и сейчас, вместо того что бы регулярно читать форум &#8211; настроил RSS потоки, которые содержат основные обновления. Пользуйтесь, может и вам будет полезно:
DoubleBrick Творчество/технический
http://feeds.feedburner.com/doublebrick_creative_technic
RSS с форума http://www.doublebrick.ru/forums/. Работы участников форума, технический подраздел.
DoubleBrick &#171;Технодром&#187;
http://feeds.feedburner.com/doublebrick_technic
RSS [...]]]></description> <content:encoded><![CDATA[<p>Всем добрый день!</p><p>Как и все разработчики, я готов потратить несколько часов сейчас, что бы потом получить дополнительные удобства и экономию времени. Так и сейчас, вместо того что бы регулярно читать форум &#8211; настроил RSS потоки, которые содержат основные обновления. Пользуйтесь, может и вам будет полезно:</p><div><table
border="0" cellspacing="0" cellpadding="4" width="60%" align="center"><tbody><tr
style="background-color: #a6b7c7;" valign="middle"><td><a
href="http://feeds.feedburner.com/doublebrick_creative_technic" target="_blank"><img
src="http://look-in.net/wp-includes/images/rss.png" border="0" alt="rss" width="14" height="14" align="bottom" /></a></td><td>DoubleBrick Творчество/технический</td><td><a
href="http://feeds.feedburner.com/doublebrick_creative_technic" target="_blank">http://feeds.feedburner.com/doublebrick_creative_technic</a></td><td>RSS с форума http://www.doublebrick.ru/forums/. Работы участников форума, технический подраздел.</td></tr><tr
style="background-color: #f0f0f0;" valign="middle"><td><a
href="http://feeds.feedburner.com/doublebrick_technic" target="_blank"><img
src="http://look-in.net/wp-includes/images/rss.png" border="0" alt="rss" width="14" height="14" align="bottom" /></a></td><td>DoubleBrick &laquo;Технодром&raquo;</td><td><a
href="http://feeds.feedburner.com/doublebrick_technic">http://feeds.feedburner.com/doublebrick_technic</a></td><td>RSS c форума http://www.doublebrick.ru/forums/. Lego Technic &#8211; интересные решения и вопросы.</td></tr><tr
style="background-color: #a6b7c7;" valign="middle"><td><a
href="http://feeds.feedburner.com/doublebrick_buy" target="_blank"><img
src="http://look-in.net/wp-includes/images/rss.png" border="0" alt="rss" width="14" height="14" align="bottom" /></a></td><td>DoubleBrick &laquo;Куплю&raquo;</td><td><a
href="http://feeds.feedburner.com/doublebrick_buy" target="_blank">http://feeds.feedburner.com/doublebrick_buy</a></td><td>RSS c форума http://www.doublebrick.ru/forums/. О прокупке наборов и деталей лего.</td></tr><tr
style="background-color: #f0f0f0;" valign="middle"><td><a
href="http://feeds.feedburner.com/doublebrick_sell" target="_blank"><img
src="http://look-in.net/wp-includes/images/rss.png" border="0" alt="rss" width="14" height="14" align="bottom" /></a></td><td>DoubleBrick &laquo;Продам&raquo;</td><td><a
href="http://feeds.feedburner.com/doublebrick_sell">http://feeds.feedburner.com/doublebrick_sell</a></td><td>RSS c форума http://www.doublebrick.ru/forums/. О продаже наборов лего.</td></tr><tr
style="background-color: #a6b7c7;" valign="middle"><td><a
href="http://feeds.feedburner.com/doublebrick_sell_parts" target="_blank"><img
src="http://look-in.net/wp-includes/images/rss.png" border="0" alt="rss" width="14" height="14" align="bottom" /></a></td><td>DoubleBrick &laquo;Продам детали&raquo;</td><td><a
href="http://feeds.feedburner.com/doublebrick_sell_parts" target="_blank">http://feeds.feedburner.com/doublebrick_sell_parts</a></td><td>RSS c форума http://www.doublebrick.ru/forums/. О продаже деталей лего.</td></tr></tbody></table></div><p><span
id="more-450"></span></p><p><strong>RSS</strong> — семейство <a
href="http://ru.wikipedia.org/wiki/XML">XML</a>-форматов, предназначенных для описания лент новостей, <a
title="Анонс" href="http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%BE%D0%BD%D1%81">анонсов</a> статей, изменений в <a
title="Блог" href="http://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D0%B3">блогах</a> и т. п. Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде специальными <a
title="RSS-агрегатор" href="http://ru.wikipedia.org/wiki/RSS-%D0%B0%D0%B3%D1%80%D0%B5%D0%B3%D0%B0%D1%82%D0%BE%D1%80">программами-агрегаторами</a>.</p><p><strong>Лего</strong> &#8211; Основой наборов является <em>кирпичик LEGO</em> — деталь, представляющая собой полый пластмассовый блок, соединяющийся с другими такими же кирпичиками на <a
class="new" title="Шип (техника) (страница отсутствует)" href="http://ru.wikipedia.org/w/index.php?title=%D0%A8%D0%B8%D0%BF_%28%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0%29&#038;action=edit&#038;redlink=1">шипах</a>. В наборы также могут входить множество других деталей: фигурки людей и животных, колёса и т.д. Существуют наборы, в которые входят электродвигатели, различного рода датчики и даже <a
title="Микроконтроллер" href="http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80">микроконтроллеры</a>. Наборы позволяют собирать модели автомобилей, самолётов, кораблей, зданий, роботов. Воплощает идею <a
title="Модульность" href="http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C">модульности</a>, наглядно демонстрирующий детям то, как можно решать некоторые технические проблемы, также прививает навыки <a
title="Сборка" href="http://ru.wikipedia.org/wiki/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0">сборки</a>, <a
title="Ремонт" href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BC%D0%BE%D0%BD%D1%82">ремонта</a> и разборки <a
title="Техника" href="http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0">техники</a>).</p> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2011/04/17/rss-doublebrick/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Statistics from RequisitePro via RPX</title><link>http://look-in.net/2010/11/08/statistics-from-requisitepro-via-rpx/</link> <comments>http://look-in.net/2010/11/08/statistics-from-requisitepro-via-rpx/#comments</comments> <pubDate>Sun, 07 Nov 2010 21:34:15 +0000</pubDate> <dc:creator>slookin</dc:creator> <category><![CDATA[java]]></category> <category><![CDATA[projects]]></category> <category><![CDATA[requistepro]]></category> <category><![CDATA[rpx]]></category> <guid
isPermaLink="false">http://look-in.net/?p=382</guid> <description><![CDATA[
I&#8217;m spent this long weekend for study RXP protocol which IBM recommend to communicate with IBM Rational RequisitePro.
As I know java, I decide to write small utility on Java RPX. I was my mistake, because IBM Java RPX is worst API which I sow in last years. Methods like OpenProject(arg0, arg1, arg2, arg3, arg4, [...]]]></description> <content:encoded><![CDATA[<p
style="text-align: center;"><a
href="http://look-in.net/wp-content/uploads/2010/11/screen.png" class="thickbox no_icon" rel="gallery-382" title="screen"><img
class="size-full wp-image-383 aligncenter" title="screen" src="http://look-in.net/wp-content/uploads/2010/11/screen.png" alt="" width="404" height="247" /></a></p><p>I&#8217;m spent this long weekend for study RXP protocol which IBM recommend to communicate with<a
href="http://www-01.ibm.com/software/awdtools/reqpro/" target="_blank"> IBM Rational RequisitePro</a>. <span
id="more-382"></span></p><p>As I know java, I decide to write small utility on Java <a
href="http://www.ibm.com/developerworks/rational/library/445.html#N10045" target="_blank">RPX</a>. I was my mistake, because IBM Java RPX is worst API which I sow in last years. Methods like OpenProject(arg0, arg1, arg2, arg3, arg4, arg5) make me crazy.</p><p>As result I use VBA RPX API as reference and Java RPX API just as implementation.</p><p>In any case, result of my homework &#8211; I&#8217;m able to build statistics based on RequisirePro repository about how often I change requirements in project. It helps me to analyse time when my requirements set is stable and ready for implementation. Also this simple chart show me which external actions affect requirements (architecture overview stage, review requirements by development team or test team).</p><p>In my next step I going to implement RSS stream for all requirements changes in project scope, it should help my team follow in any changes in product in frame iterative process.</p> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2010/11/08/statistics-from-requisitepro-via-rpx/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Prestashop: Изменения в базовых модулях</title><link>http://look-in.net/2010/06/15/cart-lefcolumn-hook/</link> <comments>http://look-in.net/2010/06/15/cart-lefcolumn-hook/#comments</comments> <pubDate>Tue, 15 Jun 2010 20:00:34 +0000</pubDate> <dc:creator>slookin</dc:creator> <category><![CDATA[WebDev]]></category> <category><![CDATA[projects]]></category> <category><![CDATA[module]]></category> <category><![CDATA[prestashop]]></category> <guid
isPermaLink="false">http://look-in.net/?p=367</guid> <description><![CDATA[Для одного из сайтов понадобилось перенести несколько модулей из правой колонки в левую. (в частности blockcart &#8211; корзину покупателя)
В базовом функционале модули этого не делали.
Исправить просто, надо добавить регистрацию модуля для нового (левого) &#171;хука&#187; и переустановить модуль.
$this-&#62;registerHook('rightColumn')
Для двух модулей (корзина, и модуль скидок), я эти изменения сделал &#8211; можно скачать здесь.
blockcart.zip
blockspecials.zip
PS базировался на последней на [...]]]></description> <content:encoded><![CDATA[<p>Для одного из сайтов понадобилось перенести несколько модулей из правой колонки в левую. (в частности blockcart &#8211; корзину покупателя)</p><p>В базовом функционале модули этого не делали.</p><p><span
id="more-367"></span>Исправить просто, надо добавить регистрацию модуля для нового (левого) &laquo;хука&raquo; и переустановить модуль.</p><pre>$this-&gt;registerHook('rightColumn')</pre><p>Для двух модулей (корзина, и модуль скидок), я эти изменения сделал &#8211; можно скачать здесь.</p><p><a
href="http://look-in.net/wp-content/uploads/2010/06/blockcart.zip " target="_self">blockcart.zip</a><br
/> <a
href="http://look-in.net/wp-content/uploads/2010/06/blockcart.zip " target="_self">blockspecials.zip</a></p><p>PS базировался на последней на данный момент версии prestashop 1.3.1</p> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2010/06/15/cart-lefcolumn-hook/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Поддержка товаров с ценой &#171;по запросу&#187;. prestashop.</title><link>http://look-in.net/2010/04/11/podderzhka-tovarov-s-tsenoy-po-zaprosu-prestashop/</link> <comments>http://look-in.net/2010/04/11/podderzhka-tovarov-s-tsenoy-po-zaprosu-prestashop/#comments</comments> <pubDate>Sun, 11 Apr 2010 09:35:36 +0000</pubDate> <dc:creator>slookin</dc:creator> <category><![CDATA[WebDev]]></category> <category><![CDATA[projects]]></category> <category><![CDATA[php]]></category> <category><![CDATA[prestashop]]></category> <category><![CDATA[smarty]]></category> <guid
isPermaLink="false">http://look-in.net/?p=338</guid> <description><![CDATA[
В магазине wo-da.ru появилась необходимость корректно отображать товары, цена на которые не известна на данный момент, и требует согласования по телефону. (Это особенность дистрибьютерского бизнеса для дорогих артикулов).
Дабы минимизировать изменения в коде prestashop было решено:
1) для товаров цена накоторые неизвестна  ставить цену 0 (у нас нет бесплатных товаров, поэтому нету и конфликтов)
2) для тех товаров [...]]]></description> <content:encoded><![CDATA[<p
style="text-align: center;"><img
class="size-full wp-image-342  aligncenter" style="margin-top: 20px; margin-bottom: 20px;" title="Prestashop. Товар под заказ" src="http://look-in.net/wp-content/uploads/2010/04/screen.png" alt="" width="540" height="151" /></p><p>В магазине <a
href="http://wo-da.ru" target="_blank">wo-da.ru</a> появилась необходимость корректно отображать товары, цена на которые не известна на данный момент, и требует согласования по телефону. (Это особенность дистрибьютерского бизнеса для дорогих артикулов).</p><p>Дабы минимизировать изменения в коде prestashop было решено:</p><p>1) для товаров цена накоторые неизвестна  ставить цену <span
style="color: #ff0000;">0</span> (у нас нет бесплатных товаров, поэтому нету и конфликтов)</p><p>2) для тех товаров у которых цена<span
style="color: #ff0000;"> 0</span> &#8211; в шаблонах сделать допольнительную обработку и не отображать цену и кнопку &laquo;добавить в корзину&raquo;.</p><p><span
id="more-338"></span>измененные файлы:</p><p>product-list.tpl</p><pre>{if isset($products)}
 &lt;!-- Products list --&gt;
 &lt;ul id="product_list"&gt;
 {foreach from=$products item=product name=products}
 &lt;li&gt;
 &lt;div&gt;
 &lt;span&gt;{if ($product.allow_oosp OR $product.quantity &gt; 0)}{l s='Available'}{else}{l s='Out of stock'}{/if}&lt;/span&gt;
 &lt;a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}"&gt;&lt;img src="{$link-&gt;getImageLink($product.link_rewrite, $product.id_image, 'home')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" /&gt;&lt;/a&gt;
 &lt;h3&gt;{if $product.new == 1}&lt;span&gt;{l s='new'}&lt;/span&gt;{/if}&lt;a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.legend|escape:'htmlall':'UTF-8'}"&gt;{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}&lt;/a&gt;&lt;/h3&gt;
 &lt;p&gt;&lt;a href="{$product.link|escape:'htmlall':'UTF-8'}"&gt;{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}&lt;/a&gt;&lt;/p&gt;
 &lt;/div&gt;
 &lt;div&gt;
 {if $product.on_sale}
 &lt;span&gt;{l s='On sale!'}&lt;/span&gt;
 {elseif ($product.reduction_price != 0 || $product.reduction_percent != 0) &amp;&amp; ($product.reduction_from == $product.reduction_to OR ($smarty.now|date_format:'%Y-%m-%d' &lt;= $product.reduction_to &amp;&amp; $smarty.now|date_format:'%Y-%m-%d' &gt;= $product.reduction_from))}
 &lt;span&gt;{l s='Price lowered!'}&lt;/span&gt;
 {/if}
 <span style="color: #ff0000;">{if $product.price!=0}
</span> {if !$priceDisplay || $priceDisplay == 2}&lt;div&gt;&lt;span style="display: inline;"&gt;{convertPrice price=$product.price}&lt;/span&gt;{if $priceDisplay == 2} {l s='+Tx'}{/if}&lt;/div&gt;{/if}
 {if $priceDisplay}&lt;div&gt;&lt;span style="display: inline;"&gt;{convertPrice price=$product.price_tax_exc}&lt;/span&gt;{if $priceDisplay == 2} {l s='-Tx'}{/if}&lt;/div&gt;{/if}
 {if ($product.allow_oosp OR $product.quantity &gt; 0) &amp;&amp; $product.customizable != 2}
 &lt;a rel="ajax_id_product_{$product.id_product|intval}" href="{$base_dir}cart.php?add&amp;amp;id_product={$product.id_product|intval}&amp;amp;token={$static_token}"&gt;{l s='Add to cart'}&lt;/a&gt;
 {else}
 &lt;span&gt;{l s='Add to cart'}&lt;/span&gt;
 {/if}
 <span style="color: #ff0000;">{else}
 &lt;div&gt;&lt;span style="display: inline;"&gt;{l s='Advance order'}&lt;/span&gt;&lt;/div&gt;
 &lt;div&gt;&lt;span &gt;{l s='Call by phone'}&lt;/span&gt;&lt;/div&gt;                         �
 {/if}
</span>
 &lt;a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}"&gt;{l s='View'}&lt;/a&gt;
 &lt;/div&gt;
 &lt;br/&gt;
 &lt;/li&gt;
 {/foreach}
 &lt;/ul&gt;
 &lt;!-- /Products list --&gt;
{/if}</pre><p>product.tpl</p><pre>{include file=$tpl_dir./errors.tpl}
{if $errors|@count == 0}
&lt;script type="text/javascript"&gt;
// &lt;![CDATA[
// PrestaShop internal settings
var currencySign = '{$currencySign|html_entity_decode:2:"UTF-8"}';
var currencyRate = '{$currencyRate|floatval}';
var currencyFormat = '{$currencyFormat|intval}';
var currencyBlank = '{$currencyBlank|intval}';
var taxRate = {$product-&gt;tax_rate|floatval};
var jqZoomEnabled = {if $jqZoomEnabled}true{else}false{/if};
//JS Hook
var oosHookJsCodeFunctions = new Array();
// Parameters
var id_product = '{$product-&gt;id|intval}';
var productHasAttributes = {if isset($groups)}true{else}false{/if};
var quantitiesDisplayAllowed = {if $display_qties == 1}true{else}false{/if};
var quantityAvailable = {if $display_qties == 1 &amp;&amp; $product-&gt;quantity}{$product-&gt;quantity}{else}0{/if};
var allowBuyWhenOutOfStock = {if $allow_oosp == 1}true{else}false{/if};
var availableNowValue = '{$product-&gt;available_now|escape:'quotes':'UTF-8'}';
var availableLaterValue = '{$product-&gt;available_later|escape:'quotes':'UTF-8'}';
var productPriceWithoutReduction = {$product-&gt;getPriceWithoutReduct()|default:'null'};
var reduction_percent = {if $product-&gt;reduction_percent}{$product-&gt;reduction_percent}{else}0{/if};
var reduction_price = {if $product-&gt;reduction_percent}0{else}{$product-&gt;getPrice(true, $smarty.const.NULL, 2, $smarty.const.NULL, true)}{/if};
var reduction_from = '{$product-&gt;reduction_from}';
var reduction_to = '{$product-&gt;reduction_to}';
var group_reduction = '{$group_reduction}';
var default_eco_tax = {$product-&gt;ecotax};
var currentDate = '{$smarty.now|date_format:'%Y-%m-%d'}';
var maxQuantityToAllowDisplayOfLastQuantityMessage = {$last_qties};
var noTaxForThisProduct = {if $no_tax == 1}true{else}false{/if};
var displayPrice = {$priceDisplay};
// Customizable field
var img_ps_dir = '{$img_ps_dir}';
var customizationFields = new Array();
{assign var='imgIndex' value=0}
{assign var='textFieldIndex' value=0}
{foreach from=$customizationFields item='field' name='customizationFields'}
{assign var='key' value='pictures_'|cat:$product-&gt;id|cat:'_'|cat:$field.id_customization_field}
	customizationFields[{$smarty.foreach.customizationFields.index|intval}] = new Array();
	customizationFields[{$smarty.foreach.customizationFields.index|intval}][0] = '{if $field.type|intval == 0}img{$imgIndex++}{else}textField{$textFieldIndex++}{/if}';
	customizationFields[{$smarty.foreach.customizationFields.index|intval}][1] = {if $field.type|intval == 0 AND $pictures.$key}2{else}{$field.required|intval}{/if};
{/foreach}
// Images
var img_prod_dir = '{$img_prod_dir}';
var combinationImages = new Array();
{foreach from=$combinationImages item='combination' key='combinationId' name='f_combinationImages'}
combinationImages[{$combinationId}] = new Array();
{foreach from=$combination item='image' name='f_combinationImage'}
combinationImages[{$combinationId}][{$smarty.foreach.f_combinationImage.index}] = {$image.id_image|intval};
{/foreach}
{/foreach}
combinationImages[0] = new Array();
{foreach from=$images item='image' name='f_defaultImages'}
combinationImages[0][{$smarty.foreach.f_defaultImages.index}] = {$image.id_image};
{/foreach}
// Translations
var doesntExist = '{l s='The product does not exist in this model. Please choose another.' js=1}';
var doesntExistNoMore = '{l s='This product is no longer in stock' js=1}';
var doesntExistNoMoreBut = '{l s='with those attributes but is available with others' js=1}';
var uploading_in_progress = '{l s='Uploading in progress, please wait...' js=1}';
var fieldRequired = '{l s='Please fill all required fields' js=1}';
{if isset($groups)}
	// Combinations
	{foreach from=$combinations key=idCombination item=combination}
		addCombination({$idCombination|intval}, new Array({$combination.list}), {$combination.quantity}, {$combination.price}, {$combination.ecotax}, {$combination.id_image}, '{$combination.reference|addslashes}');
	{/foreach}
	// Colors
	{if $colors|@count &gt; 0}
		{if $product-&gt;id_color_default}var id_color_default = {$product-&gt;id_color_default|intval};{/if}
	{/if}
{/if}
//]]&gt;
&lt;/script&gt;
{include file=$tpl_dir./breadcrumb.tpl}
&lt;div id="primary_block"&gt;
	&lt;h2&gt;{$product-&gt;name|escape:'htmlall':'UTF-8'}&lt;/h2&gt;
	{if $confirmation}
	&lt;p class="confirmation"&gt;
		{$confirmation}
	&lt;/p&gt;
	{/if}
	&lt;!-- right infos--&gt;
	&lt;div id="pb-right-column"&gt;
		&lt;!-- product img--&gt;
		&lt;div id="image-block"&gt;
		{if $have_image}
				&lt;img src="{$link-&gt;getImageLink($product-&gt;link_rewrite, $cover.id_image, 'large')}" {if $jqZoomEnabled}class="jqzoom" alt="{$link-&gt;getImageLink($product-&gt;link_rewrite, $cover.id_image, 'thickbox')}"{else} title="{$product-&gt;name|escape:'htmlall':'UTF-8'}" alt="{$product-&gt;name|escape:'htmlall':'UTF-8'}" {/if} id="bigpic"/&gt;
		{else}
			&lt;img src="{$img_prod_dir}{$lang_iso}-default-large.jpg" alt="" title="{$product-&gt;name|escape:'htmlall':'UTF-8'}" /&gt;
		{/if}
		&lt;/div&gt;
		{if count($images) &gt; 0}
		&lt;!-- thumbnails --&gt;
		&lt;div id="views_block" {if count($images) &lt; 2}class="hidden"{/if}&gt;
		{if count($images) &gt; 3}&lt;span class="view_scroll_spacer"&gt;&lt;a id="view_scroll_left" class="hidden" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}"&gt;{l s='Previous'}&lt;/a&gt;&lt;/span&gt;{/if}
		&lt;div id="thumbs_list"&gt;
			&lt;ul style="width: {math equation="width * nbImages" width=80 nbImages=$images|@count}px" id="thumbs_list_frame"&gt;
				{foreach from=$images item=image name=thumbnails}
				{assign var=imageIds value=`$product-&gt;id`-`$image.id_image`}
				&lt;li id="thumbnail_{$image.id_image}"&gt;
					&lt;a href="{$link-&gt;getImageLink($product-&gt;link_rewrite, $imageIds, 'thickbox')}" rel="other-views" class="{if !$jqZoomEnabled}thickbox{/if} {if $smarty.foreach.thumbnails.first}shown{/if}" title="{$image.legend|htmlspecialchars}"&gt;
						&lt;img id="thumb_{$image.id_image}" src="{$link-&gt;getImageLink($product-&gt;link_rewrite, $imageIds, 'medium')}" alt="{$image.legend|htmlspecialchars}" height="{$mediumSize.height}" width="{$mediumSize.width}" /&gt;
					&lt;/a&gt;
				&lt;/li&gt;
				{/foreach}
			&lt;/ul&gt;
		&lt;/div&gt;
		{if count($images) &gt; 3}&lt;a id="view_scroll_right" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}"&gt;{l s='Next'}&lt;/a&gt;{/if}
		&lt;/div&gt;
		{/if}
		{if count($images) &gt; 1}&lt;p class="align_center clear"&gt;&lt;a id="resetImages" href="{$link-&gt;getProductLink($product)}" onclick="return (false);"&gt;{l s='Display all pictures'}&lt;/a&gt;&lt;/p&gt;{/if}
		&lt;!-- usefull links--&gt;
		&lt;ul id="usefull_link_block"&gt;
			{if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if}
			&lt;li&gt;&lt;a href="javascript:print();"&gt;{l s='Print'}&lt;/a&gt;&lt;br class="clear" /&gt;&lt;/li&gt;
			{if $have_image &amp;&amp; !$jqZoomEnabled}
			&lt;li&gt;&lt;span id="view_full_size" class="span_link"&gt;{l s='View full size'}&lt;/span&gt;&lt;/li&gt;
			{/if}
		&lt;/ul&gt;
	&lt;/div&gt;
	&lt;!-- left infos--&gt;
	&lt;div id="pb-left-column"&gt;
		{if $product-&gt;description_short OR $packItems|@count &gt; 0}
		&lt;div id="short_description_block"&gt;
			{if $product-&gt;description_short}
				&lt;div id="short_description_content" class="rte align_justify"&gt;{$product-&gt;description_short}&lt;/div&gt;
			{/if}
			{if $product-&gt;description}
			&lt;p class="buttons_bottom_block"&gt;&lt;a href="javascript:{ldelim}{rdelim}" class="button"&gt;{l s='More details'}&lt;/a&gt;&lt;/p&gt;
			{/if}
			{if $packItems|@count &gt; 0}
				&lt;h3&gt;{l s='Pack content'}&lt;/h3&gt;
				{foreach from=$packItems item=packItem}
					&lt;div class="pack_content"&gt;
						{$packItem.pack_quantity} x &lt;a href="{$link-&gt;getProductLink($packItem.id_product, $packItem.link_rewrite, $packItem.category)}"&gt;{$packItem.name|escape:'htmlall':'UTF-8'}&lt;/a&gt;
						&lt;p&gt;{$packItem.description_short}&lt;/p&gt;
					&lt;/div&gt;
				{/foreach}
			{/if}
		&lt;/div&gt;
		{/if}
		{if $colors}
		&lt;!-- colors --&gt;
		&lt;div id="color_picker"&gt;
			&lt;p&gt;{l s='Pick a color:' js=1}&lt;/p&gt;
			&lt;div class="clear"&gt;&lt;/div&gt;
			&lt;ul id="color_to_pick_list"&gt;
			{foreach from=$colors key='id_attribute' item='color'}
				&lt;li&gt;&lt;a id="color_{$id_attribute|intval}" class="color_pick" style="background: {$color.value};" onclick="updateColorSelect({$id_attribute|intval});"&gt;{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}&lt;img src="{$img_col_dir}{$id_attribute}.jpg" alt="" title="{$color.name}" /&gt;{/if}&lt;/a&gt;&lt;/li&gt;
			{/foreach}
			&lt;/ul&gt;
				&lt;a id="color_all" onclick="updateColorSelect(0);"&gt;&lt;img src="{$img_dir}icon/cancel.gif" alt="" title="{$color.name}" /&gt;&lt;/a&gt;
			&lt;div class="clear"&gt;&lt;/div&gt;
		&lt;/div&gt;
		{/if}
		&lt;!-- add to cart form--&gt;
		<span style="color: #ff0000;">{if $product-&gt;getPrice(true, $smarty.const.NULL, 2)!=0}</span>
		&lt;form id="buy_block" action="{$base_dir}cart.php" method="post"&gt;
			&lt;!-- hidden datas --&gt;
			&lt;p class="hidden"&gt;
				&lt;input type="hidden" name="token" value="{$static_token}" /&gt;
				&lt;input type="hidden" name="id_product" value="{$product-&gt;id|intval}" id="product_page_product_id" /&gt;
				&lt;input type="hidden" name="add" value="1" /&gt;
				&lt;input type="hidden" name="id_product_attribute" id="idCombination" value="" /&gt;
			&lt;/p&gt;
			&lt;!-- prices --&gt;
			&lt;p class="price"&gt;
				{if $product-&gt;on_sale}
					&lt;img src="{$img_dir}onsale_{$lang_iso}.gif" alt="{l s='On sale'}" class="on_sale_img"/&gt;
					&lt;span class="on_sale"&gt;{l s='On sale!'}&lt;/span&gt;
				{elseif ($product-&gt;reduction_price != 0 || $product-&gt;reduction_percent != 0) &amp;&amp; ($product-&gt;reduction_from == $product-&gt;reduction_to OR ($smarty.now|date_format:'%Y-%m-%d' &lt;= $product-&gt;reduction_to &amp;&amp; $smarty.now|date_format:'%Y-%m-%d' &gt;= $product-&gt;reduction_from))}
					&lt;span class="discount"&gt;{l s='Price lowered!'}&lt;/span&gt;
				{/if}
				&lt;br /&gt;
				&lt;span class="our_price_display"&gt;
				{if !$priceDisplay || $priceDisplay == 2}
					&lt;span id="our_price_display"&gt;{convertPrice price=$product-&gt;getPrice(true, $smarty.const.NULL, 2)}&lt;/span&gt;
						{l s='tax incl.'}
				{/if}
				{if $priceDisplay == 1}
					&lt;span id="our_price_display"&gt;{convertPrice price=$product-&gt;getPrice(false, $smarty.const.NULL, 2)}&lt;/span&gt;
						{l s='tax excl.'}
				{/if}
				&lt;/span&gt;
				{if $priceDisplay == 2}
					&lt;br /&gt;
					&lt;span id="pretaxe_price"&gt;&lt;span id="pretaxe_price_display"&gt;{convertPrice price=$product-&gt;getPrice(false, $smarty.const.NULL, 2)}&lt;/span&gt;&amp;nbsp;{l s='tax excl.'}&lt;/span&gt;
				{/if}
				&lt;br /&gt;
			&lt;/p&gt;
			{if ($product-&gt;reduction_price != 0 || $product-&gt;reduction_percent != 0) &amp;&amp; ($product-&gt;reduction_from == $product-&gt;reduction_to OR ($smarty.now|date_format:'%Y-%m-%d' &lt;= $product-&gt;reduction_to &amp;&amp; $smarty.now|date_format:'%Y-%m-%d' &gt;= $product-&gt;reduction_from))}
				&lt;p id="old_price"&gt;&lt;span class="bold"&gt;
				{if !$priceDisplay || $priceDisplay == 2}
					&lt;span id="old_price_display"&gt;{convertPrice price=$product-&gt;getPriceWithoutReduct()}&lt;/span&gt;
						{l s='tax incl.'}
				{/if}
				{if $priceDisplay == 1}
					&lt;span id="old_price_display"&gt;{convertPrice price=$product-&gt;getPriceWithoutReduct(true)}&lt;/span&gt;
						{l s='tax excl.'}
				{/if}
				&lt;/span&gt;
				&lt;/p&gt;
			{/if}
			{if $product-&gt;reduction_percent != 0 &amp;&amp; ($product-&gt;reduction_from == $product-&gt;reduction_to OR ($smarty.now|date_format:'%Y-%m-%d' &lt;= $product-&gt;reduction_to &amp;&amp; $smarty.now|date_format:'%Y-%m-%d' &gt;= $product-&gt;reduction_from))}
				&lt;p id="reduction_percent"&gt;{l s='(price reduced by'} &lt;span id="reduction_percent_display"&gt;{$product-&gt;reduction_percent|floatval}&lt;/span&gt; %{l s=')'}&lt;/p&gt;
			{/if}
			{if $packItems|@count}
				&lt;p class="pack_price"&gt;{l s='instead of'} &lt;span style="text-decoration: line-through;"&gt;{convertPrice price=$product-&gt;getNoPackPrice()}&lt;/span&gt;&lt;/p&gt;
				&lt;br class="clear" /&gt;
			{/if}
			{if $product-&gt;ecotax != 0}
				&lt;p class="price-ecotax"&gt;{l s='include'} &lt;span id="ecotax_price_display"&gt;{convertPrice price=$product-&gt;ecotax}&lt;/span&gt; {l s='for green tax'}&lt;/p&gt;
			{/if}
			{if isset($groups)}
			&lt;!-- attributes --&gt;
			&lt;div id="attributes"&gt;
			{foreach from=$groups key=id_attribute_group item=group}
			&lt;p&gt;
				&lt;label for="group_{$id_attribute_group|intval}"&gt;{$group.name|escape:'htmlall':'UTF-8'} :&lt;/label&gt;
				{assign var='groupName' value='group_'|cat:$id_attribute_group}
				&lt;select name="{$groupName}" id="group_{$id_attribute_group|intval}" onchange="javascript:findCombination();"&gt;
					{foreach from=$group.attributes key=id_attribute item=group_attribute}
						&lt;option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) &amp;&amp; $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if}&gt;{$group_attribute|escape:'htmlall':'UTF-8'}&lt;/option&gt;
					{/foreach}
				&lt;/select&gt;
			&lt;/p&gt;
			{/foreach}
			&lt;/div&gt;
			{/if}
			{if $product-&gt;reference}&lt;p id="product_reference" {if isset($groups)}style="display:none;"{/if}&gt;&lt;label for="product_reference"&gt;{l s='Reference :'} &lt;/label&gt;&lt;span class="editable"&gt;{$product-&gt;reference|escape}&lt;/span&gt;&lt;/p&gt;{/if}
			&lt;!-- quantity wanted --&gt;
			&lt;p id="quantity_wanted_p"{if (!$allow_oosp &amp;&amp; $product-&gt;quantity == 0) || $virtual} style="display:none;"{/if}&gt;
				&lt;label&gt;{l s='Quantity :'}&lt;/label&gt;
				&lt;input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}1{/if}" size="2" maxlength="3" /&gt;
			&lt;/p&gt;
			&lt;!-- availability --&gt;
			&lt;p id="availability_statut"{if ($allow_oosp &amp;&amp; $product-&gt;quantity == 0 &amp;&amp; !$product-&gt;available_later) || (!$product-&gt;available_now &amp;&amp; $display_qties != 1) } style="display:none;"{/if}&gt;
				&lt;span id="availability_label"&gt;{l s='Availability:'}&lt;/span&gt;
				&lt;span id="availability_value"{if $product-&gt;quantity == 0} class="warning-inline"{/if}&gt;
					{if $product-&gt;quantity == 0}{if $allow_oosp}{$product-&gt;available_later}{else}{l s='This product is no longer in stock'}{/if}{else}{$product-&gt;available_now}{/if}
				&lt;/span&gt;
			&lt;/p&gt;
			&lt;!-- number of item in stock --&gt;
			&lt;p id="pQuantityAvailable"{if $display_qties != 1 || ($allow_oosp &amp;&amp; $product-&gt;quantity == 0)} style="display:none;"{/if}&gt;
				&lt;span id="quantityAvailable"&gt;{$product-&gt;quantity|intval}&lt;/span&gt;
				&lt;span{if $product-&gt;quantity &gt; 1} style="display:none;"{/if} id="quantityAvailableTxt"&gt;{l s='item in stock'}&lt;/span&gt;
				&lt;span{if $product-&gt;quantity &lt; 2} style="display:none;"{/if} id="quantityAvailableTxtMultiple"&gt;{l s='items in stock'}&lt;/span&gt;
			&lt;/p&gt;
			&lt;!-- Out of stock hook --&gt;
			&lt;p id="oosHook"{if $product-&gt;quantity &gt; 0} style="display:none;"{/if}&gt;
				{$HOOK_PRODUCT_OOS}
			&lt;/p&gt;
			&lt;p class="warning-inline" id="last_quantities"{if ($product-&gt;quantity &gt; $last_qties || $product-&gt;quantity == 0) || $allow_oosp} style="display:none;"{/if} &gt;{l s='Warning: Last items in stock!'}&lt;/p&gt;
			&lt;p{if !$allow_oosp &amp;&amp; $product-&gt;quantity == 0} style="display:none;"{/if} id="add_to_cart" class="buttons_bottom_block"&gt;&lt;input type="submit" name="Submit" value="{l s='Add to cart'}" class="exclusive" /&gt;&lt;/p&gt;
			{if $HOOK_PRODUCT_ACTIONS}
				{$HOOK_PRODUCT_ACTIONS}
			{/if}
		&lt;/form&gt;
				<span style="color: #ff0000;">{else}
				&lt;div&gt;&lt;span class="price" style="display: inline;"&gt;{l s='Advance order'}&lt;/span&gt;&lt;/div&gt;
				&lt;div&gt;&lt;span class="price-comments" &gt;{l s='Call by phone'}&lt;/span&gt;&lt;/div&gt;
				{/if}</span>
		{if $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if}
	&lt;/div&gt;
&lt;/div&gt;
&lt;br class="clear" /&gt;
{if $quantity_discounts}
&lt;!-- quantity discount --&gt;
&lt;ul class="idTabs"&gt;
	&lt;li&gt;&lt;a style="cursor: pointer"&gt;{l s='Quantity discount'}&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="quantityDiscount"&gt;
	&lt;table class="std"&gt;
			&lt;tr&gt;
				{foreach from=$quantity_discounts item='quantity_discount' name='quantity_discounts'}
				&lt;th&gt;{$quantity_discount.quantity|intval}
				{if $quantity_discount.quantity|intval &gt; 1}
					{l s='quantities'}
				{else}
					{l s='quantity'}
				{/if}
				&lt;/th&gt;
				{/foreach}
			&lt;/tr&gt;
			&lt;tr&gt;
				{foreach from=$quantity_discounts item='quantity_discount' name='quantity_discounts'}
				&lt;td&gt;
				{if $quantity_discount.id_discount_type|intval == 1}
					-{$quantity_discount.value|floatval}%
				{else}
					-{convertPrice price=$quantity_discount.value|floatval}
				{/if}
				&lt;/td&gt;
				{/foreach}
			&lt;/tr&gt;
	&lt;/table&gt;
&lt;/div&gt;
{/if}
{$HOOK_PRODUCT_FOOTER}
&lt;!-- description and features --&gt;
{if $product-&gt;description || $features || $accessories || $HOOK_PRODUCT_TAB || $attachments}
&lt;div id="more_info_block" class="clear"&gt;
	&lt;ul id="more_info_tabs" class="idTabs idTabsShort"&gt;
		{if $product-&gt;description}&lt;li&gt;&lt;a id="more_info_tab_more_info" href="#idTab1"&gt;{l s='More info'}&lt;/a&gt;&lt;/li&gt;{/if}
		{if $features}&lt;li&gt;&lt;a id="more_info_tab_data_sheet" href="#idTab2"&gt;{l s='Data sheet'}&lt;/a&gt;&lt;/li&gt;{/if}
		{if $attachments}&lt;li&gt;&lt;a id="more_info_tab_attachments" href="#idTab9"&gt;{l s='Download'}&lt;/a&gt;&lt;/li&gt;{/if}
		{if isset($accessories) AND $accessories}&lt;li&gt;&lt;a href="#idTab4"&gt;{l s='Accessories'}&lt;/a&gt;&lt;/li&gt;{/if}
		{$HOOK_PRODUCT_TAB}
	&lt;/ul&gt;
	&lt;div id="more_info_sheets" class="sheets align_justify"&gt;
	{if $product-&gt;description}
		&lt;!-- full description --&gt;
		&lt;div id="idTab1" class="rte"&gt;{$product-&gt;description}&lt;/div&gt;
	{/if}
	{if $features}
		&lt;!-- product's features --&gt;
		&lt;ul id="idTab2" class="bullet"&gt;
		{foreach from=$features item=feature}
			&lt;li&gt;&lt;span&gt;{$feature.name|escape:'htmlall':'UTF-8'}&lt;/span&gt; {$feature.value|escape:'htmlall':'UTF-8'}&lt;/li&gt;
		{/foreach}
		&lt;/ul&gt;
	{/if}
	{if $attachments}
		&lt;ul id="idTab9" class="bullet"&gt;
		{foreach from=$attachments item=attachment}
			&lt;li&gt;&lt;a href="{$base_dir}attachment.php?id_attachment={$attachment.id_attachment}"&gt;{$attachment.name|escape:'htmlall':'UTF-8'}&lt;/a&gt;&lt;br /&gt;{$attachment.description|escape:'htmlall':'UTF-8'}&lt;/li&gt;
		{/foreach}
		&lt;/ul&gt;
	{/if}
	{if isset($accessories) AND $accessories}
		&lt;!-- accessories --&gt;
		&lt;ul id="idTab4" class="bullet"&gt;
			&lt;div class="block products_block accessories_block"&gt;
				&lt;div class="block_content"&gt;
					&lt;ul&gt;
					{foreach from=$accessories item=accessory name=accessories_list}
						{assign var='accessoryLink' value=$link-&gt;getProductLink($accessory.id_product, $accessory.link_rewrite, $accessory.category)}
						&lt;li class="ajax_block_product {if $smarty.foreach.accessories_list.first}first_item{elseif $smarty.foreach.accessories_list.last}last_item{else}item{/if} product_accessories_description"&gt;
							&lt;h5 class="align_center"&gt;&lt;a href="{$accessoryLink|escape:'htmlall':'UTF-8'}"&gt;{$accessory.name|truncate:22:'...'|escape:'htmlall':'UTF-8'}&lt;/a&gt;&lt;/h5&gt;
							&lt;p class="product_desc"&gt;
								&lt;a href="{$accessoryLink|escape:'htmlall':'UTF-8'}" title="{$accessory.legend|escape:'htmlall':'UTF-8'}" class="product_image"&gt;&lt;img src="{$link-&gt;getImageLink($accessory.link_rewrite, $accessory.id_image, 'medium')}" alt="{$accessory.legend|escape:'htmlall':'UTF-8'}" /&gt;&lt;/a&gt;
								&lt;a href="{$accessoryLink|escape:'htmlall':'UTF-8'}" title="{l s='More'}" class="product_description"&gt;{$accessory.description_short|strip_tags|truncate:100:'...'}&lt;/a&gt;
							&lt;/p&gt;
							&lt;p class="product_accessories_price"&gt;
								&lt;span class="price"&gt;{displayWtPrice p=$accessory.price}&lt;/span&gt;
								&lt;a class="button" href="{$accessoryLink|escape:'htmlall':'UTF-8'}" title="{l s='View'}"&gt;{l s='View'}&lt;/a&gt;
								&lt;a class="button ajax_add_to_cart_button" href="{$base_dir}cart.php?qty=1&amp;amp;id_product={$accessory.id_product|intval}&amp;amp;token={$static_token}&amp;amp;add" rel="ajax_id_product_{$accessory.id_product|intval}" title="{l s='Add to cart'}"&gt;{l s='Add to cart'}&lt;/a&gt;
							&lt;/p&gt;
						&lt;/li&gt;
					{/foreach}
					&lt;/ul&gt;
				&lt;/div&gt;
			&lt;/div&gt;
			&lt;div class="clear"&gt;&lt;/div&gt;
		&lt;/ul&gt;
	{/if}
	{$HOOK_PRODUCT_TAB_CONTENT}
	&lt;/div&gt;
&lt;/div&gt;
{/if}
&lt;!-- Customizable products --&gt;
{if $product-&gt;customizable}
	&lt;ul class="idTabs"&gt;
		&lt;li&gt;&lt;a style="cursor: pointer"&gt;{l s='Product customization'}&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;div class="customization_block"&gt;
		&lt;form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm"&gt;
			&lt;p&gt;
				&lt;img src="{$img_dir}icon/infos.gif" alt="Informations" /&gt;
				{l s='After saving your customized product, do not forget to add it to your cart.'}
				{if $product-&gt;uploadable_files}&lt;br /&gt;{l s='Allowed file formats are: GIF, JPG, PNG'}{/if}
			&lt;/p&gt;
			{if $product-&gt;uploadable_files|intval}
			&lt;h2&gt;{l s='Pictures'}&lt;/h2&gt;
			&lt;ul id="uploadable_files"&gt;
				{counter start=0 assign='customizationField'}
				{foreach from=$customizationFields item='field' name='customizationFields'}
					{if $field.type == 0}
						&lt;li class="customizationUploadLine{if $field.required} required{/if}"&gt;{assign var='key' value='pictures_'|cat:$product-&gt;id|cat:'_'|cat:$field.id_customization_field}
							{if isset($pictures.$key)}&lt;div class="customizationUploadBrowse"&gt;&lt;img src="{$pic_dir}{$pictures.$key}_small" alt="" /&gt;&lt;a href="{$link-&gt;getUrlWith('deletePicture', $field.id_customization_field)}"&gt;&lt;img src="{$img_dir}icon/delete.gif" alt="{l s='delete'}" class="customization_delete_icon" /&gt;&lt;/a&gt;&lt;/div&gt;{/if}
							&lt;div class="customizationUploadBrowse"&gt;&lt;input type="file" name="file{$field.id_customization_field}" id="img{$customizationField}" class="customization_block_input {if isset($pictures.$key)}filled{/if}" /&gt;{if $field.required}&lt;sup&gt;*&lt;/sup&gt;{/if}
							&lt;div class="customizationUploadBrowseDescription"&gt;{if !empty($field.name)}{$field.name}{else}{l s='Please select an image file from your hard drive'}{/if}&lt;/div&gt;&lt;/div&gt;
						&lt;/li&gt;
						{counter}
					{/if}
				{/foreach}
			&lt;/ul&gt;
			{/if}
			&lt;div class="clear"&gt;&lt;/div&gt;
			{if $product-&gt;text_fields|intval}
			&lt;h2&gt;{l s='Texts'}&lt;/h2&gt;
			&lt;ul id="text_fields"&gt;
				{counter start=0 assign='customizationField'}
				{foreach from=$customizationFields item='field' name='customizationFields'}
					{if $field.type == 1}
						&lt;li class="customizationUploadLine{if $field.required} required{/if}"&gt;{assign var='key' value='textFields_'|cat:$product-&gt;id|cat:'_'|cat:$field.id_customization_field}
							{if !empty($field.name)}{$field.name}{/if}&lt;input type="text" name="textField{$field.id_customization_field}" id="textField{$customizationField}" value="{if isset($textFields.$key)}{$textFields.$key|stripslashes}{/if}" class="customization_block_input" /&gt;{if $field.required}&lt;sup&gt;*&lt;/sup&gt;{/if}
						&lt;/li&gt;
						{counter}
					{/if}
				{/foreach}
			&lt;/ul&gt;
			{/if}
			&lt;p style="clear: left;" id="customizedDatas"&gt;
				&lt;input type="hidden" name="quantityBackup" id="quantityBackup" value="" /&gt;
				&lt;input type="hidden" name="submitCustomizedDatas" value="1" /&gt;
				&lt;input type="button" class="button" value="{l s='Save'}" onclick="javascript:saveCustomization()" /&gt;
			&lt;/p&gt;
		&lt;/form&gt;
		&lt;p class="clear required"&gt;&lt;sup&gt;*&lt;/sup&gt; {l s='required fields'}&lt;/p&gt;
	&lt;/div&gt;
{/if}
{if $packItems|@count &gt; 0}
	&lt;div&gt;
		&lt;h2&gt;{l s='Pack content'}&lt;/h2&gt;
		{include file=$tpl_dir./product-list.tpl products=$packItems}
	&lt;/div&gt;
{/if}
{/if}</pre><p><strong>modules\homefeatured\homefeatured.tpl </strong></p><pre>&lt;!-- MODULE Home Featured Products --&gt;
&lt;div id="featured-products_block_center" class="block products_block"&gt;
	&lt;h4&gt;{l s='featured products' mod='homefeatured'}&lt;/h4&gt;
	{if isset($products) AND $products}
		&lt;div class="block_content"&gt;
			{assign var='liHeight' value=360}
			{assign var='nbItemsPerLine' value=4}
			{assign var='nbLi' value=$products|@count}
			{assign var='nbLines' value=$nbLi/$nbItemsPerLine|ceil}
			{assign var='ulHeight' value=$nbLines*$liHeight}
			&lt;ul style="" id="product_list"&gt;
			{foreach from=$products item=product name=homeFeaturedProducts}
				&lt;li class="ajax_block_product {if $smarty.foreach.homeFeaturedProducts.first}first_item{elseif $smarty.foreach.homeFeaturedProducts.last}last_item{else}item{/if} {if $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 0}last_item_of_line{elseif $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 1}first_item_of_line{/if} {if $smarty.foreach.homeFeaturedProducts.iteration &gt; ($smarty.foreach.homeFeaturedProducts.total - ($smarty.foreach.homeFeaturedProducts.total % $nbItemsPerLine))}last_line{/if}"&gt;
					&lt;div class="center_block"&gt;
					&lt;a href="{$product.link}" title="{$product.legend|escape:htmlall:'UTF-8'}" class="product_img_link"&gt;&lt;img src="{$link-&gt;getImageLink($product.link_rewrite, $product.id_image, 'home')}" height="{$homeSize.height}" width="{$homeSize.width}" alt="{$product.legend|escape:htmlall:'UTF-8'}" /&gt;&lt;/a&gt;
					&lt;h3&gt;&lt;a href="{$product.link}" title="{$product.name|escape:'htmlall':'UTF-8'}"&gt;{$product.name|escape:'htmlall':'UTF-8'}&lt;/a&gt;&lt;/h3&gt;
					&lt;p class="product_desc"&gt;&lt;a href="{$product.link}" title="{l s='More' mod='homefeatured'}"&gt;{$product.description_short|strip_tags|truncate:270:'...'}&lt;/a&gt;&lt;/p&gt;
					&lt;div class="right_block"&gt;
					{if !$priceDisplay || $priceDisplay == 2}&lt;p class="price_container"&gt;&lt;span class="price"&gt;{convertPrice price=$product.price}&lt;/span&gt;{if $priceDisplay == 2} {l s='+Tx' mod='homefeatured'}{/if}&lt;/p&gt;{/if}
					        {php}
						  $tmp_product=$this-&gt;get_template_vars("product");
                                                  $price_wo_discount=Product::getPriceWithoutReductStatic($tmp_product["id_product"]);
						  $this-&gt;assign('price_wo_discount',$price_wo_discount);
					        {/php}
 			                    <span style="color: #ff0000;">{if $product.price!=0}</span>
						{if $priceDisplay}
  						  {if $product.price_tax_exc!=$price_wo_discount}
                                                    &lt;p class="price_container"&gt;&lt;span class="on_sale"&gt;{l s='On sale!'}&lt;/span&gt;&lt;span style="text-decoration: line-through;" class="old_price_display"&gt;{convertPrice price=$price_wo_discount}&lt;/span&gt;&lt;/p&gt;&lt;span class="price"&gt;{convertPrice price=$product.price_tax_exc}&lt;/span&gt;{if $priceDisplay == 2} {l s='-Tx' mod='homefeatured'}{/if}&lt;/p&gt;
        					  {else}
                                                    &lt;p class="price_container"&gt;&lt;span class="price"&gt;{convertPrice price=$product.price_tax_exc}&lt;/span&gt;{if $priceDisplay == 2} {l s='-Tx' mod='homefeatured'}{/if}&lt;/p&gt;
						   {/if}
						{/if}
   						    &lt;a class="button" href="{$product.link}" title="{l s='View' mod='homefeatured'}"&gt;{l s='View' mod='homefeatured'}&lt;/a&gt;
						    {if ($product.quantity &gt; 0 OR $product.allow_oosp) AND $product.customizable != 2}
						    &lt;a class="exclusive ajax_add_to_cart_button" rel="ajax_id_product_{$product.id_product}" href="{$base_dir}cart.php?qty=1&amp;amp;id_product={$product.id_product}&amp;amp;token={$static_token}&amp;amp;add" title="{l s='Add to cart' mod='homefeatured'}"&gt;{l s='Add to cart' mod='homefeatured'}&lt;/a&gt;
						   {else}
						    &lt;span class="exclusive"&gt;{l s='Add to cart' mod='homefeatured'}&lt;/span&gt;
						{/if}
			  		    <span style="color: #ff0000;">{else}
					       &lt;div&gt;&lt;span class="price" style="display: inline;"&gt;{l s='Advance order' mod='homefeatured'}&lt;/span&gt;&lt;/div&gt;
				               &lt;div&gt;&lt;span class="price-comments" &gt;{l s='Call by phone' mod='homefeatured'}&lt;/span&gt;&lt;/div&gt;
	    &lt;a class="button" href="{$product.link}" title="{l s='View' mod='homefeatured'}"&gt;{l s='View' mod='homefeatured'}&lt;/a&gt;
				            {/if}
</span>
					&lt;/div&gt;
				        &lt;/div&gt;
				&lt;/li&gt;
			{/foreach}
			&lt;/ul&gt;
		&lt;/div&gt;
	{else}
		&lt;p&gt;{l s='No featured products' mod='homefeatured'}&lt;/p&gt;
	{/if}
&lt;/div&gt;
&lt;!-- /MODULE Home Featured Products --&gt;</pre><p>Так же надо добавить новые сообщения в файлы локализации, и форматирование в файл сss.</p><div
id="_mcePaste" style="position: absolute; left: -10000px; top: 312px; width: 1px; height: 1px; overflow: hidden;">{include file=$tpl_dir./errors.tpl}<br
/> {if $errors|@count == 0}<br
/> &lt;script type=&raquo;text/javascript&raquo;&gt;<br
/> // &lt;![CDATA[</p><p>// PrestaShop internal settings<br
/> var currencySign = '{$currencySign|html_entity_decode:2:"UTF-8"}';<br
/> var currencyRate = '{$currencyRate|floatval}';<br
/> var currencyFormat = '{$currencyFormat|intval}';<br
/> var currencyBlank = '{$currencyBlank|intval}';<br
/> var taxRate = {$product-&gt;tax_rate|floatval};<br
/> var jqZoomEnabled = {if $jqZoomEnabled}true{else}false{/if};</p><p>//JS Hook<br
/> var oosHookJsCodeFunctions = new Array();</p><p>// Parameters<br
/> var id_product = '{$product-&gt;id|intval}';<br
/> var productHasAttributes = {if isset($groups)}true{else}false{/if};<br
/> var quantitiesDisplayAllowed = {if $display_qties == 1}true{else}false{/if};<br
/> var quantityAvailable = {if $display_qties == 1 &amp;&amp; $product-&gt;quantity}{$product-&gt;quantity}{else}0{/if};<br
/> var allowBuyWhenOutOfStock = {if $allow_oosp == 1}true{else}false{/if};<br
/> var availableNowValue = '{$product-&gt;available_now|escape:'quotes':'UTF-8'}';<br
/> var availableLaterValue = '{$product-&gt;available_later|escape:'quotes':'UTF-8'}';<br
/> var productPriceWithoutReduction = {$product-&gt;getPriceWithoutReduct()|default:'null'};<br
/> var reduction_percent = {if $product-&gt;reduction_percent}{$product-&gt;reduction_percent}{else}0{/if};<br
/> var reduction_price = {if $product-&gt;reduction_percent}0{else}{$product-&gt;getPrice(true, $smarty.const.NULL, 2, $smarty.const.NULL, true)}{/if};<br
/> var reduction_from = '{$product-&gt;reduction_from}';<br
/> var reduction_to = '{$product-&gt;reduction_to}';<br
/> var group_reduction = '{$group_reduction}';<br
/> var default_eco_tax = {$product-&gt;ecotax};<br
/> var currentDate = '{$smarty.now|date_format:'%Y-%m-%d'}';<br
/> var maxQuantityToAllowDisplayOfLastQuantityMessage = {$last_qties};<br
/> var noTaxForThisProduct = {if $no_tax == 1}true{else}false{/if};<br
/> var displayPrice = {$priceDisplay};</p><p>// Customizable field<br
/> var img_ps_dir = '{$img_ps_dir}';<br
/> var customizationFields = new Array();<br
/> {assign var='imgIndex' value=0}<br
/> {assign var='textFieldIndex' value=0}<br
/> {foreach from=$customizationFields item='field' name='customizationFields'}<br
/> {assign var='key' value='pictures_'|cat:$product-&gt;id|cat:'_'|cat:$field.id_customization_field}<br
/> customizationFields[{$smarty.foreach.customizationFields.index|intval}] = new Array();<br
/> customizationFields[{$smarty.foreach.customizationFields.index|intval}][0] = &#8216;{if $field.type|intval == 0}img{$imgIndex++}{else}textField{$textFieldIndex++}{/if}&#8217;;<br
/> customizationFields[{$smarty.foreach.customizationFields.index|intval}][1] = {if $field.type|intval == 0 AND $pictures.$key}2{else}{$field.required|intval}{/if};<br
/> {/foreach}</p><p>// Images<br
/> var img_prod_dir = &#8216;{$img_prod_dir}&#8217;;<br
/> var combinationImages = new Array();<br
/> {foreach from=$combinationImages item=&#8217;combination&#8217; key=&#8217;combinationId&#8217; name=&#8217;f_combinationImages&#8217;}<br
/> combinationImages[{$combinationId}] = new Array();<br
/> {foreach from=$combination item=&#8217;image&#8217; name=&#8217;f_combinationImage&#8217;}<br
/> combinationImages[{$combinationId}][{$smarty.foreach.f_combinationImage.index}] = {$image.id_image|intval};<br
/> {/foreach}<br
/> {/foreach}</p><p>combinationImages[0] = new Array();<br
/> {foreach from=$images item=&#8217;image&#8217; name=&#8217;f_defaultImages&#8217;}<br
/> combinationImages[0][{$smarty.foreach.f_defaultImages.index}] = {$image.id_image};<br
/> {/foreach}</p><p>// Translations<br
/> var doesntExist = &#8216;{l s=&#8217;The product does not exist in this model. Please choose another.&#8217; js=1}&#8217;;<br
/> var doesntExistNoMore = &#8216;{l s=&#8217;This product is no longer in stock&#8217; js=1}&#8217;;<br
/> var doesntExistNoMoreBut = &#8216;{l s=&#8217;with those attributes but is available with others&#8217; js=1}&#8217;;<br
/> var uploading_in_progress = &#8216;{l s=&#8217;Uploading in progress, please wait&#8230;&#8217; js=1}&#8217;;<br
/> var fieldRequired = &#8216;{l s=&#8217;Please fill all required fields&#8217; js=1}&#8217;;</p><p>{if isset($groups)}<br
/> // Combinations<br
/> {foreach from=$combinations key=idCombination item=combination}<br
/> addCombination({$idCombination|intval}, new Array({$combination.list}), {$combination.quantity}, {$combination.price}, {$combination.ecotax}, {$combination.id_image}, &#8216;{$combination.reference|addslashes}&#8217;);<br
/> {/foreach}<br
/> // Colors<br
/> {if $colors|@count &gt; 0}<br
/> {if $product-&gt;id_color_default}var id_color_default = {$product-&gt;id_color_default|intval};{/if}<br
/> {/if}<br
/> {/if}</p><p>//]]&gt;<br
/> &lt;/script&gt;</p><p>{include file=$tpl_dir./breadcrumb.tpl}</p><p>&lt;div id=&raquo;primary_block&raquo;&gt;</p><p>&lt;h2&gt;{$product-&gt;name|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&lt;/h2&gt;<br
/> {if $confirmation}<br
/> &lt;p class=&raquo;confirmation&raquo;&gt;<br
/> {$confirmation}<br
/> &lt;/p&gt;<br
/> {/if}</p><p>&lt;!&#8211; right infos&#8211;&gt;<br
/> &lt;div id=&raquo;pb-right-column&raquo;&gt;<br
/> &lt;!&#8211; product img&#8211;&gt;<br
/> &lt;div id=&raquo;image-block&raquo;&gt;<br
/> {if $have_image}<br
/> &lt;img src=&raquo;{$link-&gt;getImageLink($product-&gt;link_rewrite, $cover.id_image, &#8216;large&#8217;)}&raquo; {if $jqZoomEnabled}class=&raquo;jqzoom&raquo; alt=&raquo;{$link-&gt;getImageLink($product-&gt;link_rewrite, $cover.id_image, &#8216;thickbox&#8217;)}&raquo;{else} title=&raquo;{$product-&gt;name|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&raquo; alt=&raquo;{$product-&gt;name|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&raquo; {/if} id=&raquo;bigpic&raquo;/&gt;<br
/> {else}<br
/> &lt;img src=&raquo;{$img_prod_dir}{$lang_iso}-default-large.jpg&raquo; alt=&raquo;" title=&raquo;{$product-&gt;name|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&raquo; /&gt;<br
/> {/if}<br
/> &lt;/div&gt;</p><p>{if count($images) &gt; 0}<br
/> &lt;!&#8211; thumbnails &#8211;&gt;<br
/> &lt;div id=&raquo;views_block&raquo; {if count($images) &lt; 2}class=&raquo;hidden&raquo;{/if}&gt;<br
/> {if count($images) &gt; 3}&lt;span class=&raquo;view_scroll_spacer&raquo;&gt;&lt;a id=&raquo;view_scroll_left&raquo; class=&raquo;hidden&raquo; title=&raquo;{l s=&#8217;Other views&#8217;}&raquo; href=&raquo;javascript:{ldelim}{rdelim}&raquo;&gt;{l s=&#8217;Previous&#8217;}&lt;/a&gt;&lt;/span&gt;{/if}<br
/> &lt;div id=&raquo;thumbs_list&raquo;&gt;<br
/> &lt;ul style=&raquo;width: {math equation=&raquo;width * nbImages&raquo; width=80 nbImages=$images|@count}px&raquo; id=&raquo;thumbs_list_frame&raquo;&gt;<br
/> {foreach from=$images item=image name=thumbnails}<br
/> {assign var=imageIds value=`$product-&gt;id`-`$image.id_image`}<br
/> &lt;li id=&raquo;thumbnail_{$image.id_image}&raquo;&gt;<br
/> &lt;a href=&raquo;{$link-&gt;getImageLink($product-&gt;link_rewrite, $imageIds, &#8216;thickbox&#8217;)}&raquo; rel=&raquo;other-views&raquo; class=&raquo;{if !$jqZoomEnabled}thickbox{/if} {if $smarty.foreach.thumbnails.first}shown{/if}&raquo; title=&raquo;{$image.legend|htmlspecialchars}&raquo;&gt;<br
/> &lt;img id=&raquo;thumb_{$image.id_image}&raquo; src=&raquo;{$link-&gt;getImageLink($product-&gt;link_rewrite, $imageIds, &#8216;medium&#8217;)}&raquo; alt=&raquo;{$image.legend|htmlspecialchars}&raquo; height=&raquo;{$mediumSize.height}&raquo; width=&raquo;{$mediumSize.width}&raquo; /&gt;<br
/> &lt;/a&gt;<br
/> &lt;/li&gt;<br
/> {/foreach}<br
/> &lt;/ul&gt;<br
/> &lt;/div&gt;<br
/> {if count($images) &gt; 3}&lt;a id=&raquo;view_scroll_right&raquo; title=&raquo;{l s=&#8217;Other views&#8217;}&raquo; href=&raquo;javascript:{ldelim}{rdelim}&raquo;&gt;{l s=&#8217;Next&#8217;}&lt;/a&gt;{/if}<br
/> &lt;/div&gt;<br
/> {/if}<br
/> {if count($images) &gt; 1}&lt;p class=&raquo;align_center clear&raquo;&gt;&lt;a id=&raquo;resetImages&raquo; href=&raquo;{$link-&gt;getProductLink($product)}&raquo; onclick=&raquo;return (false);&raquo;&gt;{l s=&#8217;Display all pictures&#8217;}&lt;/a&gt;&lt;/p&gt;{/if}<br
/> &lt;!&#8211; usefull links&#8211;&gt;<br
/> &lt;ul id=&raquo;usefull_link_block&raquo;&gt;<br
/> {if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if}<br
/> &lt;li&gt;&lt;a href=&raquo;javascript:print();&raquo;&gt;{l s=&#8217;Print&#8217;}&lt;/a&gt;&lt;br class=&raquo;clear&raquo; /&gt;&lt;/li&gt;<br
/> {if $have_image &amp;&amp; !$jqZoomEnabled}<br
/> &lt;li&gt;&lt;span id=&raquo;view_full_size&raquo; class=&raquo;span_link&raquo;&gt;{l s=&#8217;View full size&#8217;}&lt;/span&gt;&lt;/li&gt;<br
/> {/if}<br
/> &lt;/ul&gt;<br
/> &lt;/div&gt;</p><p>&lt;!&#8211; left infos&#8211;&gt;<br
/> &lt;div id=&raquo;pb-left-column&raquo;&gt;<br
/> {if $product-&gt;description_short OR $packItems|@count &gt; 0}<br
/> &lt;div id=&raquo;short_description_block&raquo;&gt;<br
/> {if $product-&gt;description_short}<br
/> &lt;div id=&raquo;short_description_content&raquo; class=&raquo;rte align_justify&raquo;&gt;{$product-&gt;description_short}&lt;/div&gt;<br
/> {/if}<br
/> {if $product-&gt;description}<br
/> &lt;p class=&raquo;buttons_bottom_block&raquo;&gt;&lt;a href=&raquo;javascript:{ldelim}{rdelim}&raquo; class=&raquo;button&raquo;&gt;{l s=&#8217;More details&#8217;}&lt;/a&gt;&lt;/p&gt;<br
/> {/if}<br
/> {if $packItems|@count &gt; 0}<br
/> &lt;h3&gt;{l s=&#8217;Pack content&#8217;}&lt;/h3&gt;<br
/> {foreach from=$packItems item=packItem}<br
/> &lt;div class=&raquo;pack_content&raquo;&gt;<br
/> {$packItem.pack_quantity} x &lt;a href=&raquo;{$link-&gt;getProductLink($packItem.id_product, $packItem.link_rewrite, $packItem.category)}&raquo;&gt;{$packItem.name|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&lt;/a&gt;<br
/> &lt;p&gt;{$packItem.description_short}&lt;/p&gt;<br
/> &lt;/div&gt;<br
/> {/foreach}<br
/> {/if}<br
/> &lt;/div&gt;<br
/> {/if}</p><p>{if $colors}<br
/> &lt;!&#8211; colors &#8211;&gt;<br
/> &lt;div id=&raquo;color_picker&raquo;&gt;<br
/> &lt;p&gt;{l s=&#8217;Pick a color:&#8217; js=1}&lt;/p&gt;<br
/> &lt;div class=&raquo;clear&raquo;&gt;&lt;/div&gt;<br
/> &lt;ul id=&raquo;color_to_pick_list&raquo;&gt;<br
/> {foreach from=$colors key=&#8217;id_attribute&#8217; item=&#8217;color&#8217;}<br
/> &lt;li&gt;&lt;a id=&raquo;color_{$id_attribute|intval}&raquo; class=&raquo;color_pick&raquo; style=&raquo;background: {$color.value};&raquo; onclick=&raquo;updateColorSelect({$id_attribute|intval});&raquo;&gt;{if file_exists($col_img_dir|cat:$id_attribute|cat:&#8217;.jpg&#8217;)}&lt;img src=&raquo;{$img_col_dir}{$id_attribute}.jpg&raquo; alt=&raquo;" title=&raquo;{$color.name}&raquo; /&gt;{/if}&lt;/a&gt;&lt;/li&gt;<br
/> {/foreach}<br
/> &lt;/ul&gt;<br
/> &lt;a id=&raquo;color_all&raquo; onclick=&raquo;updateColorSelect(0);&raquo;&gt;&lt;img src=&raquo;{$img_dir}icon/cancel.gif&raquo; alt=&raquo;" title=&raquo;{$color.name}&raquo; /&gt;&lt;/a&gt;<br
/> &lt;div class=&raquo;clear&raquo;&gt;&lt;/div&gt;<br
/> &lt;/div&gt;<br
/> {/if}</p><p>&lt;!&#8211; add to cart form&#8211;&gt;<br
/> {if $product-&gt;getPrice(true, $smarty.const.NULL, 2)!=0}<br
/> &lt;form id=&raquo;buy_block&raquo; action=&raquo;{$base_dir}cart.php&raquo; method=&raquo;post&raquo;&gt;</p><p>&lt;!&#8211; hidden datas &#8211;&gt;<br
/> &lt;p class=&raquo;hidden&raquo;&gt;<br
/> &lt;input type=&raquo;hidden&raquo; name=&raquo;token&raquo; value=&raquo;{$static_token}&raquo; /&gt;<br
/> &lt;input type=&raquo;hidden&raquo; name=&raquo;id_product&raquo; value=&raquo;{$product-&gt;id|intval}&raquo; id=&raquo;product_page_product_id&raquo; /&gt;<br
/> &lt;input type=&raquo;hidden&raquo; name=&raquo;add&raquo; value=&raquo;1&#8243; /&gt;<br
/> &lt;input type=&raquo;hidden&raquo; name=&raquo;id_product_attribute&raquo; id=&raquo;idCombination&raquo; value=&raquo;" /&gt;<br
/> &lt;/p&gt;</p><p>&lt;!&#8211; prices &#8211;&gt;<br
/> &lt;p class=&raquo;price&raquo;&gt;<br
/> {if $product-&gt;on_sale}<br
/> &lt;img src=&raquo;{$img_dir}onsale_{$lang_iso}.gif&raquo; alt=&raquo;{l s=&#8217;On sale&#8217;}&raquo; class=&raquo;on_sale_img&raquo;/&gt;<br
/> &lt;span class=&raquo;on_sale&raquo;&gt;{l s=&#8217;On sale!&#8217;}&lt;/span&gt;<br
/> {elseif ($product-&gt;reduction_price != 0 || $product-&gt;reduction_percent != 0) &amp;&amp; ($product-&gt;reduction_from == $product-&gt;reduction_to OR ($smarty.now|date_format:&#8217;%Y-%m-%d&#8217; &lt;= $product-&gt;reduction_to &amp;&amp; $smarty.now|date_format:&#8217;%Y-%m-%d&#8217; &gt;= $product-&gt;reduction_from))}<br
/> &lt;span class=&raquo;discount&raquo;&gt;{l s=&#8217;Price lowered!&#8217;}&lt;/span&gt;<br
/> {/if}<br
/> &lt;br /&gt;<br
/> &lt;span class=&raquo;our_price_display&raquo;&gt;<br
/> {if !$priceDisplay || $priceDisplay == 2}<br
/> &lt;span id=&raquo;our_price_display&raquo;&gt;{convertPrice price=$product-&gt;getPrice(true, $smarty.const.NULL, 2)}&lt;/span&gt;<br
/> {l s=&#8217;tax incl.&#8217;}<br
/> {/if}<br
/> {if $priceDisplay == 1}<br
/> &lt;span id=&raquo;our_price_display&raquo;&gt;{convertPrice price=$product-&gt;getPrice(false, $smarty.const.NULL, 2)}&lt;/span&gt;<br
/> {l s=&#8217;tax excl.&#8217;}<br
/> {/if}<br
/> &lt;/span&gt;<br
/> {if $priceDisplay == 2}<br
/> &lt;br /&gt;<br
/> &lt;span id=&raquo;pretaxe_price&raquo;&gt;&lt;span id=&raquo;pretaxe_price_display&raquo;&gt;{convertPrice price=$product-&gt;getPrice(false, $smarty.const.NULL, 2)}&lt;/span&gt;&amp;nbsp;{l s=&#8217;tax excl.&#8217;}&lt;/span&gt;<br
/> {/if}<br
/> &lt;br /&gt;<br
/> &lt;/p&gt;<br
/> {if ($product-&gt;reduction_price != 0 || $product-&gt;reduction_percent != 0) &amp;&amp; ($product-&gt;reduction_from == $product-&gt;reduction_to OR ($smarty.now|date_format:&#8217;%Y-%m-%d&#8217; &lt;= $product-&gt;reduction_to &amp;&amp; $smarty.now|date_format:&#8217;%Y-%m-%d&#8217; &gt;= $product-&gt;reduction_from))}<br
/> &lt;p id=&raquo;old_price&raquo;&gt;&lt;span class=&raquo;bold&raquo;&gt;<br
/> {if !$priceDisplay || $priceDisplay == 2}<br
/> &lt;span id=&raquo;old_price_display&raquo;&gt;{convertPrice price=$product-&gt;getPriceWithoutReduct()}&lt;/span&gt;<br
/> {l s=&#8217;tax incl.&#8217;}<br
/> {/if}<br
/> {if $priceDisplay == 1}<br
/> &lt;span id=&raquo;old_price_display&raquo;&gt;{convertPrice price=$product-&gt;getPriceWithoutReduct(true)}&lt;/span&gt;<br
/> {l s=&#8217;tax excl.&#8217;}<br
/> {/if}<br
/> &lt;/span&gt;<br
/> &lt;/p&gt;<br
/> {/if}<br
/> {if $product-&gt;reduction_percent != 0 &amp;&amp; ($product-&gt;reduction_from == $product-&gt;reduction_to OR ($smarty.now|date_format:&#8217;%Y-%m-%d&#8217; &lt;= $product-&gt;reduction_to &amp;&amp; $smarty.now|date_format:&#8217;%Y-%m-%d&#8217; &gt;= $product-&gt;reduction_from))}<br
/> &lt;p id=&raquo;reduction_percent&raquo;&gt;{l s=&#8217;(price reduced by&#8217;} &lt;span id=&raquo;reduction_percent_display&raquo;&gt;{$product-&gt;reduction_percent|floatval}&lt;/span&gt; %{l s=&#8217;)'}&lt;/p&gt;<br
/> {/if}<br
/> {if $packItems|@count}<br
/> &lt;p class=&raquo;pack_price&raquo;&gt;{l s=&#8217;instead of&#8217;} &lt;span style=&raquo;text-decoration: line-through;&raquo;&gt;{convertPrice price=$product-&gt;getNoPackPrice()}&lt;/span&gt;&lt;/p&gt;<br
/> &lt;br class=&raquo;clear&raquo; /&gt;<br
/> {/if}<br
/> {if $product-&gt;ecotax != 0}<br
/> &lt;p class=&raquo;price-ecotax&raquo;&gt;{l s=&#8217;include&#8217;} &lt;span id=&raquo;ecotax_price_display&raquo;&gt;{convertPrice price=$product-&gt;ecotax}&lt;/span&gt; {l s=&#8217;for green tax&#8217;}&lt;/p&gt;<br
/> {/if}</p><p>{if isset($groups)}</p><p>&lt;!&#8211; attributes &#8211;&gt;<br
/> &lt;div id=&raquo;attributes&raquo;&gt;<br
/> {foreach from=$groups key=id_attribute_group item=group}<br
/> &lt;p&gt;<br
/> &lt;label for=&raquo;group_{$id_attribute_group|intval}&raquo;&gt;{$group.name|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;} :&lt;/label&gt;<br
/> {assign var=&#8217;groupName&#8217; value=&#8217;group_&#8217;|cat:$id_attribute_group}<br
/> &lt;select name=&raquo;{$groupName}&raquo; id=&raquo;group_{$id_attribute_group|intval}&raquo; onchange=&raquo;javascript:findCombination();&raquo;&gt;<br
/> {foreach from=$group.attributes key=id_attribute item=group_attribute}<br
/> &lt;option value=&raquo;{$id_attribute|intval}&raquo;{if (isset($smarty.get.$groupName) &amp;&amp; $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected=&raquo;selected&raquo;{/if}&gt;{$group_attribute|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&lt;/option&gt;<br
/> {/foreach}<br
/> &lt;/select&gt;<br
/> &lt;/p&gt;<br
/> {/foreach}<br
/> &lt;/div&gt;<br
/> {/if}</p><p>{if $product-&gt;reference}&lt;p id=&raquo;product_reference&raquo; {if isset($groups)}style=&raquo;display:none;&raquo;{/if}&gt;&lt;label for=&raquo;product_reference&raquo;&gt;{l s=&#8217;Reference :&#8217;} &lt;/label&gt;&lt;span class=&raquo;editable&raquo;&gt;{$product-&gt;reference|escape}&lt;/span&gt;&lt;/p&gt;{/if}</p><p>&lt;!&#8211; quantity wanted &#8211;&gt;<br
/> &lt;p id=&raquo;quantity_wanted_p&raquo;{if (!$allow_oosp &amp;&amp; $product-&gt;quantity == 0) || $virtual} style=&raquo;display:none;&raquo;{/if}&gt;<br
/> &lt;label&gt;{l s=&#8217;Quantity :&#8217;}&lt;/label&gt;<br
/> &lt;input type=&raquo;text&raquo; name=&raquo;qty&raquo; id=&raquo;quantity_wanted&raquo; class=&raquo;text&raquo; value=&raquo;{if isset($quantityBackup)}{$quantityBackup|intval}{else}1{/if}&raquo; size=&raquo;2&#8243; maxlength=&raquo;3&#8243; /&gt;<br
/> &lt;/p&gt;</p><p>&lt;!&#8211; availability &#8211;&gt;<br
/> &lt;p id=&raquo;availability_statut&raquo;{if ($allow_oosp &amp;&amp; $product-&gt;quantity == 0 &amp;&amp; !$product-&gt;available_later) || (!$product-&gt;available_now &amp;&amp; $display_qties != 1) } style=&raquo;display:none;&raquo;{/if}&gt;<br
/> &lt;span id=&raquo;availability_label&raquo;&gt;{l s=&#8217;Availability:&#8217;}&lt;/span&gt;<br
/> &lt;span id=&raquo;availability_value&raquo;{if $product-&gt;quantity == 0} class=&raquo;warning-inline&raquo;{/if}&gt;<br
/> {if $product-&gt;quantity == 0}{if $allow_oosp}{$product-&gt;available_later}{else}{l s=&#8217;This product is no longer in stock&#8217;}{/if}{else}{$product-&gt;available_now}{/if}<br
/> &lt;/span&gt;<br
/> &lt;/p&gt;</p><p>&lt;!&#8211; number of item in stock &#8211;&gt;<br
/> &lt;p id=&raquo;pQuantityAvailable&raquo;{if $display_qties != 1 || ($allow_oosp &amp;&amp; $product-&gt;quantity == 0)} style=&raquo;display:none;&raquo;{/if}&gt;<br
/> &lt;span id=&raquo;quantityAvailable&raquo;&gt;{$product-&gt;quantity|intval}&lt;/span&gt;<br
/> &lt;span{if $product-&gt;quantity &gt; 1} style=&raquo;display:none;&raquo;{/if} id=&raquo;quantityAvailableTxt&raquo;&gt;{l s=&#8217;item in stock&#8217;}&lt;/span&gt;<br
/> &lt;span{if $product-&gt;quantity &lt; 2} style=&raquo;display:none;&raquo;{/if} id=&raquo;quantityAvailableTxtMultiple&raquo;&gt;{l s=&#8217;items in stock&#8217;}&lt;/span&gt;<br
/> &lt;/p&gt;</p><p>&lt;!&#8211; Out of stock hook &#8211;&gt;<br
/> &lt;p id=&raquo;oosHook&raquo;{if $product-&gt;quantity &gt; 0} style=&raquo;display:none;&raquo;{/if}&gt;<br
/> {$HOOK_PRODUCT_OOS}<br
/> &lt;/p&gt;</p><p>&lt;p class=&raquo;warning-inline&raquo; id=&raquo;last_quantities&raquo;{if ($product-&gt;quantity &gt; $last_qties || $product-&gt;quantity == 0) || $allow_oosp} style=&raquo;display:none;&raquo;{/if} &gt;{l s=&#8217;Warning: Last items in stock!&#8217;}&lt;/p&gt;</p><p>&lt;p{if !$allow_oosp &amp;&amp; $product-&gt;quantity == 0} style=&raquo;display:none;&raquo;{/if} id=&raquo;add_to_cart&raquo; class=&raquo;buttons_bottom_block&raquo;&gt;&lt;input type=&raquo;submit&raquo; name=&raquo;Submit&raquo; value=&raquo;{l s=&#8217;Add to cart&#8217;}&raquo; class=&raquo;exclusive&raquo; /&gt;&lt;/p&gt;<br
/> {if $HOOK_PRODUCT_ACTIONS}<br
/> {$HOOK_PRODUCT_ACTIONS}<br
/> {/if}<br
/> &lt;/form&gt;<br
/> {else}<br
/> &lt;div&gt;&lt;span class=&raquo;price&raquo; style=&raquo;display: inline;&raquo;&gt;{l s=&#8217;Advance order&#8217;}&lt;/span&gt;&lt;/div&gt;<br
/> &lt;div&gt;&lt;span class=&raquo;price-comments&raquo; &gt;{l s=&#8217;Call by phone&#8217;}&lt;/span&gt;&lt;/div&gt;<br
/> {/if}</p><p>{if $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if}<br
/> &lt;/div&gt;<br
/> &lt;/div&gt;<br
/> &lt;br class=&raquo;clear&raquo; /&gt;</p><p>{if $quantity_discounts}<br
/> &lt;!&#8211; quantity discount &#8211;&gt;<br
/> &lt;ul class=&raquo;idTabs&raquo;&gt;<br
/> &lt;li&gt;&lt;a style=&raquo;cursor: pointer&raquo;&gt;{l s=&#8217;Quantity discount&#8217;}&lt;/a&gt;&lt;/li&gt;<br
/> &lt;/ul&gt;<br
/> &lt;div id=&raquo;quantityDiscount&raquo;&gt;<br
/> &lt;table class=&raquo;std&raquo;&gt;<br
/> &lt;tr&gt;<br
/> {foreach from=$quantity_discounts item=&#8217;quantity_discount&#8217; name=&#8217;quantity_discounts&#8217;}<br
/> &lt;th&gt;{$quantity_discount.quantity|intval}<br
/> {if $quantity_discount.quantity|intval &gt; 1}<br
/> {l s=&#8217;quantities&#8217;}<br
/> {else}<br
/> {l s=&#8217;quantity&#8217;}<br
/> {/if}<br
/> &lt;/th&gt;<br
/> {/foreach}<br
/> &lt;/tr&gt;<br
/> &lt;tr&gt;<br
/> {foreach from=$quantity_discounts item=&#8217;quantity_discount&#8217; name=&#8217;quantity_discounts&#8217;}<br
/> &lt;td&gt;<br
/> {if $quantity_discount.id_discount_type|intval == 1}<br
/> -{$quantity_discount.value|floatval}%<br
/> {else}<br
/> -{convertPrice price=$quantity_discount.value|floatval}<br
/> {/if}<br
/> &lt;/td&gt;<br
/> {/foreach}<br
/> &lt;/tr&gt;<br
/> &lt;/table&gt;<br
/> &lt;/div&gt;<br
/> {/if}</p><p>{$HOOK_PRODUCT_FOOTER}</p><p>&lt;!&#8211; description and features &#8211;&gt;<br
/> {if $product-&gt;description || $features || $accessories || $HOOK_PRODUCT_TAB || $attachments}<br
/> &lt;div id=&raquo;more_info_block&raquo; class=&raquo;clear&raquo;&gt;<br
/> &lt;ul id=&raquo;more_info_tabs&raquo; class=&raquo;idTabs idTabsShort&raquo;&gt;<br
/> {if $product-&gt;description}&lt;li&gt;&lt;a id=&raquo;more_info_tab_more_info&raquo; href=&raquo;#idTab1&#8243;&gt;{l s=&#8217;More info&#8217;}&lt;/a&gt;&lt;/li&gt;{/if}<br
/> {if $features}&lt;li&gt;&lt;a id=&raquo;more_info_tab_data_sheet&raquo; href=&raquo;#idTab2&#8243;&gt;{l s=&#8217;Data sheet&#8217;}&lt;/a&gt;&lt;/li&gt;{/if}<br
/> {if $attachments}&lt;li&gt;&lt;a id=&raquo;more_info_tab_attachments&raquo; href=&raquo;#idTab9&#8243;&gt;{l s=&#8217;Download&#8217;}&lt;/a&gt;&lt;/li&gt;{/if}<br
/> {if isset($accessories) AND $accessories}&lt;li&gt;&lt;a href=&raquo;#idTab4&#8243;&gt;{l s=&#8217;Accessories&#8217;}&lt;/a&gt;&lt;/li&gt;{/if}<br
/> {$HOOK_PRODUCT_TAB}<br
/> &lt;/ul&gt;<br
/> &lt;div id=&raquo;more_info_sheets&raquo; class=&raquo;sheets align_justify&raquo;&gt;<br
/> {if $product-&gt;description}<br
/> &lt;!&#8211; full description &#8211;&gt;<br
/> &lt;div id=&raquo;idTab1&#8243; class=&raquo;rte&raquo;&gt;{$product-&gt;description}&lt;/div&gt;<br
/> {/if}<br
/> {if $features}<br
/> &lt;!&#8211; product&#8217;s features &#8211;&gt;<br
/> &lt;ul id=&raquo;idTab2&#8243; class=&raquo;bullet&raquo;&gt;<br
/> {foreach from=$features item=feature}<br
/> &lt;li&gt;&lt;span&gt;{$feature.name|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&lt;/span&gt; {$feature.value|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&lt;/li&gt;<br
/> {/foreach}<br
/> &lt;/ul&gt;<br
/> {/if}<br
/> {if $attachments}<br
/> &lt;ul id=&raquo;idTab9&#8243; class=&raquo;bullet&raquo;&gt;<br
/> {foreach from=$attachments item=attachment}<br
/> &lt;li&gt;&lt;a href=&raquo;{$base_dir}attachment.php?id_attachment={$attachment.id_attachment}&raquo;&gt;{$attachment.name|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&lt;/a&gt;&lt;br /&gt;{$attachment.description|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&lt;/li&gt;<br
/> {/foreach}<br
/> &lt;/ul&gt;<br
/> {/if}<br
/> {if isset($accessories) AND $accessories}<br
/> &lt;!&#8211; accessories &#8211;&gt;<br
/> &lt;ul id=&raquo;idTab4&#8243; class=&raquo;bullet&raquo;&gt;<br
/> &lt;div class=&raquo;block products_block accessories_block&raquo;&gt;<br
/> &lt;div class=&raquo;block_content&raquo;&gt;<br
/> &lt;ul&gt;<br
/> {foreach from=$accessories item=accessory name=accessories_list}<br
/> {assign var=&#8217;accessoryLink&#8217; value=$link-&gt;getProductLink($accessory.id_product, $accessory.link_rewrite, $accessory.category)}<br
/> &lt;li class=&raquo;ajax_block_product {if $smarty.foreach.accessories_list.first}first_item{elseif $smarty.foreach.accessories_list.last}last_item{else}item{/if} product_accessories_description&raquo;&gt;<br
/> &lt;h5 class=&raquo;align_center&raquo;&gt;&lt;a href=&raquo;{$accessoryLink|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&raquo;&gt;{$accessory.name|truncate:22:&#8217;&#8230;&#8217;|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&lt;/a&gt;&lt;/h5&gt;<br
/> &lt;p class=&raquo;product_desc&raquo;&gt;<br
/> &lt;a href=&raquo;{$accessoryLink|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&raquo; title=&raquo;{$accessory.legend|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&raquo; class=&raquo;product_image&raquo;&gt;&lt;img src=&raquo;{$link-&gt;getImageLink($accessory.link_rewrite, $accessory.id_image, &#8216;medium&#8217;)}&raquo; alt=&raquo;{$accessory.legend|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&raquo; /&gt;&lt;/a&gt;<br
/> &lt;a href=&raquo;{$accessoryLink|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&raquo; title=&raquo;{l s=&#8217;More&#8217;}&raquo; class=&raquo;product_description&raquo;&gt;{$accessory.description_short|strip_tags|truncate:100:&#8217;&#8230;&#8217;}&lt;/a&gt;<br
/> &lt;/p&gt;<br
/> &lt;p class=&raquo;product_accessories_price&raquo;&gt;<br
/> &lt;span class=&raquo;price&raquo;&gt;{displayWtPrice p=$accessory.price}&lt;/span&gt;<br
/> &lt;a class=&raquo;button&raquo; href=&raquo;{$accessoryLink|escape:&#8217;htmlall&#8217;:'UTF-8&#8242;}&raquo; title=&raquo;{l s=&#8217;View&#8217;}&raquo;&gt;{l s=&#8217;View&#8217;}&lt;/a&gt;<br
/> &lt;a class=&raquo;button ajax_add_to_cart_button&raquo; href=&raquo;{$base_dir}cart.php?qty=1&amp;amp;id_product={$accessory.id_product|intval}&amp;amp;token={$static_token}&amp;amp;add&raquo; rel=&raquo;ajax_id_product_{$accessory.id_product|intval}&raquo; title=&raquo;{l s=&#8217;Add to cart&#8217;}&raquo;&gt;{l s=&#8217;Add to cart&#8217;}&lt;/a&gt;<br
/> &lt;/p&gt;<br
/> &lt;/li&gt;<br
/> {/foreach}<br
/> &lt;/ul&gt;<br
/> &lt;/div&gt;<br
/> &lt;/div&gt;<br
/> &lt;div class=&raquo;clear&raquo;&gt;&lt;/div&gt;<br
/> &lt;/ul&gt;<br
/> {/if}<br
/> {$HOOK_PRODUCT_TAB_CONTENT}<br
/> &lt;/div&gt;<br
/> &lt;/div&gt;<br
/> {/if}</p><p>&lt;!&#8211; Customizable products &#8211;&gt;<br
/> {if $product-&gt;customizable}<br
/> &lt;ul class=&raquo;idTabs&raquo;&gt;<br
/> &lt;li&gt;&lt;a style=&raquo;cursor: pointer&raquo;&gt;{l s=&#8217;Product customization&#8217;}&lt;/a&gt;&lt;/li&gt;<br
/> &lt;/ul&gt;<br
/> &lt;div class=&raquo;customization_block&raquo;&gt;<br
/> &lt;form method=&raquo;post&raquo; action=&raquo;{$customizationFormTarget}&raquo; enctype=&raquo;multipart/form-data&raquo; id=&raquo;customizationForm&raquo;&gt;<br
/> &lt;p&gt;<br
/> &lt;img src=&raquo;{$img_dir}icon/infos.gif&raquo; alt=&raquo;Informations&raquo; /&gt;<br
/> {l s=&#8217;After saving your customized product, do not forget to add it to your cart.&#8217;}<br
/> {if $product-&gt;uploadable_files}&lt;br /&gt;{l s=&#8217;Allowed file formats are: GIF, JPG, PNG&#8217;}{/if}<br
/> &lt;/p&gt;<br
/> {if $product-&gt;uploadable_files|intval}<br
/> &lt;h2&gt;{l s=&#8217;Pictures&#8217;}&lt;/h2&gt;<br
/> &lt;ul id=&raquo;uploadable_files&raquo;&gt;<br
/> {counter start=0 assign=&#8217;customizationField&#8217;}<br
/> {foreach from=$customizationFields item=&#8217;field&#8217; name=&#8217;customizationFields&#8217;}<br
/> {if $field.type == 0}<br
/> &lt;li class=&raquo;customizationUploadLine{if $field.required} required{/if}&raquo;&gt;{assign var=&#8217;key&#8217; value=&#8217;pictures_&#8217;|cat:$product-&gt;id|cat:&#8217;_'|cat:$field.id_customization_field}<br
/> {if isset($pictures.$key)}&lt;div class=&raquo;customizationUploadBrowse&raquo;&gt;&lt;img src=&raquo;{$pic_dir}{$pictures.$key}_small&raquo; alt=&raquo;" /&gt;&lt;a href=&raquo;{$link-&gt;getUrlWith(&#8216;deletePicture&#8217;, $field.id_customization_field)}&raquo;&gt;&lt;img src=&raquo;{$img_dir}icon/delete.gif&raquo; alt=&raquo;{l s=&#8217;delete&#8217;}&raquo; class=&raquo;customization_delete_icon&raquo; /&gt;&lt;/a&gt;&lt;/div&gt;{/if}<br
/> &lt;div class=&raquo;customizationUploadBrowse&raquo;&gt;&lt;input type=&raquo;file&raquo; name=&raquo;file{$field.id_customization_field}&raquo; id=&raquo;img{$customizationField}&raquo; class=&raquo;customization_block_input {if isset($pictures.$key)}filled{/if}&raquo; /&gt;{if $field.required}&lt;sup&gt;*&lt;/sup&gt;{/if}<br
/> &lt;div class=&raquo;customizationUploadBrowseDescription&raquo;&gt;{if !empty($field.name)}{$field.name}{else}{l s=&#8217;Please select an image file from your hard drive&#8217;}{/if}&lt;/div&gt;&lt;/div&gt;<br
/> &lt;/li&gt;<br
/> {counter}<br
/> {/if}<br
/> {/foreach}<br
/> &lt;/ul&gt;<br
/> {/if}<br
/> &lt;div class=&raquo;clear&raquo;&gt;&lt;/div&gt;<br
/> {if $product-&gt;text_fields|intval}<br
/> &lt;h2&gt;{l s=&#8217;Texts&#8217;}&lt;/h2&gt;<br
/> &lt;ul id=&raquo;text_fields&raquo;&gt;<br
/> {counter start=0 assign=&#8217;customizationField&#8217;}<br
/> {foreach from=$customizationFields item=&#8217;field&#8217; name=&#8217;customizationFields&#8217;}<br
/> {if $field.type == 1}<br
/> &lt;li class=&raquo;customizationUploadLine{if $field.required} required{/if}&raquo;&gt;{assign var=&#8217;key&#8217; value=&#8217;textFields_&#8217;|cat:$product-&gt;id|cat:&#8217;_'|cat:$field.id_customization_field}<br
/> {if !empty($field.name)}{$field.name}{/if}&lt;input type=&raquo;text&raquo; name=&raquo;textField{$field.id_customization_field}&raquo; id=&raquo;textField{$customizationField}&raquo; value=&raquo;{if isset($textFields.$key)}{$textFields.$key|stripslashes}{/if}&raquo; class=&raquo;customization_block_input&raquo; /&gt;{if $field.required}&lt;sup&gt;*&lt;/sup&gt;{/if}<br
/> &lt;/li&gt;<br
/> {counter}<br
/> {/if}<br
/> {/foreach}<br
/> &lt;/ul&gt;<br
/> {/if}<br
/> &lt;p style=&raquo;clear: left;&raquo; id=&raquo;customizedDatas&raquo;&gt;<br
/> &lt;input type=&raquo;hidden&raquo; name=&raquo;quantityBackup&raquo; id=&raquo;quantityBackup&raquo; value=&raquo;" /&gt;<br
/> &lt;input type=&raquo;hidden&raquo; name=&raquo;submitCustomizedDatas&raquo; value=&raquo;1&#8243; /&gt;<br
/> &lt;input type=&raquo;button&raquo; class=&raquo;button&raquo; value=&raquo;{l s=&#8217;Save&#8217;}&raquo; onclick=&raquo;javascript:saveCustomization()&raquo; /&gt;<br
/> &lt;/p&gt;<br
/> &lt;/form&gt;<br
/> &lt;p class=&raquo;clear required&raquo;&gt;&lt;sup&gt;*&lt;/sup&gt; {l s=&#8217;required fields&#8217;}&lt;/p&gt;<br
/> &lt;/div&gt;<br
/> {/if}</p><p>{if $packItems|@count &gt; 0}<br
/> &lt;div&gt;<br
/> &lt;h2&gt;{l s=&#8217;Pack content&#8217;}&lt;/h2&gt;<br
/> {include file=$tpl_dir./product-list.tpl products=$packItems}<br
/> &lt;/div&gt;<br
/> {/if}</p><p>{/if}</p></div> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2010/04/11/podderzhka-tovarov-s-tsenoy-po-zaprosu-prestashop/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Subcategories in manufacturers module for prestashop</title><link>http://look-in.net/2010/03/27/subcategories-in-manufactures-module-prestashop/</link> <comments>http://look-in.net/2010/03/27/subcategories-in-manufactures-module-prestashop/#comments</comments> <pubDate>Sat, 27 Mar 2010 19:43:02 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[WebDev]]></category> <category><![CDATA[projects]]></category> <category><![CDATA[module]]></category> <category><![CDATA[prestashop]]></category> <category><![CDATA[www.wo-da.ru]]></category> <guid
isPermaLink="false">http://look-in.net/?p=321</guid> <description><![CDATA[When you choose manufacturer in default prestashop site &#8211; you get list of all products of this manufacture, without any grouping. Module  blockmancategories add a list of categories into manufacturer page.
This module was developed for shop www.wo-da.ru.
PS. This module also compatible with Cache module.
update:
PS. This module also compatible with Prestashop 1.3.1 and 1.4.x
]]></description> <content:encoded><![CDATA[<p>When you choose manufacturer in default prestashop site &#8211; you get list of all products of this manufacture, without any grouping. Module  blockmancategories add a list of categories into manufacturer page.</p><p><span
id="more-321"></span></p> <a
href="http://look-in.net/2010/03/27/subcategories-in-manufactures-module-prestashop/prestashop_module_roca/" title="Подкатегории для производителей. Модуль prestashop. ROCA"><img
width="150" height="150" src="http://look-in.net/wp-content/uploads/2010/03/prestashop_module_roca-150x150.jpg" class="attachment-thumbnail" alt="Подкатегории для производителей. Модуль prestashop. ROCA" title="Подкатегории для производителей. Модуль prestashop. ROCA" /></a> <a
href="http://look-in.net/2010/03/27/subcategories-in-manufactures-module-prestashop/prestashop_module_hansgrohe/" title="Подкатегории для производителей. Модуль prestashop. Hansgrohe"><img
width="150" height="122" src="http://look-in.net/wp-content/uploads/2010/03/prestashop_module_hansgrohe.jpg" class="attachment-thumbnail" alt="Подкатегории для производителей. Модуль prestashop. Hansgrohe" title="Подкатегории для производителей. Модуль prestashop. Hansgrohe" /></a> <a
href="http://look-in.net/2010/03/27/subcategories-in-manufactures-module-prestashop/prestashop_module_jacob_delafon/" title="Подкатегории для производителей. Модуль prestashop. Jacob Delafon"><img
width="150" height="150" src="http://look-in.net/wp-content/uploads/2010/03/prestashop_module_jacob_delafon-150x150.jpg" class="attachment-thumbnail" alt="Подкатегории для производителей. Модуль prestashop. Jacob Delafon" title="Подкатегории для производителей. Модуль prestashop. Jacob Delafon" /></a><p>This module was developed for shop <a
href="http://www.wo-da.ru/" target="_blank">www.wo-da.ru</a>.</p><p>PS. This module also compatible with <a
href="http://look-in.net/2009/12/28/cache-module-prestashop/lang-pref/en/" target="_blank">Cache module</a>.</p><p><strong>update</strong>:</p><p>PS. This module also compatible with Prestashop 1.3.1 and 1.4.x</p> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2010/03/27/subcategories-in-manufactures-module-prestashop/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>Prestashop модуль Catalog Evaluation</title><link>http://look-in.net/2010/03/19/prestashop-modul-catalog-evaluation/</link> <comments>http://look-in.net/2010/03/19/prestashop-modul-catalog-evaluation/#comments</comments> <pubDate>Fri, 19 Mar 2010 11:09:10 +0000</pubDate> <dc:creator>slookin</dc:creator> <category><![CDATA[WebDev]]></category> <category><![CDATA[projects]]></category> <category><![CDATA[translation]]></category> <category><![CDATA[prestashop]]></category> <guid
isPermaLink="false">http://look-in.net/?p=302</guid> <description><![CDATA[ Исправил ошибку с оценкой “качества” описания продукта и привинтил русский перевод.
Скачать исправленную версию.
О модуле: Модуль позволяет быстро найти товары у которых незаполнены поля описания или нет изображений. Просто и красиво.
http://www.prestastore.com/back-office-tools/749-catalog-evaluation.html
]]></description> <content:encoded><![CDATA[<p><a
href="http://look-in.net/wp-content/uploads/2010/03/image.png" class="thickbox no_icon" rel="gallery-302" title="image"><img
style="display: inline; border: 0px;" title="image" src="http://look-in.net/wp-content/uploads/2010/03/image_thumb.png" border="0" alt="image" width="57" height="57" /></a> Исправил ошибку с оценкой “качества” описания продукта и привинтил русский перевод.</p><p><a
href="http://look-in.net/wp-content/uploads/2010/03/statscheckup_fixed.zip" target="_blank">Скачать исправленную версию. </a></p><p>О модуле: Модуль позволяет быстро найти товары у которых незаполнены поля описания или нет изображений. Просто и красиво.</p><p><a
title="http://www.prestastore.com/back-office-tools/749-catalog-evaluation.html" href="http://www.prestastore.com/back-office-tools/749-catalog-evaluation.html">http://www.prestastore.com/back-office-tools/749-catalog-evaluation.html</a></p> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2010/03/19/prestashop-modul-catalog-evaluation/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Updated plugin Google sitemap with Polyglot support</title><link>http://look-in.net/2010/01/11/polyglot-sitemap-wordpress/</link> <comments>http://look-in.net/2010/01/11/polyglot-sitemap-wordpress/#comments</comments> <pubDate>Mon, 11 Jan 2010 09:52:32 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[WebDev]]></category> <category><![CDATA[projects]]></category> <category><![CDATA[google]]></category> <category><![CDATA[sitemap]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://look-in.net/?p=290</guid> <description><![CDATA[I have customize plugin for Wordpress Google XML Sitemaps (author Arne Brachhold) in order to put in sitemap.xml all localized links to posts, my multilingual blog based on Polyglot plugin (author Martin Chlupac).
You can download plugin with source code. google-sitemap-generator_polyglot.zip
Licence: GNU GPL
My plugin based on : Google XML Sitemaps version 3.2.2 и Polyglot 2.3
Tested on [...]]]></description> <content:encoded><![CDATA[<p>I have customize plugin for Wordpress <a
href="http://www.arnebrachhold.de/redir/sitemap-home/" target="_blank">Google XML Sitemaps</a> (author <a
href="http://www.arnebrachhold.de/" target="_blank">Arne Brachhold</a>) in order to put in sitemap.xml all localized links to posts, my multilingual blog based on <a
href="http://fredfred.net/skriker/index.php/polyglot" target="_blank">Polyglot</a> plugin (author <a
href="http://fredfred.net/skriker/">Martin Chlupac</a>).</p><p><span
id="more-290"></span></p><p>You can download plugin with source code. <a
href="http://look-in.net/wp-content/uploads/2010/01/google-sitemap-generator_polyglot.zip">google-sitemap-generator_polyglot.zip</a></p><p>Licence: GNU GPL</p><p>My plugin based on : <a
href="http://www.arnebrachhold.de/redir/sitemap-home/" target="_blank">Google XML Sitemaps</a> version 3.2.2 и <a
href="http://fredfred.net/skriker/index.php/polyglot" target="_blank">Polyglot</a> 2.3</p><p>Tested on wordpress 2.9</p><p>Special thanks to <a
href="http://www.qianqin.de/2007/01/29/making-wordpress-multilingual/" target="_blank">Qian Qin</a></p> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2010/01/11/polyglot-sitemap-wordpress/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Cache module : Prestashop</title><link>http://look-in.net/2009/12/28/cache-module-prestashop/</link> <comments>http://look-in.net/2009/12/28/cache-module-prestashop/#comments</comments> <pubDate>Mon, 28 Dec 2009 20:56:59 +0000</pubDate> <dc:creator>slookin</dc:creator> <category><![CDATA[WebDev]]></category> <category><![CDATA[projects]]></category> <category><![CDATA[cache]]></category> <category><![CDATA[pear]]></category> <category><![CDATA[prestashop]]></category> <category><![CDATA[www.wo-da.ru]]></category> <guid
isPermaLink="false">http://look-in.net/?p=266</guid> <description><![CDATA[In order to improve site performance I implement Cache module for my shop, which based on prestashop.
Cache module based on Pear:Cache_Lite engine and able to store cached part of pages to file system.
My estimation in such performance improvement &#8211; 2-8 times, depends of you site and database.
Also for support cache module I implement &#171;preaching sub [...]]]></description> <content:encoded><![CDATA[<p>In order to improve site performance I implement Cache module for <a
href="http://www.wo-da.ru" target="_blank">my shop</a>, which based on prestashop.<br
/> Cache module based on Pear:Cache_Lite engine and able to store cached part of pages to file system.<br
/> My estimation in such performance improvement &#8211; 2-8 times, depends of you site and database.</p><p><span
id="more-266"></span></p><p>Also for support cache module I implement &laquo;preaching sub module&raquo; it run every night and prepare caches which will be used during day.</p><div
class="mceTemp"><dl
id="attachment_267" class="wp-caption alignnone" style="width: 570px;"><dt
class="wp-caption-dt"><a
href="http://look-in.net/wp-content/uploads/2009/12/cache_module_prestashop.png" class="thickbox no_icon" rel="gallery-266" title="cache_module_prestashop"><img
class="size-full wp-image-267" title="cache_module_prestashop" src="http://look-in.net/wp-content/uploads/2009/12/cache_module_prestashop.png" alt="Cache module: Prestashop" width="560" height="554" /></a></dt></dl></div><p><strong>UPDATE (13 Jan 2010)<a
href="http://look-in.net/wp-content/uploads/2009/12/performance_result.png" class="thickbox no_icon" rel="gallery-266" title="performance_result"><img
class="alignnone size-full wp-image-298" title="performance_result" src="http://look-in.net/wp-content/uploads/2009/12/performance_result.png" alt="" width="800" height="173" /></a></strong></p><h2>Google performance overview</h2><p>On average, pages in your site take <em>1.7 seconds to load</em> (updated on Jan 4, 2010). This is <em>faster than 74% of sites</em>. These estimates are of <em>low accuracy</em> (less than 100 data points). The chart below shows how your site&#8217;s average page load time has changed over the last few months. For your reference, it also shows the 20th percentile value across all sites, separating slow and fast load times.</p><p><img
src="file:///C:/Users/lukin/AppData/Local/Temp/1/moz-screenshot-2.png" alt="" /><img
src="file:///C:/Users/lukin/AppData/Local/Temp/1/moz-screenshot-1.png" alt="" /><img
src="file:///C:/Users/lukin/AppData/Local/Temp/1/moz-screenshot.png" alt="" /></p><div
id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1143px; width: 1px; height: 1px;">Google</div> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2009/12/28/cache-module-prestashop/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>WWW.WO-DA.RU магазин сантехники</title><link>http://look-in.net/2009/11/25/wo-da-ru/</link> <comments>http://look-in.net/2009/11/25/wo-da-ru/#comments</comments> <pubDate>Wed, 25 Nov 2009 14:10:39 +0000</pubDate> <dc:creator>slookin</dc:creator> <category><![CDATA[projects]]></category> <category><![CDATA[prestashop]]></category> <category><![CDATA[wo-da.ru]]></category> <guid
isPermaLink="false">http://look-in.net/?p=227</guid> <description><![CDATA[ 2009-й год будет также памятен для меня открытием еще одного интернет магазина – WWW.WO-DA.RU.
Магазин сантехники WO-DA.RU работает в Санкт-Петербурге и Ленинградской области и предлагает по конкурентным ценам широкий ассортимент:
для ванных комнат (ванные, смесители, душевые)
для кухонь (мойки, измельчители отходов)
а также теплые полы и водонагреватели
Помятуя опыт работы на www.oscommerce.org (см. топик о магазину Woodyshop) было принято [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://look-in.net/wp-content/uploads/2009/11/image2.png" class="thickbox no_icon" rel="gallery-227" title="image"><img
style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" src="http://look-in.net/wp-content/uploads/2009/11/image_thumb3.png" border="0" alt="image" width="624" height="640" /></a> 2009-й год будет также памятен для меня открытием еще одного интернет магазина – <a
href="http://www.WO-DA.RU" target="_blank">WWW.WO-DA.RU</a>.</p><p><span
id="more-227"></span></p><p>Магазин сантехники WO-DA.RU работает в Санкт-Петербурге и Ленинградской области и предлагает по конкурентным ценам широкий ассортимент:</p><ul><li>для ванных комнат (ванные, смесители, душевые)</li><li>для кухонь (мойки, измельчители отходов)</li><li>а также теплые полы и водонагреватели</li></ul><p>Помятуя опыт работы на <a
href="http://www.oscommerce.org" target="_blank">www.oscommerce.org</a> (см. топик о магазину <a
href="http://look-in.net/2009/02/11/woodyshop" target="_blank">Woodyshop</a>) было принято решение в этот раз базироваться на продукте <a
href="http://www.prestashop.com/" target="_blank">Prestashop</a>. Если быть кратким, то Prestashop предоставляет кучу полезных модулей сразу встроенных в продукт. При этом он построен на более прозрачной и понятной архитектуре (по сравнение с oscommerce) – почти чистый MVC, классический шаблонизатор – Smarty, продуманный функционал сайта по умолчанию в поставке – и прочие прелести.</p><p>Перечислю основные модули/фичи которые я использую:</p><blockquote></blockquote><table
border="0" cellspacing="0" cellpadding="2" width="80%" align="center"><tbody><tr
style="background-color: #055169"><td
width="400" valign="top"><a
href="http://look-in.net/wp-content/uploads/2009/11/prestashop.png" class="thickbox no_icon" rel="gallery-227" title="prestashop"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="prestashop" src="http://look-in.net/wp-content/uploads/2009/11/prestashop_thumb.png" border="0" alt="prestashop" width="214" height="69" /></a></td></tr><tr><td
style="background-color: #f0f0f0" valign="top">1. SEO – включает в себя:</p><ul><li>URL – человеко-понятные ссылки.</li><li>Cannonical meta tag</li><li>Header meta tags – для ключевых слов и описания</li></ul></td></tr><tr
style="background-color: #a6b7c7"><td
valign="top">2. Product Attributes – атрибуты товаров, цена для разных атрибутов, наличие на складе.</td></tr><tr><td
style="background-color: #f0f0f0" valign="top">3. PDF invoce – документы формируются в PDF</td></tr><tr
style="background-color: #a6b7c7"><td
width="400" valign="top">4. Ajax basket – красиво, динамично.</td></tr><tr><td
style="background-color: #f0f0f0" width="400" valign="top">5. Google Analytics – статистика на google analytic.</td></tr><tr
style="background-color: #a6b7c7"><td
valign="top">6. Smarty template engine – удобный и простой движок для шаблонов сайта. Кстати верстка в схеме по умолчанию  &#8211; XHTML и основана на div.</td></tr><tr><td
style="background-color: #f0f0f0" width="400" valign="top">далее уже фичи которые есть в любых движках магазинов</td></tr><tr><td
style="background-color: #a6b7c7" width="400" valign="top">8. WYSIWYG редактор</td></tr><tr><td
style="background-color: #f0f0f0" width="400" valign="top">9. Категории/подкатегории/товары</td></tr><tr><td
style="background-color: #a6b7c7" width="400" valign="top">10. Автоматическое изменение размеров изображений</td></tr><tr><td
style="background-color: #f0f0f0" width="400" valign="top">11. Небольшая встроеная CMS</td></tr><tr><td
style="background-color: #a6b7c7" width="400" valign="top">самому пришлось разработать</td></tr><tr><td
style="background-color: #f0f0f0" width="400" valign="top">12. Модуль кеширования</td></tr></tbody></table> ]]></content:encoded> <wfw:commentRss>http://look-in.net/2009/11/25/wo-da-ru/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
