<?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>интересно &#8212; Nikita Spivak</title>
	<atom:link href="https://nikita-sp.com.ua/tag/interesno/feed" rel="self" type="application/rss+xml" />
	<link>https://nikita-sp.com.ua</link>
	<description>web developer&#039;s portfolio</description>
	<lastBuildDate>Tue, 05 Apr 2016 15:34:11 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>Осторожно вирус trendtext.eu в Chrome!</title>
		<link>https://nikita-sp.com.ua/2016/02/ostorozhno-virus-trendtext-chrome.html</link>
					<comments>https://nikita-sp.com.ua/2016/02/ostorozhno-virus-trendtext-chrome.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Thu, 04 Feb 2016 16:27:47 +0000</pubDate>
				<category><![CDATA[Прочее]]></category>
		<category><![CDATA[интересно]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=3084</guid>

					<description><![CDATA[Интернет таит в себе множество интересных вещей, и в то же время он таит множество опасностей. Буквально вчера я обнаружил что с моим браузером Google Chrome что-то не так, когда он начал открывать внешние ссылки (ведущие с одного ресурса на другой, например с vk.com или google.com на nikita-sp.com.ua) и увидел что загружаются они через сайт [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Интернет таит в себе множество интересных вещей, и в то же время он таит множество опасностей. Буквально вчера я обнаружил что с моим <strong>браузером Google Chrome</strong> что-то не так, когда он начал открывать внешние ссылки (ведущие с одного ресурса на другой, например с vk.com или google.com на nikita-sp.com.ua) и увидел что загружаются они через <strong>сайт lnkr.us</strong>!</p>
<p><img fetchpriority="high" decoding="async" width="600" height="285" itemprop="image" class="aligncenter size-medium wp-image-3088" src="http://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus-detected-600x285.jpg" alt="Вирус trendtext.eu в Chrome" srcset="https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus-detected-600x285.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus-detected-150x71.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus-detected.jpg 631w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>А сегодня некоторые JavaScriptы на сайтах перестали работать потому что <strong>подгружались скрипты с сайта trendtext.eu</strong> и меня это окончательно вывело из себя и я решил найти причину данного беспорядка.<span id="more-3084"></span></p>
<p>Еще вчера я начал искать причину появления промежуточного ресурса <strong>lnkr.us</strong>, путем поиска в Google, а также поиском вирусов на своем компьютере, однако единственное что мне удалось обнаружить &#8212; это жалобы на расширение <strong>Chrome Currency Converter</strong>, которым я естественно не пользуюсь.</p>
<p>Как я уже и описал выше, сегодня страницы сайтов вообще перестали работать: не открывались меню, не работали кнопки и т.п. За все эти функции зачастую отвечает JavaScript, и я решил проверить консоль разработчика, и обнаружил там что какая-то из вредоносных программ добавляет в страницу дополнительные скрипты.</p>
<p>Это значит что у вас могут украсть пароли или любые другие данные, что, согласитесь, не очень приятно. И я решил искоренить этот вирус с моей машины. Ниже на скриншотах вы можете видеть пример того, как вредоносная программа внедрила кусок кода на страницы сайта.</p>

<a href="https://nikita-sp.com.ua/2016/02/ostorozhno-virus-trendtext-chrome.html/trendtext-eu-virus" data-wpel-link="internal"><img decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus.jpg" class="attachment-thumbnail size-thumbnail" alt="Вирус добавляет текст в страницу trendtext.eu в Chrome" srcset="https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus-768x413.jpg 768w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus-150x81.jpg 150w" sizes="(max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2016/02/ostorozhno-virus-trendtext-chrome.html/trendtext-eu-virus2" data-wpel-link="internal"><img decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus2.jpg" class="attachment-thumbnail size-thumbnail" alt="JavaScript не работает из-за вируса trendtext.eu в Chrome" srcset="https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus2.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus2-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus2-768x413.jpg 768w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus2-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2016/02/trendtext.eu-virus2-150x81.jpg 150w" sizes="(max-width: 128px) 100vw, 128px" /></a>

<p>Вспомнив, что на многих ресурсах жаловались на <strong>расширения Google Chrome</strong>, я решил опытным путем, методом отключения плагинов/расширений вычислить вредоносное расширение, которое внедряло этот код в тело страницы. И этим расширением оказался <strong>Responsive Web Design Tester</strong>. Если поискать данное расширение в интернете, то вы увидите что из магазина Chrome оно уже удалено.</p>
<p>В принципе такого рода плагины абсолютно бесполезны. Во-первых, в браузерах уже есть встроенная функция проверки адаптивного дизайна и достаточно нажать <strong>Ctrl+Shifl+J</strong> и нажать на иконку мобильного телефона, после чего перейти во вкладку <strong>Elements</strong> (Элементы/Дерево и т.п.). Во-вторых, можно проверить адаптивный дизайн и путем уменьшения окна браузера.</p>
<p>Ели вы столкнулись с данной проблемой &#8212; попробуйте также отключать расширения в вашем браузере и обновлять страницу &#8212; расширение, после отключения которого дефект пропадет &#8212; и есть вредоносным. Надеюсь данная статья была полезна. Следите за вашей безопасностью и не устанавливайте расширений от неизвестных и непроверенных авторов!</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2016/02/ostorozhno-virus-trendtext-chrome.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Система событий в Opencart 2.x: как использовать event</title>
		<link>https://nikita-sp.com.ua/2015/12/sistema-sobyitiy-opencart-2-ispolzovat-event.html</link>
					<comments>https://nikita-sp.com.ua/2015/12/sistema-sobyitiy-opencart-2-ispolzovat-event.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Fri, 18 Dec 2015 18:00:08 +0000</pubDate>
				<category><![CDATA[Интересное в мире]]></category>
		<category><![CDATA[OpenCart]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[интернет магазин]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2995</guid>

					<description><![CDATA[В продолжение изучения новых возможностей Opencart 2.x рассмотрим Event-систему данной CMS, которую мы слегка затронули при изучении установщика расширений (Extension Installer) в Opencart 2.x, который позволяет устанавливать модификации и расширения. В данной статье мы разберемся как работает система событий в Opencart 2.x, и как ее использовать при написании своих модулей. Данная система позволяет писать код, который будет выполняться при определенных [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>В продолжение изучения <a href="http://nikita-sp.com.ua/2015/03/novyie-funktsii-i-vozmozhnosti-opencart2.html" data-wpel-link="internal">новых возможностей Opencart 2.x</a> рассмотрим Event-систему данной CMS, которую мы слегка затронули при изучении <a href="http://nikita-sp.com.ua/2015/04/moduli-rasshireniya-i-modifikatsii-v-opencart-2.html" data-wpel-link="internal">установщика расширений (Extension Installer) в Opencart 2.x</a>, который позволяет устанавливать модификации и расширения.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/12/opencart-2-triggers.jpg" rel="lightbox[2995]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="257" itemprop="image" class="aligncenter size-medium wp-image-2997" src="http://nikita-sp.com.ua/wp-content/uploads/2015/12/opencart-2-triggers-600x257.jpg" alt="Система событий и триггеров в Opencart 2" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/12/opencart-2-triggers-600x257.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/12/opencart-2-triggers-768x329.jpg 768w, https://nikita-sp.com.ua/wp-content/uploads/2015/12/opencart-2-triggers-150x64.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/12/opencart-2-triggers.jpg 800w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>В данной статье мы разберемся как работает <strong>система событий в Opencart 2.x</strong>, и как ее использовать при написании своих модулей.<span id="more-2995"></span></p>
<p>Данная система позволяет писать код, который будет выполняться при определенных событиях, происходящих в OpenCart. Такими событиями могут быть:</p>
<ul>
<li>создание учетной записи (регистрация);</li>
<li>оформление заказа;</li>
<li>редактирование адресов пользователя;</li>
</ul>
<p>или другие ключевые события, которые имеют строку с вызовом триггера, и все это без необходимости использования vQmod или OCMOD, или изменения файлов системы! С помощью системы событий, вы можете избежать ошибок, которые происходят, когда вы используете систему модификаций вроде vQmod или OCMOD.</p>
<h2>Как работают события Opencart 2.x</h2>
<p>Для использования системы событий достаточно выполнить два действия:</p>
<ol>
<li>регистрация обработчика событий;</li>
<li>реализация обработчика событий;</li>
</ol>
<p>Обработчики событий &#8212; просто методы, определенные в файлах контроллера. Вы можете использовать один файл для всех ваших методов или вы можете создать отдельный контроллер для ваших обработчиков событий.</p>
<p>Для регистрации обработчики событий необходимо использовать модель <em>extension/event</em> (для OpenCart 2.0.1+) или модель <em>tool/event</em> (для OpenCart 2.0.0.0).</p>
<p>В модели <em>extension/event</em> есть 2 метода:</p>
<ol>
<li>addEvent($code, $trigger, $action);</li>
<li>deleteEvent($code).</li>
</ol>
<p>Не сложно догадаться, что функция <em>addEvent()</em> используется для регистрации обработчиков событий, а <em>deleteEvent()</em> используется для отмены регистрации. Это позволяет зарегистрировать свои обработчики событий в методе <em>install()</em> контроллера вашего модуля в <em>admin</em> разделе, а также удалить их, когда ваш модуль удаляется, для чего используется метод <em>uninstall()</em> этого же файла контроллера.</p>
<p>Аргумент <em>$code</em> &#8212; используется для группы обработчиков событий. Здесь вы указываете название вашего модуля.</p>
<p>Аргумент <em>$trigger</em>  -название события, на которые вы хотели бы установить обработчик. Список всех доступных триггеров, можно найти здесь: <a href="https://github.com/opencart/opencart/wiki/Events-(script-notifications)" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="ext-link wpel-icon-right">https://github.com/opencart/opencart/wiki/Events-(script-notifications)<span class="wpel-icon wpel-image wpel-icon-6"></span></a>.</p>
<p>Аргумент <em>$action</em> путь к вашей функции обработчика. Указывается в виде стандартного адреса к контроллеру. Например: <em>module/mymodule/on_install</em>.</p>
<h2>Пример событий Opencart 2.x</h2>
<p>В данном примере предполагается, что мы работаем с OpenCart 2.0.1+. Теперь давайте предположим, что мы создаем модуль под названием &#171;My Module&#187;. Файл-контроллер администратора для модуля будет admin/controller/module/mymodule.php. Файл-контроллер каталога для модуля будет catalog/controller/module/mymodule.php.</p>
<p>Модуль будет реализовывать 2 простые функции:</p>
<ol>
<li>отправку сообщения электронной почты администратору, когда удаляется магазин (мультимагазин);</li>
<li>отправку сообщения электронной почты администратору при регистрации клиента.</li>
</ol>
<p>Триггеры, которые мы будем использовать в <strong>pre.admin.store.delete</strong> и <strong>post.customer.add</strong>.</p>
<p>Для начала, мы зарегистрируем наши обработчики событий в методе <em>install()</em> нашего модуля:</p>
<pre class="brush: php; title: Код:; notranslate">
public function install() {
    $this-&gt;load-&gt;model('extension/event');
    $this-&gt;model_extension_event-&gt;addEvent('mymodule', 'pre.admin.store.delete', 'module/mymodule/on_store_delete');
    $this-&gt;model_extension_event-&gt;addEvent('mymodule', 'post.customer.add', 'module/mymodule/on_customer_add');
}
</pre>
<p>Мы также должны позаботиться о процессе удаления, и удалить обработчики событий в случае удаления модуля:</p>
<pre class="brush: php; title: Код:; notranslate">
public function uninstall() {
    $this-&gt;load-&gt;model('extension/event');
    $this-&gt;model_extension_event-&gt;deleteEvent('mymodule');
}
</pre>
<p>Далее, мы должны реализовать обработчики событий. События, название которых начинается с <strong>pre</strong>, вызываются <strong>перед</strong> выполнением действия, а события, название которых начинаются с <strong>post</strong> &#8212; <strong>после</strong> завершения действия.</p>
<p>Если нам необходимо включить домен магазина в наше сообщение, выбираем событие &#171;pre&#187; вместо &#171;post&#187;, т.к. при использовании <strong>post.admin.store.delete</strong> мы не сможем получить домен магазина.</p>
<p>Событие <strong>pre.admin.store.delete</strong> генерируется в админке, так что его обработчик должен быть реализован в файле контроллера администратора для нашего модуля. Мы хотим, чтобы наш обработчик событий уведомлял администратора об удалении магазина, и наш обработчик будет выглядеть примерно так:</p>
<pre class="brush: php; title: Код:; notranslate">
public function on_store_delete($store_id) {
    $this-&gt;load-&gt;model('setting/store');
    $store_info = $this-&gt;model_setting_store-&gt;getStore($store_id);
    $admin_mail = $this-&gt;config-&gt;get('config_email');
    mail($admin_mail, &quot;A store has been deleted&quot;, &quot;The store &quot; . $store_info['url'] . &quot; was deleted.&quot;);
}
</pre>
<p>Все, что осталось сделать, это реализовать обработчик для события <strong>post.customer.add</strong>. Мы будем делать это в каталоге контроллера нашего модуля. Метод будет уведомлять администратора, когда регистрируется новый клиент и будет выглядеть примерно так:</p>
<pre class="brush: php; title: Код:; notranslate">
public function on_customer_add($customer_id) {
    $this-&gt;load-&gt;model('account/customer');
    $customer_info = $this-&gt;model_account_customer-&gt;getCustomer($customer_id);
    $admin_mail = $this-&gt;config-&gt;get('config_email');
    mail($admin_mail, &quot;New Customer&quot;, &quot;A new customer has just registered with the following e-mail: &quot; . $customer_info['email']);
}
</pre>
<p><span style="color: #ff0000;"><strong>Внимание:</strong></span> в примере используется функция <em>mail()</em> для отправки электронной почты для простоты. В реальной ситуации для этого необходимо использовать класс OpenCart.</p>
<p>Окончательные версии наших файлов выглядит следующим образом:<br />
<em>admin/controller/module/mymodule.php</em></p>
<pre class="brush: php; title: Код:; notranslate">
&lt;?php class ControllerModuleMyModule extends Controller { public function install() { $this-&gt;load-&gt;model('extension/event');
        $this-&gt;model_extension_event-&gt;addEvent('mymodule', 'pre.admin.store.delete', 'module/mymodule/on_store_delete');
        $this-&gt;model_extension_event-&gt;addEvent('mymodule', 'post.customer.add', 'module/mymodule/on_customer_add');
    }
    
    public function uninstall() {
        $this-&gt;load-&gt;model('extension/event');
        $this-&gt;model_extension_event-&gt;deleteEvent('mymodule');
    }
    
    public function on_store_delete($store_id) {
        $this-&gt;load-&gt;model('setting/store');
        $store_info = $this-&gt;model_setting_store-&gt;getStore($store_id);
        $admin_mail = $this-&gt;config-&gt;get('config_email');
        mail($admin_mail, &quot;A store has been deleted&quot;, &quot;The store &quot; . $store_info['url'] . &quot; was deleted.&quot;);
    }
}
</pre>
<p><em>catalog/controller/module/mymodule.php</em></p>
<pre class="brush: php; title: Код:; notranslate">
&lt;?php class ControllerModuleMyModule extends Controller { public function on_customer_add($customer_id) { $this-&gt;load-&gt;model('account/customer');
        $customer_info = $this-&gt;model_account_customer-&gt;getCustomer($customer_id);
        $admin_mail = $this-&gt;config-&gt;get('config_email');
        mail($admin_mail, &quot;New Customer&quot;, &quot;A new customer has just registered with the following e-mail: &quot; . $customer_info['email']);
    }
}
</pre>
<h2>Дополнительно</h2>
<p>Помимо стандартного использования, система событий может быть использована для создания кросс-модульной интеграции. Используя объект Event ($this->event), вы можете вызвать любое событие в любой точке, а также чтобы вызвать свои собственные события.</p>
<p>Представьте себе, что вы разрабатываете модуль для комментариев. Вы создаете событие на действие по отправке комментария, например, что позволит другим разработчикам модулей создать методы-обработчики событий для ваших и выполнить код без необходимости vQmod или OCMOD. Это будет гарантировать, лучшую стабильность системы и лучший потребительский опыт. Вы также можете использовать систему для регистрации и запуска собственных событий во время выполнения.</p>
<p>Класс событий определяется в файле <em>system/engine/event.php</em>, так что вы можете взглянуть на нее для дальнейшего использования.</p>
<h2>Заключение</h2>
<p>Освоение <strong>системы событий в OpenCart</strong> выгодно во многих отношениях! И я рекомендую использовать события вместо системы модификации vQmod или OCMOD везде, где это возможно. Это позволит сократить количество глюков и несовместимостей модулей и дополнений других разработчиков с вашими. Также это позволяет создавать и использовать межмодульные связи, так что вы можете сделать несколько модулей, работающих вместе красиво и элегантно.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/12/sistema-sobyitiy-opencart-2-ispolzovat-event.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Водяные знаки на изображениях и как удалить простой водяной знак</title>
		<link>https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html</link>
					<comments>https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Fri, 13 Nov 2015 08:30:21 +0000</pubDate>
				<category><![CDATA[Создание сайтов]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[создание сайтов]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2842</guid>

					<description><![CDATA[Для защиты изображений на сайтах используются так называемые водяные знаки &#8212; полупрозрачный текст или изображение, наложенное поверх основной картинки. Это позволяет избежать простого копирования ваших авторских изображений с сайта и контент ресурса остается оригинальным. Однако насколько сложно удалить водяной знак с картинки, как защитить свои изображения так, чтобы нельзя было ими пользоваться на других сайтах [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Для защиты изображений на сайтах используются так называемые водяные знаки &#8212; полупрозрачный текст или изображение, наложенное поверх основной картинки. Это позволяет избежать простого копирования ваших авторских изображений с сайта и контент ресурса остается оригинальным.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/11/watermark.jpg" rel="lightbox[2842]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="900" height="400" itemprop="image" class="aligncenter size-full wp-image-2845" src="http://nikita-sp.com.ua/wp-content/uploads/2015/11/watermark.jpg" alt="Создавайте сильные водяные знаки, но не прячьте смысл картинки" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/watermark.jpg 900w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/watermark-600x267.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/watermark-150x67.jpg 150w" sizes="auto, (max-width: 900px) 100vw, 900px" /></a></p>
<p>Однако насколько сложно удалить водяной знак с картинки, как защитить свои изображения так, чтобы нельзя было ими пользоваться на других сайтах и в то же время не скрыть самого главного?<span id="more-2842"></span></p>
<p>Чтобы понять, как создать сложный водяной знак необходимо понять насколько легко удалить водяной знак с изображения. Для этого нам потребуется редактор изображений (Adobe Photoshop, например) и несколько изображений примеров.</p>
<h2>Как удалить водяной знак с изображения</h2>
<p>Удаление водяного знака с изображения может быть реализовано несколькими способами:</p>
<ul>
<li>обрезка изображения;</li>
<li>с помощью инструментов &#171;Восстанавливающая кисть&#187; (Healing Brush/J) или &#171;Штамп&#187; (Stamp/S);</li>
<li>с помощью заливки и инструмента &#171;Волшебная палочка&#187; (Magic Wand/W).</li>
</ul>
<p>Первый способ избавления от водяного знака самый простой и быстрый. Во втором случае злоумышленник вручную обрабатывает каждый пиксель изображения, на который был наложен водяной знак, что достаточно трудоемко и долго, однако вполне реализуемо.</p>
<p>Третий же вариант позволяет стереть водяной знак полностью, или хотя бы большую его часть буквально за считанные секунды (нажмите для просмотра):</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/11/image-watermark-removing.gif" rel="lightbox[2842]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="527" itemprop="image" class="aligncenter size-medium wp-image-2828" src="http://nikita-sp.com.ua/wp-content/uploads/2015/11/image-watermark-removing-600x527.gif" alt="Удаление водяного знака с изображения" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/image-watermark-removing-600x527.gif 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/image-watermark-removing-960x844.gif 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/image-watermark-removing-150x132.gif 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/image-watermark-removing.gif 1024w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<h3>Инструкция по удалению простых водяных знаков</h3>
<p>Данная инструкция представлена исключительно в ознакомительных целях и для проверки личных водяных знаков! Не воруйте чужие изображения!</p>
<ol>
<li>Открыть изображение.</li>
<li>Выбрать инструмент &#171;Волшебная палочка&#187;, установить значение опции &#171;Допуск&#187; в ~50, снять галочку с опции &#171;Смежные пиксели&#187;.</li>
<li>Если выделяется очень много лишних областей, то поставить галочку на опции &#171;Смежные пиксели&#187;, поиграться с опцией &#171;Допуск&#187; (уменьшить значение) и выделять области с зажатой клавишей &#171;Shift&#187;.</li>
<li>После выделения необходимо увеличить размер выделенной области на 1 пиксель. Для этого необходимо перейти в пункт меню &#171;Выделение&#187; -&gt; &#171;Модификация&#187; -&gt; &#171;Расширить&#187;.</li>
<li>Установить значение в 1 или более пикселей, в зависимости от желаемого результата.</li>
<li>Выполнить заливку выделенной области. Для этого перейти в пункт &#171;Редактирование&#187; -&gt; &#171;Выполнить заливку&#187; или нажать на клавиатуре Shift+F5.</li>
<li>Выбрать в открывшемся окне для опции &#171;Использовать&#187; значение &#171;С учетом содержимого&#187; и нажать &#171;Ок&#187;.</li>
<li>Убрать выделение.</li>
</ol>

<a href="https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/removing-watermark-from-image-1" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-1.jpg" class="attachment-thumbnail size-thumbnail" alt="Удаление водяного знака с изображения" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-1.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-1-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-1-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-1-150x81.jpg 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/removing-watermark-from-image-2-select-using-allpixels" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-allpixels.jpg" class="attachment-thumbnail size-thumbnail" alt="Удаление водяного знака с изображения - выбираем все пиксели" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-allpixels.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-allpixels-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-allpixels-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-allpixels-150x81.jpg 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/removing-watermark-from-image-2-select-using-shift-or-alt" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-shift-or-alt.jpg" class="attachment-thumbnail size-thumbnail" alt="Удаление водяного знака с изображения - выбираем смежные пиксели и добавляем все через Shift" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-shift-or-alt.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-shift-or-alt-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-shift-or-alt-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-2-select-using-shift-or-alt-150x81.jpg 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/removing-watermark-from-image-3-expand-select" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select.jpg" class="attachment-thumbnail size-thumbnail" alt="Удаление водяного знака с изображения - увеличиваем выделенную область" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select-150x81.jpg 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/removing-watermark-from-image-3-expand-select-1pixel" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select-1pixel.jpg" class="attachment-thumbnail size-thumbnail" alt="Удаление водяного знака с изображения - увеличиваем выделенную область на 1 пиксель" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select-1pixel.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select-1pixel-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select-1pixel-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-3-expand-select-1pixel-150x81.jpg 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/removing-watermark-from-image-4-fillin" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin.jpg" class="attachment-thumbnail size-thumbnail" alt="Удаление водяного знака с изображения - выбираем Заливка" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin-150x81.jpg 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/removing-watermark-from-image-4-fillin-contentfill" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin-contentfill.jpg" class="attachment-thumbnail size-thumbnail" alt="Удаление водяного знака с изображения - заливаем выделенную область содержимым изображения" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin-contentfill.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin-contentfill-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin-contentfill-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-4-fillin-contentfill-150x81.jpg 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/removing-watermark-from-image-5-deselect" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-5-deselect.jpg" class="attachment-thumbnail size-thumbnail" alt="Удаление водяного знака с изображения - снимаем выделение" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-5-deselect.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-5-deselect-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-5-deselect-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-5-deselect-150x81.jpg 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/removing-watermark-from-image-done" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="69" src="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-done.jpg" class="attachment-thumbnail size-thumbnail" alt="Удаление водяного знака с изображения - водяной знак с изображения снят" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-done.jpg 1920w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-done-600x323.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-done-960x516.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/removing-watermark-from-image-done-150x81.jpg 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>

<h2>Как подобрать водяной знак на изображение</h2>
<p>Чтобы ваше изображение нельзя было так просто украсть, необходимо использовать более сложные водяные знаки, и располагать их таким образом чтобы покрывалась максимальная площадь изображения, однако при этом необходимо помнить что пользователи все-таки должны понять смысл самого изображения. Чтобы в погоне за безопасностью не потерять смысл картинки.</p>
<p>Вот некоторые из рекомендаций по созданию водяного знака:</p>
<ul>
<li>размер и положение:
<ul>
<li>покрывает все изображение;</li>
<li>изображение замощено водяным знаком;</li>
<li>водяной знак расположен в центре изображения;</li>
</ul>
</li>
<li>водяной знак содержит:
<ul>
<li>сложные элементы (завитушки, пропись);</li>
<li>линии через все изображение;</li>
</ul>
</li>
<li>оформление:
<ul>
<li>используйте разный цвет;</li>
<li>разный размер шрифта;</li>
</ul>
</li>
<li>не скрывает сути картинки.</li>
</ul>
<p>Также можно посмотреть примеры хороших водяных знаков на фотобанках, где дизайнеры и фотографы продают свои труды. Вот пример хорошего водяного знака:</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/11/good-watermark-example-from-dreamstime.jpg" rel="lightbox[2842]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="442" itemprop="image" class="aligncenter size-medium wp-image-2829" src="http://nikita-sp.com.ua/wp-content/uploads/2015/11/good-watermark-example-from-dreamstime-600x442.jpg" alt="Пример хорошего водяного знака с сайта Dreamstime" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/good-watermark-example-from-dreamstime-600x442.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/good-watermark-example-from-dreamstime-960x707.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/good-watermark-example-from-dreamstime-150x110.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/good-watermark-example-from-dreamstime.jpg 1300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>Как видите на удаление такого водяного знака уйдет немало времени и сил, и проще купить это изображение, нежели пытаться удалить вручную водяной знак со всего изображения.</p>
<p>Но, к сожалению, даже самые сложные водяные знаки не защитят ваше изображение от очень настойчивых и кропотливых воров. Надеюсь данная статья поможет вам уберечь картинки и подобрать правильный водяной знак для их защиты. Не забывайте ставить лайк, подписываться и делиться записью в социальных сетях. Спасибо.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/11/vodyanyie-znaki-na-izobrazheniyah-i-kak-udalit-prostoy-vodyanoy-znak.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Скрыть весь контент страницы OnePress Social Locker</title>
		<link>https://nikita-sp.com.ua/2015/11/skryit-ves-kontent-stranitsyi-onepress-social-locker.html</link>
					<comments>https://nikita-sp.com.ua/2015/11/skryit-ves-kontent-stranitsyi-onepress-social-locker.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Mon, 09 Nov 2015 18:00:49 +0000</pubDate>
				<category><![CDATA[Статьи о php]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[интересно]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2788</guid>

					<description><![CDATA[Несколько дней назад я уже рассказывал о социальных блокировщиках контента, для чего они нужны и в чем их преимущества и недостатки. Сегодня я хочу поделиться одним скромным решением для сайтов на WordPress, на которых все-таки установлен бесплатный плагин социального блокировщика контента OnePress Social Locker. Данный плагин очень удобный и имеет достаточно настроек, но к сожалению, в нем отсутствует [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Несколько дней назад я уже рассказывал <a href="http://nikita-sp.com.ua/2015/11/blokirovat-kontent-sayta-cherez-sotsialnyie-seti.html" data-wpel-link="internal">о социальных блокировщиках контента</a>, для чего они нужны и в чем их преимущества и недостатки. Сегодня я хочу поделиться одним скромным решением для сайтов на <strong>WordPress</strong>, на которых все-таки установлен бесплатный плагин социального блокировщика контента <strong>OnePress Social Locker</strong>.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker.jpg" rel="lightbox[2788]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="960" height="321" itemprop="image" class="aligncenter size-large wp-image-2810" src="http://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-960x321.jpg" alt="One Press Social Locker" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-960x321.jpg 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-600x201.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-150x50.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker.jpg 983w" sizes="auto, (max-width: 960px) 100vw, 960px" /></a></p>
<p>Данный плагин очень удобный и имеет достаточно настроек, но к сожалению, в нем отсутствует опция блокирования всего контента страницы/статьи, о чем и пойдет речь.<span id="more-2788"></span></p>
<p><strong>OnePress Social Locker</strong> &#8212; это один из популярных <span style="text-decoration: underline;">бесплатных</span> (<em>если не единственный бесплатный</em>) социальных локеров контента для WordPress. Он позволяет блокировать определенный контент на странице при помощи shortcode (шорткодов/тегов, см. изображение). Вы можете создать несколько типов блокировки (текст, оформление блокирующего блока) и использовать для разных кусков контента. Например:</p>
<ol>
<li>Чтобы скачать с сайта &#8212; создадим блокировщик с текстом &#171;Ссылка скрыта, подпишитесь на группу чтобы скачать&#187; и ссылка на группу;</li>
<li>Чтобы просмотреть отдельную часть статьи &#8212; создадим блокировщик с текстом &#171;Контент защищен, поставьте лайк чтобы увидеть&#187; и кнопочки для лайков;</li>
</ol>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-2.png" rel="lightbox[2788]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="530" height="315" itemprop="image" class="aligncenter size-full wp-image-2809" src="http://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-2.png" alt="Создаем блокировщик используя One Press Social Locker для WordPress" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-2.png 530w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-2-150x89.png 150w" sizes="auto, (max-width: 530px) 100vw, 530px" /></a></p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-1.png" rel="lightbox[2788]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="530" height="650" itemprop="image" class="aligncenter size-full wp-image-2808" src="http://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-1.png" alt="Обворачиваем контент в шорткод используя One Press Social Locker для WordPress" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-1.png 530w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/one-press-social-locker-1-122x150.png 122w" sizes="auto, (max-width: 530px) 100vw, 530px" /></a>Также, плагин позволяет автоматически закрыть нужный контент в уже существующих записях: вы можете закрыть весь контент или только часть статьи, используя следующие правила:</p>
<ul>
<li>количество абзацев после которых дальнейший контент будет заблокирован;</li>
<li>скрывать контент после тега &#171;Далее&#187; (&lt;!&#8212; more &#8212;&gt;);</li>
</ul>
<p>и еще множество других. Но! Если мы скроем контент таким образом, то при необходимости убрать блокировку необходимо будет перелопатить потом вручную все записи, удаляя шорткод. Чтобы не прибегать к такому неудобному способу, было разработано следующее решение: заменить в файле <em>single.php</em> стандартный вывод контента на следующий код:</p>
<pre class="brush: php; title: Код:; notranslate">	 	 
$content = get_the_content();
$content = apply_filters('the_content', $content);
echo do_shortcode('[sociallocker]'.$content.'[/sociallocker]');
</pre>
<p>Таким образом весь контент нашей статьи будет обернут в shortcode блокировщика и его можно будет, спустя некоторое время, безболезненно и быстро убрать, при этом не редактируя все записи на вашем сайте.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/11/skryit-ves-kontent-stranitsyi-onepress-social-locker.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Блокировать контент сайта через социальные сети</title>
		<link>https://nikita-sp.com.ua/2015/11/blokirovat-kontent-sayta-cherez-sotsialnyie-seti.html</link>
					<comments>https://nikita-sp.com.ua/2015/11/blokirovat-kontent-sayta-cherez-sotsialnyie-seti.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Fri, 06 Nov 2015 14:47:28 +0000</pubDate>
				<category><![CDATA[Создание сайтов]]></category>
		<category><![CDATA[интересно]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2780</guid>

					<description><![CDATA[Сегодня мы продолжим тему социализации сайтов, и поговорим об одном из способов принудить пользователей ставить &#171;лайки&#187; и подписываться на ваш ресурс. Путешествуя просторами интернета, можно столкнуться с блокировщиками контента, которые зачастую встречаются на блогах или ресурсах с бесплатным содержимым, и помогают владельцам ресурсов получить больший отклик от аудитории. Суть таких блокировщиков заключается в сокрытии контента от посетителя сайта до тех [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Сегодня мы продолжим тему <a href="http://nikita-sp.com.ua/2014/11/sotsializatsiya-sayta-i-zachem-ona-nuzhna.html" target="_blank" data-wpel-link="internal">социализации сайтов</a>, и поговорим об одном из способов принудить пользователей ставить &#171;лайки&#187; и подписываться на ваш ресурс.</p>
<p>Путешествуя просторами интернета, можно столкнуться с блокировщиками контента, которые зачастую встречаются на блогах или ресурсах с бесплатным содержимым, и помогают владельцам ресурсов получить б<strong>о</strong>льший отклик от аудитории. Суть таких блокировщиков заключается в сокрытии контента от посетителя сайта до тех пор, пока гость не поставит лайк или не подпишется на публичную страницу/группу/аккаунт в социальных сетях. Таким образом пользователю ничего не остается делать, как поставить заветный лайк и уж после ознакомиться с содержимым страницы сайта.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/11/social-lockers-to-be-or-not-to-be.jpg" rel="lightbox[2780]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="400" itemprop="image" class="aligncenter size-full wp-image-2784" src="http://nikita-sp.com.ua/wp-content/uploads/2015/11/social-lockers-to-be-or-not-to-be.jpg" alt="Социальные блокировщики контента - нужно ли?" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/social-lockers-to-be-or-not-to-be.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/social-lockers-to-be-or-not-to-be-150x100.jpg 150w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>На первый взгляд работа такого модуля кажется каким-то издевательством над посетителями своего ресурса, однако прежде чем судить владельцев таких ресурсов и разработчиков таких модулей, давайте все-таки посмотрим что может дать такой плагин.</p>
<p><span style="color: #ff0000;"><strong>Прошу обратить внимание:</strong></span> данная статья является в большей степени дискуссионной, и хотелось бы узнать ваше мнение относительно данного вида &#171;принуждения к действию&#187; посетителя (возможно вы даже знакомы с некой статистикой), и как бы повели себя вы, встретившись с таким явлением.<span id="more-2780"></span></p>
<p>Социальные сети с каждым днем все глубже интегрируются в нашу жизнь, мы проводим в них все больше и больше времени, и это не может не сказаться на самой концепции Интернета и его развитии в целом. Практически каждый ресурс имеет свои аккаунты, официальные группы и публичные страницы в социальных сетях, а сайт оснащен большим количеством кнопок для оценки (далее &#171;лайков&#187;) отдельных страниц или всего сайта.</p>
<p>Основной задачей такой &#171;социализации&#187; проекта является постоянная связь с аудиторией: добавление новостей в социальные сети побуждает пользователя заходить на ваш ресурс, покупать товары, пользоваться вашими услугами, или хотя бы напоминает о вашем сайте. Однако это не единственное для чего используют социализацию: бытует мнение что количество &#171;лайков&#187; влияет на ранжирование сайтов в поисковой выдаче (другими словами &#8212; чем больше &#171;лайков&#187; &#8212; тем больше посетителей), а также способствует увеличению аудитории методом увеличения количества подписчиков на страницах в социальных сетях.</p>
<p>Однако, зачастую посетители <del>ленятся</del> пренебрегают или забывают поставить заветный &#171;лайк&#187;, что собственно достаточно обидно для автора статьи, или же для владельца того или иного сайта. Однако, ситуацию может спасти блокировщик контента, который спрячет контент от посетителя сайта до тех пор пока он, например, не подпишется на вашу группу/публичную станицу или не поделится ссылкой в одной из социальных сетей.</p>
<p>И тут появляется вопрос о логичности применения данной системы ограничений, ведь посетитель еще не ознакомился с контентом и не может понять насколько полезен был данный ресурс или страница. Более того, на мой взгляд, может иметь место отпугивание посетителей использование такой схемы &#171;отжимания лайков&#187;, что скажется на проценте отказа, что также не хорошо для сайта.</p>
<p>Вторым нюансом, при использовании данной системы, является простота ее реализации, ведь на самом деле весь контент уже находится на странице сайта и достаточно лишь открыть исходный код, сделать блок видимым или отключить overlay (наложенный на контент слой) и получить заветную информацию. Как это сделать видно на следующем анимационном изображении (нажмите для просмотра анимации):</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/11/social-blocker-unblock-content.gif" rel="lightbox[2780]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="527" itemprop="image" class="aligncenter size-medium wp-image-2790" src="http://nikita-sp.com.ua/wp-content/uploads/2015/11/social-blocker-unblock-content-600x527.gif" alt="social-blocker-unblock-content" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/11/social-blocker-unblock-content-600x527.gif 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/social-blocker-unblock-content-960x844.gif 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/social-blocker-unblock-content-150x132.gif 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/11/social-blocker-unblock-content.gif 1024w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>Таким образом:</p>
<ul>
<li>часть людей сможет повторить нехитрые манипуляции со страницей и открыть скрытый контент без требуемого действия, как показано выше;</li>
<li>часть людей откажется от просмотра статьи и уйдет к конкуренту;</li>
<li>часть людей поставит вожделенную оценку.</li>
</ul>
<p>Если предположить что все данные группы аудитории равны между собой, то мы получим отдачу в 33,3(3)% от объема аудитории сайта. Казалось бы неплохой процент, однако, помимо положительного результата будет еще и отрицательный:</p>
<ul>
<li>мы теряем аудиторию в 33,3(3)% на группе которая откажется от просмотра и уйдет к конкуренту, а сформированное отношение к ресурсу неблагоприятно повлияет на дальнейшие визиты данного посетителя;</li>
<li>есть вероятность того, что на посетителей из первой группы (умельцев) также неблагоприятно повлияет наличие такого блокировщика.</li>
</ul>
<p>Еще одним интересным фактором является количество установок <strong>бесплатного</strong> плагина для WordPress &#171;OnePress Social Locker&#187;, которое составляет всего 10 000, несмотря на то что плагин достаточно давно был опубликован и имеет очень много версий, соответственно видимо он не сильно полезен и востребован.</p>
<p>Основываясь на данных рассуждениях, лично я, пока что, не вижу смысла в использовании социальных блокировщиков контента, однако сама идея очень интересная. В моем понимании, социальная система должна работать следующим образом:</p>
<ul>
<li>посетитель открыл сайт;</li>
<li>ознакомился с контентом, скачал;</li>
<li>перед закрытием вкладки обязательно напомнить человеку что он забыл подписаться (например не давать закрыть окно пока не подпишется <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> с помощью стандартного диалога/алерта).</li>
</ul>
<p>На мой взгляд, именно такая конструкция является правильной, однако, возможно у вас есть иное мнение, или же у вас есть опыт работы с такими плагинами и вы можете поделиться реальной статистикой и высказать свое мнение &#8212; не стесняйтесь, пишите комментарии, и <strong>не забывайте подписываться </strong>на группы в социальных сетях<strong> и ставить &#171;лайки&#187;</strong>! <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/11/blokirovat-kontent-sayta-cherez-sotsialnyie-seti.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Качество создания сайтов, конкуренция, клиенты</title>
		<link>https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html</link>
					<comments>https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Sat, 12 Sep 2015 09:00:57 +0000</pubDate>
				<category><![CDATA[Создание сайтов]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[создание сайтов]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2556</guid>

					<description><![CDATA[Сегодня стремительно развивается IT индустрия, большинство абитуриентов подают документы на специальности по системному администрированию, разработке программного обеспечения и программированию и т.п. Большинство из них стремятся стать программистами и получать бешеные гонорары, т.к. считают что быть программистом это простая и легкая работа, но сегодня не об этом. Такая популярность данного направления приводит к бешеной конкуренции на рынке предоставления IT-услуг, и [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Сегодня стремительно развивается IT индустрия, большинство абитуриентов подают документы на специальности по системному администрированию, разработке программного обеспечения и программированию и т.п. Большинство из них стремятся стать программистами и получать бешеные гонорары, т.к. считают что быть программистом это простая и легкая работа, но сегодня не об этом.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/09/warranty-11.png" rel="lightbox[2556]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="310" height="346" itemprop="image" class="aligncenter size-full wp-image-2612" src="http://nikita-sp.com.ua/wp-content/uploads/2015/09/warranty-11.png" alt="Качество создания сайтов, конкуренция, клиенты" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/warranty-11.png 310w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/warranty-11-134x150.png 134w" sizes="auto, (max-width: 310px) 100vw, 310px" /></a></p>
<p>Такая популярность данного направления приводит к бешеной конкуренции на рынке предоставления IT-услуг, и это ведет не только к негативным последствиям для самих разработчиков, например в виде демпинга рынка и сложность в получении заказов, но и для самих заказчиков.<span id="more-2556"></span></p>
<h2>Почему это важно для заказчика</h2>
<p>Опасность для заказчиков представляется в выборе разработчика из многотысячной аудитории компаний и фрилансеров которые готовы предоставить свои <strong>услуги по созданию сайтов</strong>. О том, <a href="http://nikita-sp.com.ua/2014/08/sozdanie-sajta-vibor-razrabotchika.html" data-wpel-link="internal">как выбирать разработчика</a>,  который <strong>создаст вам сайт</strong>, я уже писал, и сегодня мы будем говорить о качестве того сайта, который вам создадут.</p>
<p>К сожалению, вне зависимости от того, к кому вы обратитесь (к студии ли, или же к фрилансеру) есть вероятность получить некачественный продукт, а ведь каждый хочет пользоваться качественными вещами, не так ли, особенно если за этот продукт были уплачены немалые средства и потрачено немало времени.</p>
<p>И самое ужасное в данной ситуации и в остальных сферах это то, что контроль качества приобретаемого продукта ложится на конечного пользователя. Однако, если у клиента есть возможность проверить качество сборки стола, автомобиля и т.п. продуктов на уровне интуитивном и логическом, то с проверкой качества IT продукта, а в данном случае с проверкой <strong>качества созданного сайта</strong>, дела обстоят печальней, т.к. в большинстве случаев заказчики абсолютно не не компетентны в данном вопросе. И если вы не хотите читать дальше и заниматься проверкой сайта, то я рекомендую вам <a href="http://nikita-sp.com.ua/contacts.html" data-wpel-link="internal">обратиться к правильному разработчику</a>.</p>
<p>Кто-то скажет, что все предельно просто, и <strong>для проверки качества работы сайта</strong> достаточно лишь зайти на него и &#171;поклацать кнопочки&#187;, однако я спешу вас разочаровать, и предлагаю ознакомиться с моими предыдущими статьями на тему качества в разработке сайтов:</p>
<ul>
<li><a href="http://nikita-sp.com.ua/2015/02/kak-ne-stoit-sozdavat-saytyi.html" target="_blank" data-wpel-link="internal">Как не стоит создавать сайты</a>;</li>
<li><a href="http://nikita-sp.com.ua/2015/06/kak-proverit-adaptivnyiy-dizayn-sayta.html" target="_blank" data-wpel-link="internal">Как проверить адаптивный дизайн сайта</a>.</li>
</ul>
<p>Таким образом, студии и фрилансеры имеют возможность создавать некачественный продукт и зарабатывать на этом деньги. Ввиду специфики моего общения, для разъяснения некоторых моментов я люблю использовать аналогии, и <strong>о создании сайта можно говорить как о построении дома</strong>. Если строители были нечестны на руку, то и дом простоит не долго, достраивать к нему что-либо будет трудоемко или вообще не возможно, и вешать на стены шкафы тоже не получится &#8212; упадут.</p>
<p>Естественно и очевидно, что каждая студия/посредник(и) старается максимально удешевить производство продукта, в нашем случае создание сайта, и единственный способ это сделать &#8212; отдать проект на разработку менее опытному и менее профессиональному разработчику. Таким образом, на выходе можем получить не совсем качественный сайт.</p>
<h2>Как получить качественный сайт</h2>
<p>В первую очередь необходимо <a href="http://nikita-sp.com.ua/contacts.html" data-wpel-link="internal">обратиться к правильному разработчику</a> ;). Последующие шаги очевидны и абсолютно всем известны, однако, несмотря на все статьи и советы, горький опыт заказчиков и исполнителей, люди продолжают преднамеренно заказывать и получать некачественные сайты.</p>
<p>В первую очередь хочется сразу обратить внимание на ценообразование, и если ваш сайт стоит как &#171;ящик водки&#187;, то и результат будет соответственным. И дело не в &#171;расходниках&#187; и &#171;себестоимости продукта&#187;, а в банальном <strong>интересе к проекту</strong>. Ведь если человек заинтересован в проекте, он занимается им с придыханием, то и результат будет соответственный. Более того, разработчик может предложить какие-то идеи, пришедшие ему в ходе разработки, по улучшению вашего сайта.</p>
<p>Следующим, и, пожалуй, самым главным в данном списке, этапом является сам процесс разработки, в котором Клиент, при всем уважении, должен участвовать по-минимуму, т.к. он уже <strong>обратился к специалистам и должен им довериться, т.к. именно эти ребята занимаются разработкой сайтов</strong>. Ведь когда вы приходите к зубному, я надеюсь, вы не даете советов как ему лечить ваши зубы? А ведь это ваше здоровье! Позвольте и разработчикам удовлетворить ваши потребности самостоятельно. В противном случае, может получиться так:</p>

<a href="https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/1-9" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="77" src="https://nikita-sp.com.ua/wp-content/uploads/2015/09/1.png" class="attachment-thumbnail size-thumbnail" alt="Качество создания сайтов, конкуренция, клиенты - комикс по созданию сайта 1" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/1.png 687w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/1-600x361.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/1-150x90.png 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/2-7" data-wpel-link="internal"><img loading="lazy" decoding="async" width="124" height="96" src="https://nikita-sp.com.ua/wp-content/uploads/2015/09/2.png" class="attachment-thumbnail size-thumbnail" alt="Качество создания сайтов, конкуренция, клиенты - комикс по созданию сайта 2" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/2.png 669w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/2-600x466.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/2-150x117.png 150w" sizes="auto, (max-width: 124px) 100vw, 124px" /></a>
<a href="https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/3-7" data-wpel-link="internal"><img loading="lazy" decoding="async" width="85" height="96" src="https://nikita-sp.com.ua/wp-content/uploads/2015/09/3.png" class="attachment-thumbnail size-thumbnail" alt="Качество создания сайтов, конкуренция, клиенты - комикс по созданию сайта 3" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/3.png 644w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/3-600x678.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/3-133x150.png 133w" sizes="auto, (max-width: 85px) 100vw, 85px" /></a>
<a href="https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/4-4" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="85" src="https://nikita-sp.com.ua/wp-content/uploads/2015/09/4.png" class="attachment-thumbnail size-thumbnail" alt="Качество создания сайтов, конкуренция, клиенты - комикс по созданию сайта 4" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/4.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/4-150x100.png 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/5-4" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="78" src="https://nikita-sp.com.ua/wp-content/uploads/2015/09/5.png" class="attachment-thumbnail size-thumbnail" alt="Качество создания сайтов, конкуренция, клиенты - комикс по созданию сайта 5" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/5.png 595w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/5-150x91.png 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/6-3" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="94" src="https://nikita-sp.com.ua/wp-content/uploads/2015/09/6.png" class="attachment-thumbnail size-thumbnail" alt="Качество создания сайтов, конкуренция, клиенты - комикс по созданию сайта 6" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/6.png 598w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/6-150x111.png 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/7-3" data-wpel-link="internal"><img loading="lazy" decoding="async" width="128" height="85" src="https://nikita-sp.com.ua/wp-content/uploads/2015/09/7.png" class="attachment-thumbnail size-thumbnail" alt="Качество создания сайтов, конкуренция, клиенты - комикс по созданию сайта 7" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/7.png 628w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/7-600x396.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/7-150x99.png 150w" sizes="auto, (max-width: 128px) 100vw, 128px" /></a>
<a href="https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/8-3" data-wpel-link="internal"><img loading="lazy" decoding="async" width="123" height="96" src="https://nikita-sp.com.ua/wp-content/uploads/2015/09/8.png" class="attachment-thumbnail size-thumbnail" alt="Качество создания сайтов, конкуренция, клиенты - комикс по созданию сайта 8" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/8.png 628w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/8-600x470.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/8-150x118.png 150w" sizes="auto, (max-width: 123px) 100vw, 123px" /></a>
<a href="https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/9-3" data-wpel-link="internal"><img loading="lazy" decoding="async" width="86" height="96" src="https://nikita-sp.com.ua/wp-content/uploads/2015/09/9.png" class="attachment-thumbnail size-thumbnail" alt="Качество создания сайтов, конкуренция, клиенты - комикс по созданию сайта 9" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/09/9.png 662w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/9-600x672.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/09/9-134x150.png 134w" sizes="auto, (max-width: 86px) 100vw, 86px" /></a>

<p>Безусловно, &#171;Клиент всегда прав&#187;, и имеет право на любые капризы, НО! Во-первых, всему есть границы, во-вторых, <strong>задача профессионального исполнителя уберечь заказчика</strong> от подобных вещей.</p>
<p>Одним из последних этапов при <strong>создании сайта</strong> является его сдача/прием. На данном этапе клиент проверяет функционал и внешний вид созданного сайта и планируется дальнейшее сотрудничество с исполнителем. К сожалению, без определенных знаний в области разработки очень сложно проверить качество сайта, его программную часть, однако проверить адаптивность и функционал вполне возможно.</p>
<p>Следуя этим простым советам вы можете получить качественный сайт. Ну а если вы уже имеете сайт, то его всегда можно изменить/переделать ;). Если у вас возникли вопросы или предложения по теме данной статьи, можете присылать их на почту через <a href="http://nikita-sp.com.ua/contacts.html" data-wpel-link="internal">форму обратной связи</a> или написать свое мнение в комментариях.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/09/kachestvo-sozdaniya-saytov-konkurentsiya-klientyi.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Локализация сайта на JavaScript l20n</title>
		<link>https://nikita-sp.com.ua/2015/06/lokalizatsiya-sayta-na-javascript-l20n.html</link>
					<comments>https://nikita-sp.com.ua/2015/06/lokalizatsiya-sayta-na-javascript-l20n.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Sat, 13 Jun 2015 17:40:15 +0000</pubDate>
				<category><![CDATA[Статьи о JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[создание сайтов]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2377</guid>

					<description><![CDATA[В первую очередь, сайт является лицом компании, публичного деятеля или любой другой личности. Целью создания сайта является расширение аудитории покупателей или пользователей услуги, представляемой на сайте, поэтому представление информации на сайте на разных языках является неотъемлимой частью для международного бизнеса. Как правило, сайты с несколькими яыками &#8212; это крупные порталы или небольшие сайты-визитки, направленные на представление [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>В первую очередь, сайт является лицом компании, публичного деятеля или любой другой личности. Целью создания сайта является расширение аудитории покупателей или пользователей услуги, представляемой на сайте, поэтому представление информации на сайте на разных языках является неотъемлимой частью для международного бизнеса.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350.jpg" rel="lightbox[2377]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="280" itemprop="image" class="aligncenter size-medium wp-image-2433" src="http://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350-600x280.jpg" alt="Локализация сайта при помощи l20n" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350-600x280.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350-150x70.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/l20n-thumb-726x350.jpg 726w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>Как правило, сайты с несколькими яыками &#8212; это крупные порталы или небольшие сайты-визитки, направленные на представление информации пользователям нескольких стран. Создание нескольких языковых версий для сайтов местного масштаба (городского, областного, масштаба страны) является абсолютно не обоснованной затратой средств и времени.<span id="more-2377"></span></p>
<p>Сегодня мы рассмотрим один из вариантов создания мультиязычного сайта при помощи JavaScript библиотеки l20n. Данная библиотека позволяет создать мультиязычный сайт используя всего несколько файлов для локализации и собственно саму библиотеку.</p>
<h2>Как локализовать сайт с помощью JavaScript</h2>
<p>Для локлизации сайта с помощью JavaScript можно использовать библиотеку l20n. Структура файлов данного фреймворка достаточно проста: файл, который необходимо локализовать с подключенным файлом скрипта l20n.js и папка с локализациями. Данный фреймворк от компании Mozilla распространяется бесплатно, и вы можете с ним ознакомится по ссылке <a href="http://l20n.org/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="ext-link wpel-icon-right">http://l20n.org/<span class="wpel-icon wpel-image wpel-icon-6"></span></a>.</p>
<p>Бибилиотека позволяет не только локализировать ваш сайт, но и сама определяет, какой язык показать пользователю, на основании его настроек на устройстве, с которого произведено посещение.</p>
<p>Интегрировать скрипт в вашу страничку достаточно просто:</p>
<ol>
<li>скачайте библиотеку по ссылке выше;</li>
<li>подключите его в файле, который необходимо локализовать;</li>
<li>разметьте соответствующим образом файл, который необходимо локализовать;</li>
<li>создайте файлы локализации.</li>
</ol>
<p>Вы можете <a href="http://nikita-sp.com.ua/wp-content/uploads/2015/04/www.zip" data-wpel-link="internal">скачать простой пример локализации</a> странички при помощи фреймворка l20n от Mozilla для трех языков: английский, русский, французский. Данный пример покажет вам наглядно как работает данная библиотека. Внимание: вам необходимо запускать демо на сервере/локальном сервере &#8212; при обычном открытии файла index.html браузер выдаст ошибку: <span style="color: #ff0000;"><em>XMLHttpRequest cannot load file:///<strong>YOUR_PATH</strong>/www/locales/browser.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.</em></span></p>
<p>Данный фреймворк очень удобный для создания небольших мультиязычных сайтов, т.к. реализация мультиязычности для крупных проектов зачастую реализуется с помощью PHP, т.к. локализация на JavaScript имеет ряд определенных положительных и негативных характеристик.</p>
<h2>Положительные и негативные стороны локализации JavaScript</h2>
<p>Одним из преимуществ такой локализации является полное ограждение разработчика от проблем перевода, а также относительно быстрая интеграция в проект &#8212; достаточно лишь создать необходимый файл локализации и прописать места где необходимо использовать подстановку строк из локализационного файла.</p>
<p>Однако, присутствуют и негативные стороны использования JavaScript как средства для локализации вашего сайта, такие как:</p>
<ol>
<li>По умолчанию, разработчики l20n предлагают оставлять теги для подстановки локализованных строк пустыми, что чревато понижением в поисковой выдаче, т.к. робот не видит текста на вашем сайте, т.к. поисковый робот парсит вашу страницу без JavaScript! Этот огромный недостаток можно с легкостью исправить, просто заполнив теги предпочтительным, преобладающим языком на вашем сайте, как это сделано в примере.</li>
<li>Поисковая система не сможет проиндексировать разные версии сайта, и будет видеть только одну версию &#8212; версию, которую вы указали в предыдущем пункте. Если реализовать локализацию на php, то можно создать для поисковой системы отдельные каталоги с разными локализациями.</li>
<li>На мой взгляд такая реализация мультиязычности не подойдет для больших порталов и крупных сайтов, т.к. она достаточно проста и не функциональна. Необходимо будет прописывать текст для каждой странички отдельно, т.е. такая конструкция позволительна исключительно для сайтов, состоящих из нескольких страниц.</li>
</ol>
<p>Несмотря на все недостатки данного фреймворка, я тем не менее рекомендую с ним ознакомиться, и использовать в небольших проектах, например лендинг пейдж, промо и т.п. страницах.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/06/lokalizatsiya-sayta-na-javascript-l20n.html/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Как проверить адаптивный дизайн сайта</title>
		<link>https://nikita-sp.com.ua/2015/06/kak-proverit-adaptivnyiy-dizayn-sayta.html</link>
					<comments>https://nikita-sp.com.ua/2015/06/kak-proverit-adaptivnyiy-dizayn-sayta.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Sat, 13 Jun 2015 06:00:53 +0000</pubDate>
				<category><![CDATA[Статьи о CSS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[вопросы]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[создание сайтов]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2417</guid>

					<description><![CDATA[В данной статье мы продолжим обсуждать адаптивный дизайн, о котором начинали говорить в предыдущей записи, посвященной различным типам верстки сайтов: адаптивной, резиновой, статической. С ростом количества мобильных устройств, все больше и больше пользователей используют планшеты и мобильные телфоны для просмотра сайтов, заказа товаров в интернет магазинах, поиска необходимой информации. А поскольку технологии также не стоят на месте, то [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>В данной статье мы продолжим обсуждать адаптивный дизайн, о котором начинали говорить в предыдущей записи, посвященной различным <a href="http://nikita-sp.com.ua/2015/02/adaptivnaya-verstka-statika-rezina.html" data-wpel-link="internal">типам верстки сайтов: адаптивной, резиновой, статической</a>.</p>
<p><img loading="lazy" decoding="async" width="600" height="360" itemprop="image" class="aligncenter wp-image-755 size-medium" src="http://nikita-sp.com.ua/wp-content/uploads/2014/04/design-600x360.png" alt="Адаптивный дизайн в разработке сайтов" srcset="https://nikita-sp.com.ua/wp-content/uploads/2014/04/design-600x360.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2014/04/design.png 800w" sizes="auto, (max-width: 600px) 100vw, 600px" /></p>
<p>С ростом количества мобильных устройств, все больше и больше пользователей используют планшеты и мобильные телфоны для просмотра сайтов, заказа товаров в интернет магазинах, поиска необходимой информации. А поскольку технологии также не стоят на месте, то на смену отдельных мобильных сайтов приходят сайты с адаптивным дизайном.<span id="more-2417"></span></p>
<p>Если раньше для поддержки мобильных устройств владельцам сайтов предлагалось разработать отдельный проект для мобильных устройств, например на поддомене m.example.com, то сегодня все решается благодаря адаптивной верстке, использование которой стало возможно, с внедрением media query (rules) в CSS3.</p>
<p>Данные медиа запросы/правила &#8212; это определенный набор стилей, которые написаны специально под мобильное устройство, имеющее определенный размер (разрешение) экрана. Принцип правил следующий: если устройство имеет размер экрана, подходящее под описанные верстальщиком условия, то применяются соответствующие символы.</p>
<p>Казалось бы все предельно просто, и многие верстальщики могли бы справится с задачей, однако, исходя из моего опыта посещения разного типа и вида сайтов, не все понимают до конца суть адаптивной верстки.</p>
<p>Как же все таки проверить сайт на наличие адаптивной верстки? Все проще чем кажется: достаточно просто изменить размер окна бразуера и проверить как сайт себя поведет. Пример адаптивной верстки вы изображен на анимированном рисунке ниже (для просмотра кликните по изображению).</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/06/change.gif" rel="lightbox[2417]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="338" itemprop="image" class="aligncenter size-medium wp-image-2419" src="http://nikita-sp.com.ua/wp-content/uploads/2015/06/change-600x338.gif" alt="Пример адаптивной верстки" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/06/change-600x338.gif 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/change-960x540.gif 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/change-150x84.gif 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/change.gif 1600w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>Как вы можете заметить, сайт подстраивается под любой размер экрана, и минимальной шириной, которую обычно поддерживают устройства &#8212; 320 пикселей. Однако, как показывает мой опыт, нередко можно встретить сайт, который подстроен под мобильные устройства, однако при изменении размера окна он не адаптируется до тех пор, пока размер окна не станет размером менее чем размер окна мобильного устройства.</p>
<p>Дело в том, что с ростом количества мобильных устройств, растет и их разновидность. Разные производители выпускают гаджеты с абсолютно непредсказуемыми размерами дисплеев, в связи с этим в верстке вашего сайта не должно быть таких вот пробелов, т.е. сайт должен выглядить как задумано во всех размерах.</p>
<p>Вот например на этом сайте мобильная версия &#171;включается&#187; поздно, и кнопка &#171;Contact&#187; закрывает собой пункты меню. В данном случае, было бы уместно дописать еще десяток строк CSS-кода для решения данной проблемы (для просмотра кликните по изображению). (сайты были найдены случайным образом, автор не пытается обидеть или оскорбить владельцев или разработчиков сайтов, представленных ниже в виде наглядных примеров)</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad.gif" rel="lightbox[2417]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="338" itemprop="image" class="aligncenter size-medium wp-image-2426" src="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad-600x338.gif" alt="Слишком поздно сайт переходит на мобильную версию" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad-600x338.gif 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad-960x540.gif 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad-150x84.gif 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad.gif 1600w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>В следующем примере вообще решили избавится от прокрутки (скроллов), в связи с чем абсолютно невозможно будет пользоваться сайтом на устройствах с маленьким разрешением экрана (для просмотра кликните по изображению):</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad2.gif" rel="lightbox[2417]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="338" itemprop="image" class="aligncenter size-medium wp-image-2425" src="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad2-600x338.gif" alt="Без скроллов" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad2-600x338.gif 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad2-960x540.gif 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad2-150x84.gif 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad2.gif 1600w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>Следующий пример &#171;адаптивности&#187; &#8212; сайт вроде адаптивный, но скрол есть, текст вылазит, элементы залазят друг на друга, образуя такую себе кашу (для просмотра кликните по изображению).</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad3.gif" rel="lightbox[2417]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="338" itemprop="image" class="aligncenter size-medium wp-image-2424" src="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad3-600x338.gif" alt="Адаптивность со скроллом" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad3-600x338.gif 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad3-960x540.gif 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad3-150x84.gif 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad3.gif 1600w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad4.gif" rel="lightbox[2417]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="338" itemprop="image" class="aligncenter size-medium wp-image-2423" src="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad4-600x338.gif" alt="Адаптивность со скроллом и кашей" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad4-600x338.gif 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad4-960x540.gif 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad4-150x84.gif 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad4.gif 1600w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>Почему нельзя проработать адаптивность для всех размеров? Почему только мобильные, совсем маленькие устройства? (для просмотра кликните по изображению)</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad5.gif" rel="lightbox[2417]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="338" itemprop="image" class="aligncenter size-medium wp-image-2422" src="http://nikita-sp.com.ua/wp-content/uploads/2015/06/bad5-600x338.gif" alt="Только маленькое разрешение экрана" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad5-600x338.gif 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad5-960x540.gif 960w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad5-150x84.gif 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/06/bad5.gif 1600w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>Таким образом, можно сказать что понимание адаптивности в наше время все еще разница. Так что проверяйте ваши сайты на адаптивность очень тщательно, ведь поддержка максимального количества устройств &#8212; основная задача адаптивного дизайна.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/06/kak-proverit-adaptivnyiy-dizayn-sayta.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Модули, расширения и модификации в OpenCart 2.x</title>
		<link>https://nikita-sp.com.ua/2015/04/moduli-rasshireniya-i-modifikatsii-v-opencart-2.html</link>
					<comments>https://nikita-sp.com.ua/2015/04/moduli-rasshireniya-i-modifikatsii-v-opencart-2.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Sun, 19 Apr 2015 22:16:53 +0000</pubDate>
				<category><![CDATA[Интересное в мире]]></category>
		<category><![CDATA[OpenCart]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[интернет магазин]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2369</guid>

					<description><![CDATA[На протяжении последнего месяца, мне удалось более тесно познакомиться с OpenCart 2, основательно разобраться с предлагаемыми движком модификациями и установщиком модулей, а также покопаться в исходном коде OpenCart 2. Данная статья является продолжением предыдущих двух постов, посвященных первому знакомству с OpenCart 2.x а также новым возможностям OpenCart 2.x. В данном посте мы рассмотрим установщик расширений, принцип его [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>На протяжении последнего месяца, мне удалось более тесно познакомиться с OpenCart 2, основательно разобраться с предлагаемыми движком модификациями и установщиком модулей, а также покопаться в исходном коде OpenCart 2. Данная статья является продолжением предыдущих двух постов, посвященных <a title="Первое впечатление о Opencart 2.0" href="http://nikita-sp.com.ua/2015/02/pervoe-vpechatlenie-o-opencart2.html" target="_blank" data-wpel-link="internal">первому знакомству с OpenCart 2.x</a> а также <a title="Новые функции и возможности Opencart 2.0" href="http://nikita-sp.com.ua/2015/03/novyie-funktsii-i-vozmozhnosti-opencart2.html" target="_blank" data-wpel-link="internal">новым возможностям OpenCart 2.x</a>.</p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/04/opencart-mods-triggers.png" rel="lightbox[2369]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="263" itemprop="image" class="aligncenter size-medium wp-image-2388" src="http://nikita-sp.com.ua/wp-content/uploads/2015/04/opencart-mods-triggers-600x263.png" alt="OpenCart 2.x - Modifications &amp; triggers" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/04/opencart-mods-triggers-600x263.png 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/opencart-mods-triggers-150x66.png 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/opencart-mods-triggers.png 800w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>В данном посте мы <strong>рассмотрим установщик расширений</strong>, принцип его работы, затронем тему <strong>vQmod в OpenCart 2.x</strong>, а также рассмотрим <strong>новые возможности, предоставляемые OpenCart 2</strong>.<span id="more-2369"></span></p>
<h2>Установщик расширений OpenCart 2.x</h2>
<p>Первым, что хотелось бы рассмотреть, это <strong>установщик расширений</strong>, т.к. это, пожалуй, один из самых основных разделов административной части для разработчика интернет магазина на основе CMS OpenCart. В предыдущих статьях, ввиду отсутствия опыта работы с новой версией движка, я мало уделял внимания данному разделу, но в данной статье я постараюсь ответить на все вопросы, с которыми могут столкнуться разработчики.</p>
<p>Для начала рассмотрим из чего состоит сам архив модуля .ocmod:</p>
<ol>
<li>новые файлы (файлы модуля) &#8212; файлы для загрузки (которые не затирают основные файлы движка), находящиеся в папке upload;</li>
<li>файл install.sql для добавления таблиц в базу данных (если необходимо);</li>
<li>файл install.xml в котором хранятся инструкции по модификации основных файлов CMS Opencart (основан на принципе xml-файлов vQmod);</li>
<li>файл install.php который содержит код, который будет выполнен во время установки.</li>
</ol>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod.jpg" rel="lightbox[2369]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="138" itemprop="image" class="aligncenter size-medium wp-image-2390" src="http://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod-600x138.jpg" alt="Архив Ocmod" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod-600x138.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod-150x35.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod.jpg 715w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod-upload.jpg" rel="lightbox[2369]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="600" height="137" itemprop="image" class="aligncenter size-medium wp-image-2389" src="http://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod-upload-600x137.jpg" alt="Папка upload в ocmod архиве" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod-upload-600x137.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod-upload-150x34.jpg 150w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/ocmod-upload.jpg 614w" sizes="auto, (max-width: 600px) 100vw, 600px" /></a></p>
<p>Как видно на скриншоте выше, структура папок в папке upload полностью повторяет стандартную структуру папок Opencart. В этих папках расположены файлы, которые будут скопированы на сервер при установке расширения.</p>
<p>Установка расширения происходит в несколько этапов:</p>
<ol>
<li>загрузка и распаковка (в случае если это архив) файлов на сервер во временную папку system/upload/;</li>
<li>если это просто .XML файл, то его содержимое будет записано в таблицу oc_modification и на этом установка закончена, а если же это архив с файлами (как в примере), то он будет разархивирован во временное хранилище;</li>
<li>проверка доступа к FTP (доступ к FTP настраивается в настройках магазина);</li>
<li>загрузка файлов из папки upload модуля;</li>
<li>выполнение запросов из .SQL файла (обновление базы данных);</li>
<li>внесение правок в существующие файлы из .XML файла (см. п.2);</li>
<li>выполнение кода из .PHP файла (спасибо, Андрей Брус);</li>
<li>проверка какие файлы будут модифицированы в ходе установки, для того чтобы выдать вам их список в окне и ожидание подтверждения об установке.</li>
</ol>
<p><a href="http://nikita-sp.com.ua/wp-content/uploads/2015/04/installation-list.png" rel="lightbox[2369]" data-wpel-link="internal"><img loading="lazy" decoding="async" width="581" height="559" itemprop="image" class="aligncenter size-full wp-image-2392" src="http://nikita-sp.com.ua/wp-content/uploads/2015/04/installation-list.png" alt="Opencart OCMOD Установка - список модифицированных файлов" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/04/installation-list.png 581w, https://nikita-sp.com.ua/wp-content/uploads/2015/04/installation-list-150x144.png 150w" sizes="auto, (max-width: 581px) 100vw, 581px" /></a></p>
<p>В конечном итоге мы получаем скопированные новые файлы в папках нашей CMS, XML файл со сценарием (инструкциями) модификации в базе данных, и кеш этих самых модификаций в папке system/modification.</p>
<p>В целом система достаточно интересная и удобная для конечного пользователя, но не для разработчика. Почему? Потому что чтобы править модификации (инструкции к изменению файлов) необходимо править базу данных. При использовании классического vQmod для OpenCart для этого было достаточно править файл.</p>
<p>Кроме очевидного минуса с точки зрения удобства модификации инструкций, присутствует определенный плюс в данном методе хранения модификаций для файлов &#8212; более защищенное хранилище. Так как в базу данных мало кто имеет доступ, а на FTP могут иметь доступ многие (например для загрузки картинок на сервер), то данный метод может иметь преимущество, однако не стоит забывать что и на FTP можно дать доступ к определенной папке. (:</p>
<p>Для себя я сделал вывод, что данная система интересная, новая, удобная, но не для разработчика (: Будем следить дальше за развитием OpenCart 2, и за развитием модификаций и расширений для этой платформы.</p>
<h2>Установка vQmod на OpenCart 2.x</h2>
<p>Многие разработчики спрашивали, возможно ли использование vQmod как на предыдущих версиях OpenCart, и мой опыт говорит о том что можно! Просто установите его как обычно и пользуйтесь на здоровье. Если возникли проблемы, или вы располагаете иной информацией &#8212; пишите в комментариях.</p>
<h2>OpenCart triggers</h2>
<p>Работая над одним из проектов, я обнаружил в коде интересную строку:</p>
<pre class="brush: php; title: Код:; notranslate">$this-&gt;event-&gt;trigger('pre.admin.attribute.add', $data);</pre>
<p><strong>UPD:</strong> чатайте полный обзор в статье <a href="http://nikita-sp.com.ua/2015/12/sistema-sobyitiy-opencart-2-ispolzovat-event.html" data-wpel-link="internal">система событий в Opencart 2.x: как использовать event</a></p>
<p>Как я понял, теперь мы (разработчики) можем использовать данные триггеры для написания функций пред- или постобработки данных перед выполнением тех или иных нативных функций. Однако какого-то определенного мануала я не нашел по данному функционалу, и скорей всего он получит большее развитие в последующих версиях OpenCart.</p>
<p>На данный момент известно, что для регистрации функции на триггер необходимо написать:</p>
<pre class="brush: php; title: Код:; notranslate">$this-&gt;event-&gt;register('post.admin.attribute.add', 'checkout/order/send_email');</pre>
<p>Однако больше информации внятной найти не удалось, если вы нашли что-то интересное или сами разобрались &#8212; пишите, дополним статью.</p>
<h2>Подведем итог</h2>
<p>В целом система развивается, обростая новыми и новыми функциями и фишками, оценить которые однозначно и объективно достаточно сложно. С моим мнением вы ознакомились, а ваше мнение буду рад прочитать в комментариях.</p>
<p>Надеюсь, очередной небольшой экскурс по новым фукнциям OpenCart 2.x был вам полезен и вы подчерпнули много новой и полезой для себя информации. Спасибо за внимание.</p>
<p><strong>UPD:</strong> ознакомьтесь с системой событий и триггеров ($this-&gt;event) в новой статье <a href="http://nikita-sp.com.ua/2015/12/sistema-sobyitiy-opencart-2-ispolzovat-event.html" data-wpel-link="internal">система событий в Opencart 2.x: как использовать event</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/04/moduli-rasshireniya-i-modifikatsii-v-opencart-2.html/feed</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title>Как в Opencart получить код языка по-умолчанию</title>
		<link>https://nikita-sp.com.ua/2015/03/kak-v-opencart-poluchit-kod-yazyika-po-umolchaniyu.html</link>
					<comments>https://nikita-sp.com.ua/2015/03/kak-v-opencart-poluchit-kod-yazyika-po-umolchaniyu.html#disqus_thread</comments>
		
		<dc:creator><![CDATA[Nikita_Sp]]></dc:creator>
		<pubDate>Wed, 04 Mar 2015 13:00:36 +0000</pubDate>
				<category><![CDATA[Статьи о php]]></category>
		<category><![CDATA[OpenCart]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[интересно]]></category>
		<guid isPermaLink="false">http://nikita-sp.com.ua/?p=2346</guid>

					<description><![CDATA[Работая над модулем SEO URL для мультиязычного интернет магазина, я столкнулся с проблемой получения кода языка  по-умолчанию. Интересный факт, однако с помощью привычной конструкции, позволяющей получить настройки интернет магазина, $this-&#62;config-&#62;get(&#8216;config_language&#8217;) нельзя получить код языка пользовательской части по-умолчанию. Однако, необходимо было решить задачу, и я нашел решение. Что ж, давайте вместе разберемся с данной проблемой. В процессе [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Работая над <a title="Модуль SEO URL для мультиязычного интернет магазина на Opencart" href="http://nikita-sp.com.ua/2015/03/module-seo-url-dlya-magazina-opencart.html" target="_blank" data-wpel-link="internal">модулем SEO URL для мультиязычного интернет магазина</a>, я столкнулся с проблемой получения кода языка  по-умолчанию. Интересный факт, однако с помощью привычной конструкции, позволяющей получить настройки интернет магазина, $this-&gt;config-&gt;get(&#8216;config_language&#8217;) нельзя получить код языка пользовательской части по-умолчанию.</p>
<p><img loading="lazy" decoding="async" width="600" height="250" itemprop="image" class="aligncenter size-medium wp-image-2349" src="http://nikita-sp.com.ua/wp-content/uploads/2015/03/opencart-get-default-shop-language-600x250.jpg" alt="Opencart get default shop language" srcset="https://nikita-sp.com.ua/wp-content/uploads/2015/03/opencart-get-default-shop-language.jpg 600w, https://nikita-sp.com.ua/wp-content/uploads/2015/03/opencart-get-default-shop-language-150x63.jpg 150w" sizes="auto, (max-width: 600px) 100vw, 600px" /></p>
<p>Однако, необходимо было решить задачу, и я нашел решение. Что ж, давайте вместе разберемся с данной проблемой.<span id="more-2346"></span></p>
<p>В процессе написания плагинов и модулей для Opencart, в контроллере можно получить доступ к настройкам самого магазина, или же отдельных модулей, однако каково было мое удивление, когда при разработке <a title="Модуль SEO URL для мультиязычного интернет магазина на Opencart" href="http://nikita-sp.com.ua/2015/03/module-seo-url-dlya-magazina-opencart.html" target="_blank" data-wpel-link="internal">модуля SEO URL для многоязычного интернет магазина</a>, при обращении к массиву конфигурации $this-&gt;config-&gt;get(&#8216;config_language&#8217;) я получал текущий язык, который выбрал пользователь.</p>
<p>То есть в данном массиве хранится код языка, на котором пользователь просматривает интернет магазин, и отнюдь не язык по-умолчанию: если по-молчанию стоит русский язык, а пользователь зашел и выбрал английский, то значение переменной $this-&gt;config-&gt;get(&#8216;config_language&#8217;) будет &#171;en&#187;.</p>
<p>Дело в том, что в файле index.php, где формируются все основные конфигурационные массивы и данные в данную переменную записывается значение текущего языка! Вот строки файла index.php, в которых видно, как в переменную заносится значение текущего языка:</p>
<pre class="brush: php; title: Код:; notranslate">
if (isset($session-&gt;data['language']) &amp;&amp; array_key_exists($session-&gt;data['language'], $languages) &amp;&amp; $languages[$session-&gt;data['language']]['status']) {
$code = $session-&gt;data['language'];
} elseif (isset($request-&gt;cookie['language']) &amp;&amp; array_key_exists($request-&gt;cookie['language'], $languages) &amp;&amp; $languages[$request-&gt;cookie['language']]['status']) {
$code = $request-&gt;cookie['language'];
} elseif ($detect) {
$code = $detect;
} else {
$code = $config-&gt;get('config_language');
}

if (!isset($session-&gt;data['language']) || $session-&gt;data['language'] != $code) {
$session-&gt;data['language'] = $code;
}

if (!isset($request-&gt;cookie['language']) || $request-&gt;cookie['language'] != $code) {
setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $request-&gt;server['HTTP_HOST']);
}

$config-&gt;set('config_language_id', $languages[$code]['language_id']);
$config-&gt;set('config_language', $languages[$code]['code']);

</pre>
<p>А как же в контроллере получить язык по-молчанию, установленный в административной части для фронтенда? После недолгого поиска необходимой информации, я пришел к выводу что сделать это все-таки можно, правда не так просто и красиво, как это можно было бы сделать, используя основной массив конфигурации.</p>
<pre class="brush: php; title: Код:; notranslate">

$this-&gt;load-&gt;model('setting/setting');
$store_settings_config = $this-&gt;model_setting_setting-&gt;getSetting(&quot;config&quot;, $this-&gt;config-&gt;get('config_store_id'));

echo $store_settings_config['config_language']; // Вот тут наш язык по-умолчанию

</pre>
<p>Вот таким вот нехитрым образом, хоть и сложнее, чем обращение в конфигурационный массив, можно получить язык пользовательской части вашего интернет магазина на Opencart по-умолчанию.</p>
<p>Данный пост размещаю тут больше, пожалуй, для себя, на будущее, однако если вы это читаете и вам помогло мое решение, не поленитесь и поставьте лайк, напишите комментарий. Заранее спасибо. Если возникли вопросы или предложения &#8212; пишите, обсудим.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nikita-sp.com.ua/2015/03/kak-v-opencart-poluchit-kod-yazyika-po-umolchaniyu.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
