Раньше писал про веб-разработку и интернет-рекламу без воды, теперь я пишу про серверы и железо в целом.

Позднее Ctrl + ↑

Выгрузка данных формы в Битрикс-24 (JSON)

Делаем выгрузку лидов из формы прямо в Битрикс-24.

  1. Регистрируем входящий Вебхук в Битрикс-24.
  2. Записываем код авторизации (AUTH CODE)
  3. Добавим форму и обработчик.
<? 
$defaults = array('first_name' => '', 'last_name' => '', 'phone' => '', 'email' => ''); 
if (array_key_exists('saved', $_REQUEST)) { 
$defaults = $_REQUEST; 
$queryUrl = 'https://restapi.bitrix24.ru/rest/1/AUTH_CODE/crm.lead.add.json'; 
$queryData = http_build_query(array( 'fields' => 
	array( 
		"TITLE" => $_REQUEST['first_name'].' '.$_REQUEST['last_name'], 
		"NAME" => $_REQUEST['first_name'], 
		"LAST_NAME" => $_REQUEST['last_name'], 
		"STATUS_ID" => "NEW", "OPENED" => "Y", 
		"ASSIGNED_BY_ID" => 1, 
		"PHONE" => array(
			array(
				"VALUE" => $_REQUEST['phone'], 
				"VALUE_TYPE" => "WORK" 
			)
		), 
		"EMAIL" => array(
			array(
				"VALUE" => $_REQUEST['email'], 
				"VALUE_TYPE" => "WORK" 
			)
		), 
	), 
	'params' => array("REGISTER_SONET_EVENT" => "Y") ));

$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $queryUrl, CURLOPT_POSTFIELDS => $queryData, ));
$result = curl_exec($curl); 
curl_close($curl); 

$result = json_decode($result, 1); 
if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description'].""; 
} ?> 

<form method="post" action=""> 
	Имя: <input type="text" name="first_name" size="15" value="<?=$defaults['first_name']?>"><br/> 
	Фамилия: <input type="text" name="last_name" size="15" value="<?=$defaults['last_name']?>"><br/> 
	Телефон: <input type="phone" name="phone" value="<?=$defaults['phone']?>">
	E-mail: <input type="email" name="email" value="<?=$defaults['email']?>"><br/> 

	<input type="hidden" name="saved" value="yes"> <input type="submit" value="Отправить"> 
</form>
  1. Проверим поступление данных в Битрикс-24.
 877   2018   json   битрикс

Font Awesome

Тот кто изобрёл иконочный шрифт — гений. Уже больше года я его использую на сайтах своих клиентов. Он стал незаменимым инструментом, как Bootstrap.
Сегодня для себя я обнаружил ещё одну приятную его особенность — помечать товары разными иконками. Уже давно доказано, что «SALE» и «Распродажи» стимулируют продажи. Только вот уже в печёнках эти «Хиты», «Sale» и «Акции» сидят. Поэтому я придумал следующее. Заменим слово «Акция» на иконку подарка, а слово «Хит» на иконку палец вверх и товар совершенно по другому смотрится.

А ещё, чтобы стимулировать переход на карточку товара, можно добавить на кнопку стрелочку. Ну или стрелочки, как в моём случае:

 61   2018   продажи

Мне нравится интерфейс InSales

Достался на доработку интернет-магазин на этой платформе. В целом, удобная система для интернет-магазинов с правильным интерфейсом.
Шаблонизатор типа Smarty, но со своим синтаксисом:

Есть свои ограничения, но через «костыли» можно обойти. Например, сжимает качество изображений в категориях и товарах. Такое ощущение, что сжимают не через Imagick, а через GD. Поэтому приходится сначала грузить изображение в файловый менеджер, а потом указывать полный путь до изображения.

 158   2018   insales

Универсальная форма обратной связи для Битрикса

Сегодня на одном битриксе внедрял форму обратной связи. Загвоздка была в том, что на каждой странице нужна своя форма. Решение:

<form method="post" enctype="multipart/form-data">

            <input name="name" placeholder="Ваше имя">
            <input name="email" placeholder="Email">
            <input name="phone" placeholder="Телефон">
            <input type="submit" value="Отправить">

    <?if (($_POST['name'])and($_POST['phone'])):?>
        <?
                $thm = "Заполнена заявка на сайте";
                $msg = "<b>Имя:</b> ".htmlspecialchars(stripslashes($_POST['name']))."<br>
                <b>Email:</b> ".htmlspecialchars(stripslashes($_POST['email']))."<br> 
                <b>Телефон:</b> ".htmlspecialchars(stripslashes($_POST['phone'])).";
                $mail_to = 'YOUR@POST.COM'; 
                $EOL = "\r\n";
                $boundary   = "--".md5(uniqid(time())); 
                $headers    = "MIME-Version: 1.0$EOL";
                $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
                $headers   .= "From: YOUR@POST.COM"; 
                $multipart  = "--$boundary$EOL";
                $multipart .= "Content-Type: text/html; charset=UTF-8$EOL";
                $multipart .= "Content-Transfer-Encoding: base64$EOL";
                $multipart .= $EOL;
                $multipart .= chunk_split(base64_encode($msg));
                $multipart .= "$EOL--$boundary--$EOL";
            ?>
            <p>Спасибо! Мы свяжемся с Вами в ближайшее время!</p>
            <?endif;?>
</form>
 105   2018   битрикс

Создаем иконки страниц в Simpla CMS

Задача: создать в админке инструмент по выбору иконок типа Font Awesome и вывести их в меню в шапке сайта.

Решение.

Открываем phpMyAdmin и выполняем SQL-запрос

ALTER TABLE `s_pages` ADD `icon` TEXT NOT NULL AFTER `url`;

Далее открываем /api/Pages.php (~30 и 55 строки) и добавляем в SQL-запрос:

, icon

Далее открываем /simpla/PagesAdmin.php, ищем

if($this->request->method('post'))
  	{

И ниже добавляем:

$this->pages->icon = $this->request->post('icon');

Далее открываем файл /simpla/design/html/page.tpl и добавим после ~209 строчки:

<div id="column_right">
		<div class="block layer">
			<h2>Оформление страницы</h2>
			<ul>
				<li><label class=property>Иконка</label><input name="icon" class="simpla_inp" type="text" value="{$page->icon|escape}" /></li>
			</ul>
			<p align="right" style="color: #bbb;font-size: 10px;">Список иконок можно посмотреть <a href="https://linearicons.com/free">здесь</a>.</p>
		</div>
	</div>

Чтобы вывести в шаблоне:

{if $p->icon}<span class="lnr lnr-{$p->icon}"></span>{/if}
 269   2018   simplacms

Генератор лидов Venyoo

Сегодня узнал про этот сервис от одного БМщика. Им дали задание поставить на сайт онлайн-консультант и сказали поставить именно его. Любопытства ради пошёл посмотреть почему именно его они рекомендуют.
В целом, штука хорошая. Тот же онлайн-консультант, только платишь не абонентку, а за лидов. Ништяков там достаточно, лучше посмотреть их у первоисточника, чтобы не быть сломанным телефоном.
Ссылка: клаац.

 81   2018   продажи

Owl Carousel плавный скроллинг

По умолчанию в owl carousel слайдер как-то грубо перелистывает картинки.
Лечится так:

$('.class').owlCarousel({
            smartSpeed:1000
        })
 781   2018   jquery

SSH создать ZIP-архив

Дабы не выкачивать весь сайт с помощью медленного FTP, лучше воспользоваться SSH. Чтобы создать zip архив файлов открываем Putty и пишем:

zip -r archivename.zip /path_to_folder

А чтобы распаковать архив на другом хостинге пишем в Putty:

unzip archivename.zip
 212   2018   ssh

Шорткоды в SimplaCMS

{$product->created|date} - дата создания продукта
{$product->brand} - название бренда
{$product->brand_url} - URL бренда
{foreach $product->features as $f} {if ($f->feature_id == '174')} {$f->name} {$f->value} {/if} {/foreach} - конкретное свойство товара
{$meta_keywords|escape} - мета-тег ключевые слова
{$meta_description|escape} - мета-тег с описанием
{$config->root_url} - адрес сайта
{$settings->theme|escape} - имя темы
{include file='имя_файла'} - подключить файл
{$settings->site_name|escape} - имя сайта из настроек
{$url} - адрес текущей страницы

Список будет дополняться.

 261   2018   simplacms

Произвольные переменные в Simpla CMS

Для того, чтобы добавить номер телефона компании, адрес компании или email, откроем файл SettingsAdmin.php ~20 строка и добавим:

$this->settings->company_phone = $this->request->post('company_phone');
$this->settings->company_address = $this->request->post('company_address');
$this->settings->company_email = $this->request->post('company_email');

Далее откроем файл /simpla/design/html/settings.tpl ~42 строка и добавим:

<li><label class=property>Имя компании</label><input name="company_phone" class="simpla_inp" type="text" value="{$settings->company_phone|escape}" /></li>
<li><label class=property>Имя компании</label><input name="company_address" class="simpla_inp" type="text" value="{$settings->company_address|escape}" /></li>
<li><label class=property>Имя компании</label><input name="company_email" class="simpla_inp" type="text" value="{$settings->company_email|escape}" /></li>

Столбец в SQL-таблице settings будет создана автоматически при добавлении значений в панели администратора.

Вывести можно так:

{if $settings->phone}Номер телефона: {$settings->phone}{/if}
 250   2018   simplacms
Ранее Ctrl + ↓