Модуль Выкладываю готовое решение "Watermark" для Shop Script

Статус
В этой теме нельзя размещать новые ответы.

baltazor-vova

Профессор
Регистрация
4 Авг 2009
Сообщения
107
Реакции
35
Благодаря разработкам в этому посту Для просмотра ссылки Войди или Зарегистрируйся удалось реализовать накладку надписи на ваши картинки, так как в том посту зделали накладку надписи на картинку только для product_detailed и тока при ее увеличении здесь я детально опишу как зделать накладку надписи на все фото включая: (product_brief.tpl.html product_detailed.tpl.html и естественно на "новинки" "спецпредложения" )
1) распаковуем архив и бросаем в корень сайта
2) в файле архива image.php - меняем название своей надписи на фото которое будет у вас в дальнейшем...
3) открываем файл шаблона product_brief.tpl.html
ищем
PHP:
{if $product_info.thumbnail}
        <a class="olive" href="index.php?productID={$product_info.productID}">
            <img src="products_pictures/{$product_info.thumbnail}" 
                alt="{$product_info.name}" 
                border=0><br>
            {$smarty.const.MORE_INFO_ON_PRODUCT}
        </a><br><br>
    {else} 
        {if $product_info.picture}
            <a class="olive" href="index.php?productID={$product_info.productID}">
                <img src="products_pictures/{$product_info.picture}" 
                    alt="{$product_info.name}" 
                    border=0>
                {$smarty.const.MORE_INFO_ON_PRODUCT}
            </a><br><br>
        {/if}
    {/if}
заменяем
PHP:
{if $product_info.thumbnail}
        <a class="olive" href="index.php?productID={$product_info.productID}">
            <img src="image.php?main=products_pictures/{$product_info.thumbnail}" 
                alt="{$product_info.name}" 
                border=0><br>
            {$smarty.const.MORE_INFO_ON_PRODUCT}
        </a><br><br>
    {else} 
        {if $product_info.picture}
            <a class="olive" href="index.php?productID={$product_info.productID}">
                <img src="image.php?main=products_pictures/{$product_info.picture}" 
                    alt="{$product_info.name}" 
                    border=0>
                {$smarty.const.MORE_INFO_ON_PRODUCT}
            </a><br><br>
        {/if}
    {/if}
4) открываем файл шаблона product_detailed.tpl.html - здесь намного сложнее так как много кто использует "highslide, lightbox" для увелечения картинки в моем случаи стоит "highslide" вот код который нада записать в файл вашего шаблона
ищем
PHP:
{if $product_info.picture}
				{if $product_info.big_picture}
					{if !$printable_version}<a class="olive" href="/products_pictures/{$product_info.big_picture}" class="highslide" onclick="return hs.expand(this, {literal}{captionId: 'caption1'}{/literal})"><img id="thumb1" border="0" src="/products_pictures/{$product_info.picture}" alt="{$product_info.name}"></a>{/if}
						{if !$printable_version}<br>
заменяем
PHP:
{if $product_info.picture}
				{if $product_info.big_picture}
					{if !$printable_version}<a class="olive" href="image.php?main=products_pictures/{$product_info.big_picture}" class="highslide" onclick="return hs.expand(this, {literal}{captionId: 'caption1'}{/literal})"><img id="thumb1" border="0" src="image.php?main=products_pictures/{$product_info.picture}" alt="{$product_info.name}"></a>{/if}
						{if !$printable_version}<br>
ищем
PHP:
<a class="olive" href="/products_pictures/{$product_info.big_picture}" onclick="return hs.expand(this, {literal}{thumbnailId: 'thumb1',captionId: 'caption1'}{/literal})" style="font-size: 90%;"><center>{$smarty.const.ENLARGE_PICTURE}</center></a> <a class='highslide-caption' id='caption1'><b>{$product_info.name}</b><br>{$smarty.const.CLOSE_WINDOW}</a>
заменяем
PHP:
<a class="olive" href="image.php?main=products_pictures/{$product_info.big_picture}" onclick="return hs.expand(this, {literal}{thumbnailId: 'thumb1',captionId: 'caption1'}{/literal})" style="font-size: 90%;"><center>{$smarty.const.ENLARGE_PICTURE}</center></a> <a class='highslide-caption' id='caption1'><b>{$product_info.name}</b><br>{$smarty.const.CLOSE_WINDOW}</a>
ищем
PHP:
</td></tr></table>
					{/if}
				{else}
					<img src="/products_pictures/{$product_info.picture}" border=0 alt="{$product_info.name|escape:'html'}">
				{/if}
			{else}
				{if $product_info.thumbnail}
					{if $product_info.big_picture}
						{if !$printable_version}<a href="/products_pictures/{$product_info.big_picture}" class="highslide" onclick="return hs.expand(this, {literal}{captionId: 'caption1'}{/literal})"><img id="thumb1" border="0" src="/products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}" class="spacel"></a><br>
							{/if}
						<img border=0 src="/products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}"></a>
							{if !$printable_version}<br>
							<table class="voting"><tr><td><img src="images/enlarge.gif"></td><td>
							<a class="olive" href="/products_pictures/{$product_info.big_picture}" onclick="return hs.expand(this, {literal}{thumbnailId: 'thumb1',captionId: 'caption1'}{/literal})" style="font-size: 90%;"><center>{$smarty.const.ENLARGE_PICTURE}</center></a> <a class='highslide-caption' id='caption1'><b>{$product_info.name}</b><br>{$smarty.const.CLOSE_WINDOW}</a>
						</td></tr></table>
						{/if}
					{else}
  						<img border=0 src="/products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}">
					{/if}
				{/if}
			{/if}
заменяем
PHP:
</td></tr></table>
					{/if}
				{else}
					<img src="image.php?main=products_pictures/{$product_info.picture}" border=0 alt="{$product_info.name|escape:'html'}">
				{/if}
			{else}
				{if $product_info.thumbnail}
					{if $product_info.big_picture}
						{if !$printable_version}<a href="image.php?main=products_pictures/{$product_info.big_picture}" class="highslide" onclick="return hs.expand(this, {literal}{captionId: 'caption1'}{/literal})"><img id="thumb1" border="0" src="image.php?main=products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}" class="spacel"></a><br>
							{/if}
						<img border=0 src="image.php?main=products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}"></a>
							{if !$printable_version}<br>
							<table class="voting"><tr><td><img src="images/enlarge.gif"></td><td>
							<a class="olive" href="image.php?main=products_pictures/{$product_info.big_picture}" onclick="return hs.expand(this, {literal}{thumbnailId: 'thumb1',captionId: 'caption1'}{/literal})" style="font-size: 90%;"><center>{$smarty.const.ENLARGE_PICTURE}</center></a> <a class='highslide-caption' id='caption1'><b>{$product_info.name}</b><br>{$smarty.const.CLOSE_WINDOW}</a>
						</td></tr></table>
						{/if}
					{else}
  						<img border=0 src="image.php?main=products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}">
					{/if}
				{/if}
			{/if}
5) ну а если у Вас стоит по стандарту увеличение фото без всяких "highslide, lightbox" в product_detailed тогда вот этот код
ищем
PHP:
{* product detailed information view *}
{if $product_info ne NULL}
<table width=95% border=0 cellspacing=1 cellpadding=2 class="voting">
	<tr>
		<td width=1% align=center valign=top border=0>
{if $product_info.picture}
				{if $product_info.big_picture}
					{if !$printable_version}<a href="javascript:open_window('products_pictures/{$product_info.big_picture}',{$product_info[16]},{$product_info[17]});">{/if}<img border=0 src="products_pictures/{$product_info.picture}" alt="{$product_info.name}"></a>
						{if !$printable_version}<br>
						<table class="voting"><tr><td><img src="images/enlarge.gif"></td><td>
							<a class="olive" href="javascript:open_window('products_pictures/{$product_info.big_picture}',{$product_info[16]},{$product_info[17]});">{$smarty.const.ENLARGE_PICTURE}</a>
						</td></tr></table>
					{/if}
				{else}
					<img src="products_pictures/{$product_info.picture}" border=0 alt="{$product_info.name}">
				{/if}
			{else}
				{if $product_info.thumbnail}
					{if $product_info.big_picture}
						{if !$printable_version}<a href="javascript:open_window('products_pictures/{$product_info.big_picture}',{$product_info[16]},{$product_info[17]});">{/if}<img border=0 src="products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}"></a>{if !$printable_version}<br>
							<table class="voting"><tr><td><img src="images/enlarge.gif"></td><td>
							<a class="olive" href="javascript:open_window('products_pictures/{$product_info.big_picture}',{$product_info[16]},{$product_info[17]});">{$smarty.const.ENLARGE_PICTURE}</a>
						</td></tr></table>
						{/if}
					{else}
  						<img border=0 src="products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}">
					{/if}
				{/if}
			{/if}
заменяем
PHP:
{* product detailed information view *}
{if $product_info ne NULL}
<table width=95% border=0 cellspacing=1 cellpadding=2 class="voting">
	<tr>
		<td width=1% align=center valign=top border=0>
{if $product_info.picture}
				{if $product_info.big_picture}
					{if !$printable_version}<a href="javascript:open_window('image.php?main=products_pictures/{$product_info.big_picture}',{$product_info[16]},{$product_info[17]});">{/if}<img border=0 src="image.php?main=products_pictures/{$product_info.picture}" alt="{$product_info.name}"></a>
						{if !$printable_version}<br>
						<table class="voting"><tr><td><img src="images/enlarge.gif"></td><td>
							<a class="olive" href="javascript:open_window('image.php?main=products_pictures/{$product_info.big_picture}',{$product_info[16]},{$product_info[17]});">{$smarty.const.ENLARGE_PICTURE}</a>
						</td></tr></table>
					{/if}
				{else}
					<img src="image.php?main=products_pictures/{$product_info.picture}" border=0 alt="{$product_info.name}">
				{/if}
			{else}
				{if $product_info.thumbnail}
					{if $product_info.big_picture}
						{if !$printable_version}<a href="javascript:open_window('image.php?main=products_pictures/{$product_info.big_picture}',{$product_info[16]},{$product_info[17]});">{/if}<img border=0 src="image.php?main=products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}"></a>{if !$printable_version}<br>
							<table class="voting"><tr><td><img src="images/enlarge.gif"></td><td>
							<a class="olive" href="javascript:open_window('image.php?main=products_pictures/{$product_info.big_picture}',{$product_info[16]},{$product_info[17]});">{$smarty.const.ENLARGE_PICTURE}</a>
						</td></tr></table>
						{/if}
					{else}
  						<img border=0 src="image.php?main=products_pictures/{$product_info.thumbnail}" alt="{$product_info.name}">
					{/if}
				{/if}
			{/if}
1) Новинки
Новинки могут быть у Вас отдельной страничкой или же идти в шаблоне home.tpl.html, index.tpl.html
собственно реализация ишем в файлах шаблона (home.tpl.html index.tpl.html или же отдельный файл шаблона для новинок)ищем для "Новинок" код:
PHP:
<a href="index.php?productID={$new_product[i][2]}" target="_blank"><img border="0" width="150" src="/products_pictures/{$new_product[i][0]}" border=0></a>
заменяем:
PHP:
<a href="index.php?productID={$new_product[i][2]}" target="_blank"><img border="0" width="150" src="image.php?main=products_pictures/{$new_product[i][0]}" border=0></a>
2) Реализация на "Спецпредложения"
Открываем файл шаблона home.tmpl.html ищем код:
PHP:
{* now show special offers *}
<p>
<center>
<table border=0 width="464" cellspacing=1 cellpadding=5>
{section name=i loop=$special_offers} {if $smarty.section.i.index is div by 2}<tr>{/if}
<td valign=top>
 <table border=0 width=100% bgcolor=#{$smarty.const.CONF_MIDDLE_COLOR} cellpadding=0 cellspacing=1>
 <tr><td>
  <div align="left">
  <table border=0 bgcolor=white width=100%>
   <tr>
   <td colspan=2><a href="index.php?productID={$special_offers[i][0]}"><img src="products_pictures/{$special_offers[i][2]}" border=0></a></td>
   </tr>
   <tr>
   <td align=center class="product"><a href="index.php?productID={$special_offers[i][0]}">
	{$special_offers[i][1]}</a></td>
   </tr>
   <tr>
   <td align=center class="product_price"><b>{$special_offers[i][3]}</b></td>
   </tr>
  </table>
 	</div>
 </td></tr>
 </table>
</td>
{if ($smarty.section.i.index+1) is div by 3}</tr>{/if}
{/section}
заменяем
PHP:
{* now show special offers *}
<p>
<center>
<table border=0 width="464" cellspacing=1 cellpadding=5>
{section name=i loop=$special_offers} {if $smarty.section.i.index is div by 2}<tr>{/if}
<td valign=top>
 <table border=0 width=100% bgcolor=#{$smarty.const.CONF_MIDDLE_COLOR} cellpadding=0 cellspacing=1>
 <tr><td>
  <div align="left">
  <table border=0 bgcolor=white width=100%>
   <tr>
   <td colspan=2><a href="index.php?productID={$special_offers[i][0]}"><img src="image.php?main=products_pictures/{$special_offers[i][2]}" border=0></a></td>
   </tr>
   <tr>
   <td align=center class="product"><a href="index.php?productID={$special_offers[i][0]}">
	{$special_offers[i][1]}</a></td>
   </tr>
   <tr>
   <td align=center class="product_price"><b>{$special_offers[i][3]}</b></td>
   </tr>
  </table>
 	</div>
 </td></tr>
 </table>
</td>
{if ($smarty.section.i.index+1) is div by 3}</tr>{/if}
{/section}
Вот собственно и все, если понравилась моя идея не забываем сказать спасибо........:yahoo::yahoo:
 

Вложения

  • Watermark.rar
    38,2 KB · Просмотры: 107
проблема в том, что при каждом таком наложении, будет обращение к серверу, что может существенно увеличить нагрузку, если много товаров и большая посещаемость.
 
проблема в том, что при каждом таком наложении, будет обращение к серверу, что может существенно увеличить нагрузку, если много товаров и большая посещаемость.

З технической стороны я согласен, но лично у меня база из 8000 продуктов, и вот что скажу, магазин работает отлично, как таких заторможений нет, если внимательно смотреть код то за наложение надписи идет эта функция
PHP:
image.php?main=
а дальше путь где лежат картинки товара /product_pictures, может быть и не так вас понял но там нет такого как "при каждом наложении...." наложение идет мертво на все картинки продуктов.....
уверенно скажу глюков магазина не вижу......
 
Оно каждый раз генерит фотку на лету, поэтому нагрузка увеличивается, как по мне наложить 1 раз правильнее:
  1. при загрузке,
  2. запускаемым периодически скриптом (но надо проверять уже обработванные фото)
  3. На локальной машине, и только потом заливать
 
Оно каждый раз генерит фотку на лету, поэтому нагрузка увеличивается, как по мне наложить 1 раз правильнее:
  1. при загрузке,
  2. запускаемым периодически скриптом (но надо проверять уже обработванные фото)
  3. На локальной машине, и только потом заливать
я в этом спорить не буду , а судить из того что например ты не тестил я думаю ты не можешь, я выкинул это из проверенного мною источника, магазин работает стабильно и быстро, лично я не наблюдаю там как такую нагрузку....
Да из твоих слов:"На локальной машине, и только потом заливать" тестил я и на локальной машине, а щас з большим удовольствием пользуюсь у себя в магазине....
- "но надо проверять уже обработванные фото" - фото которые у меня раньше заливались, после подключения скрипта автоматом накладываютя "waremarkerom"
"Оно каждый раз генерит фотку на лету, поэтому нагрузка увеличивается" - это вполне спорный вопрос, если ты внимательно смотрел код так по стандарту путь к файлу рисунка продукта идет
PHP:
href="/products_pictures/{$product_info.big_picture}"
а скрипт который накладывает надпись на фото продукта имеет код такого вида
PHP:
href="image.php?main=products_pictures/{$product_info.big_picture}"
. Так что думаю тебе лучше посмотреть и потестить даный метод, ну а если у тебя есть лучшее предложения которое к сожелению я здесь не нашел выложи пожалуста и мы все будем говорить тебе Большое спасибо......
 
ну чего вы спорите?
есть метод наложения "на лету"
есть метод выборочного наложения(намертво) при загрузке изображения

кому что нравится, тем и пользуйтесь
ссылки не просите, все есть на форуме
за флуд и оффтоп последствия будут предсказуемы
 
при установке данного скрипта который накладывает надпись на фото продукта имеет код такого вида
PHP:
href="image.php?main=products_pictures/{$product_info.big_picture}"
Сделал как всё описано выше и картинки не показываются (не грузятся:(nezn:
 
при установке данного скрипта который накладывает надпись на фото продукта имеет код такого вида
PHP:
href="image.php?main=products_pictures/{$product_info.big_picture}"
Сделал как всё описано выше и картинки не показываются (не грузятся:(nezn:

Кинь свой код я посмотрю....:)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху