www.arhetstudio.ru

Arhet. 101 лайфхак.

Генерируем 16-чный код

Простой код для удобной генерации 16-чного кода, как как для Windows.

$template   = 'X9X9-9XXX-99XX-99X9';
$k = strlen($template);
$sernum = '';
for ($i=0; $i<$k; $i++)
{
    switch($template[$i])
    {
        case 'X': $sernum .= chr(rand(65,90)); break;
        case '9': $sernum .= rand(0,9); break;
        case '-': $sernum .= '-';  break; 
    }
}

echo $sernum;

Рассылка с помощью mailchimp

Существует очень удобная библиотека "drewm/mailchimp-api" для создания рассылки

https://github.com/drewm/mailchimp-api

Можно установить с помощью composer "composer require drewm/mailchimp-api"

Или же инклудить нужные файлы библиотеки.

include('./MailChimp.php');

Инициализируем подключение:

use \DrewM\MailChimp\MailChimp;

$MailChimp = new MailChimp('xxxxxxxxxxxxxxxxxxxxx-us1');

Теперь создаем компанию

//ID списка подписчиков.
$list_id = 'xxxxxxxx';

$subject_line = 'Название рассылки';

//создание кампании
$result = $MailChimp->post("campaigns", [
    'type' => 'regular',
    'recipients' => ['list_id' => $list_id],
    'settings' => [
        'subject_line' => $subject_line,
        'from_name' => 'Arhet',
    ]
]);

$response = $MailChimp->getLastResponse();
$responseObj = json_decode($response['body'], true);

//получаем ID компании
$campaign_id = $responseObj['id'];

Создаем сам текст письма

//ID шаблона
$template_id = 9999;

//Само письмо
$url = 'campaigns/' . $campaign_id . '/content';
$result = $MailChimp->put($url, [
	'template' => [
		'id' => $template_id, 
		'sections' => [
			'title' => 'Заголовок',
			'text' => 'Текст письма',
		],
	]
]);
Отправляем письмо
$url2 = 'campaigns/' . $campaign_id . '/actions/send';
$MailChimp->post($url2);

Во внешнем файле Joomla получить языковой перевод (файл)

Возникла такая мелкая задача, загрузка языкового файла Joomla к внешнему файлу. Подцепляем.

$lang =& JFactory::getLanguage();
$lang->load('lib_joomla', JPATH_ROOT , 'ru-RU', true);

Вместо lib_joomla указываем нужный файл.

Внешний файл Joomla: Error: Failed to start application

Создал я внешний файл (external file) для Joomla.

<?php

header('Content-Type: text/html; charset=utf-8');

define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__) );
define('DS', DIRECTORY_SEPARATOR);
require_once(JPATH_BASE.DS.'includes'.DS.'defines.php');
require_once(JPATH_BASE.DS.'includes'.DS.'framework.php');

JFactory::getApplication('site')->initialise();

Все как положено. Ничего криминального.

Error: Failed to start application: Failed to start the session because headers have already been sent by

Жутко ей не нравится JFactory. Удаляешь строку JFactory::getApplication('site')->initialise все работает. Причем еще сволочь срабатывает на JFactory::getUser. При JFactory::getDbo ошибки не выдает.

Мозг сломал. Думал баг какой-то в самой версии Joomla. Решение оказалось весьма банальным. Файл был UTF-8 с кодировкой BOM. Сохранить файл в кодировке в UTF-8 без BOM. Будьте аккуратны =)

Как через jquery сделать блоки одинаковой высоты

Воспользуйтесь следующей простой функцией.

function equalHeight(elems){

   max = 0;

   elems.each(function() {

      currentHeight = $(this).height();

      if(currentHeight > max){
         max = currentHeight;
      }
   });

   elems.height(max);
}

Вызывать так:

equalHeight($("#our_clients .item"));

Первая запись

С чего-то надо начать. Например с того, что решил восстановить свой сайтик. Что это? Ну грубо говоря это моя записная книжка маленьких лайфхаков. Где-то велосипед, где-то интересное решение. Но зато все в одном месте и в структурированном виде.