Сортировка массива по ключу
Функция сортировки массива по ключу
function _ksort($data, $name, $sort = SORT_ASC)
{
foreach ($data as $key => $row)
{
$value[$key] = $row[$name];
}
array_multisort($value, $sort, $data);
return $data;
}
TypeError: Joomla.optionsStorage is undefined - быстрый fix
Если часть плагинов не работает в админке сайта и консоль разработчика выдает ошибку:
TypeError: Joomla.optionsStorage is undefined
как описывал в другой статье (Joomla 3.7.x - если не работает плагин TinyMCE), это связано с косяком параметров. Так вот нашел более предпочтительный вариант чем везде и всюду вставлять парсер параметров. Для решения задачи нам необходимо в исполняемом .js вставить кусок кода.
Joomla 3.7.x - если не работает плагин TinyMCE
Если не работает TinyMCE плагин и в консоле разработчика выдает вот такие ошибки:
TypeError: Joomla.optionsStorage is undefined - tinymce-builder.js:278:1
TypeError: Joomla.optionsStorage is undefined - tinymce.min.js:1:361
, это значит что плагин не может вытащить параметры передаваемые Joomla в json формате
Не стал долго и упорно выяснять причину и ковыряться во всей джумловской каше, а попросту написал свой парсер в обход core.js. Не стоит забывать, что это временное решение и с обновлением скорей всего слетит, а может это мой косяк в движке. В общем не удивлюсь, что вскоре косяк исправят.
И так приступим:
PhpMyAdmin убираем перенаправление на 80 порт после авторизации
- Linux
- 29.07.2017
- job
- 6822
На самом деле все очень просто
открываем /etc/phpmyadmin/config.inc.php
добавляем переменную
$cfg['PmaAbsoluteUri'] = 'https://'.$_SERVER['HTTP_HOST'].'/phpmyadmin/';
Сохраняем, перезагружаем apache2
service apache2 reload
Радуемся!
UP!
На просторах интернета найден лучший вариант. Удаляем кусок кода в libraries/Config.class.php
// Add port, if it not the default one
if (! empty($url['port'])
&& (($url['scheme'] == 'http' && $url['port'] != 80)
|| ($url['scheme'] == 'https' && $url['port'] != 443))
) {
$pma_absolute_uri .= ':' . $url['port'];
}
MySQL не применяется параметр open_files_limit (Ubuntu 16.04)
- Linux /
- ISPmanager + Ubuntu
- 11.03.2017
- job
- 3748
Обнаружился забавный косяк с лимитами в Ubuntu 16.04
Если у кого-то не выходит поднять параметр open_files_limit и
ulimit -n ulimit -Sn ulimit -Hn лимиты в /etc/security/limits.conf echo "session required pam_limits.so" >> /etc/pam.d/common-session
не помогают.
Пробуйте следующее решение: в файл /lib/systemd/system/mysql.service добавить
LimitNOFILE=65535 LimitNPROC=65535
canonical bitrix
Для улучшения рейтинга одинакового содержания размещенного на разных страницах, необходимо использовать канонические URL. Как правило это относится к страницам пагинации. На сайтах Битрикс, делаем так:
Добавляем в /bitrix/php_interface/init.php
if ($_REQUEST['PAGEN_1']) {
global $APPLICATION;
$APPLICATION->AddHeadString('<link href="http://'.$_SERVER['HTTP_HOST'].$APPLICATION->sDirPath.'" rel="canonical" />',true);
}
Соответственно в шаблоне должна быть объявлена функция:
<?$APPLICATION->ShowHead();?>
Готово!
Joomla 2.5 - API reCaptcha для работы с ajax формой
Если необходимо быстро без сторонних компонентов и модулей реализовать отправку jquery.ajax формы обратной связи и при этом защититься reCaptcha - вот решение. Сразу оговорюсь, не буду описывать как для начинающих, кому надо тот поймет как применить.
Вывод капчи в форме:
<?
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
// Обрабатываем блок dynamic_recaptcha_1 капчей
$dispatcher->trigger('onInit','dynamic_recaptcha_1');
?>
<form action="<?=JURI::root()?>?tmpl=ajax" method="POST">
<input type="text" name="name" value="" />
<input type="text" name="phone" value="" />
<div id="dynamic_recaptcha_1"></div>
<input type="submit" value="ОТПРАВИТЬ" class="submit" />
</form>
<script>
// Сценарий отправки формы на адрес обработчика
</script>
Скрипт обработчик:
$post = JRequest::get('post');
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$captcha = $dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);
if ($captcha[0] == false) {
echo 'false';
} else {
echo 'true';
}
Вот и все. Естественно не забываем выбрать reCaptcha по умолчанию и прописать в плагине ключики.
catalog.smart.filter - ajax обновление списка без AXAJ_MODE
Не нравится мне работа режима AJAX_MODE в компоненте catalog. Вот хоть убей, но ничего с битриксом в лучшую сторону с годами не меняется. Как был коммерческим продуктом, так им и остался. Где технологичность? Короче простое решение обновления списка с помощью ajax.get
В шаблоне bitrix:catalog.smart.filter редактируем script.js - ищим функцию JCSmartFilter.prototype.postHandler и редактируем следующее
//if (modef.style.display === 'none')
//{
// modef.style.display = 'inline-block';
//}
$.get(
result.FILTER_AJAX_URL,
function (data) {
$('.catalog-list').html($(data).find('.catalog-list').html());
}
);
.catalog-list - селектор который необходимо обновить. Естественно jQuery должен быть подключен.
Если не работает SECTION_CODE_PATH в bitrix:catalog
В помощь трудящимся!
Если в шаблоне bitrix:catalog.section компонента catalog не работает путь из символьных кодов, как правило это вылазит когда используется вывод товаров и из подразделов - поможет небольшой код в result_modifier.php
$ids = array();
foreach ($arResult['ITEMS'] as $arItem)
$ids[] = $arItem['ID'];
$res = CIBlockElement::GetList(array("SORT" => "ASC"), array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ACTIVE' => 'Y', 'ID' => $ids), false, false, array('ID', 'CODE', 'IBLOCK_ID' ,'DETAIL_PAGE_URL'));
while($obj = $res->GetNext())
$arRes[$obj['ID']] = $obj['DETAIL_PAGE_URL'];
foreach ($arResult['ITEMS'] as &$arItem)
$arItem['DETAIL_PAGE_URL'] = $arRes[$arItem['ID']];
Теперь в независимости от уровня нахождения в каталоге, путь к карточке товара будет выводиться истинный.
Спасибо за внимание! Всем чистого кода!
Microsoft Azure установка/настройка WEB сервера
- Linux
- 04.12.2015
- job
- 11053
Сразу обращаю внимание посетителей, я не являюсь Linux гуру, а всего лишь программист которому интересно что-то творить, поэтому на вопросы как настроить это или то ответить не смогу. Инструкция скорей рассчитана на таких как я, пытающихся что-то сделать самостоятельно.
Небольшая инструкция по установке и настройке Web-сервера на Microsoft Azure. За основу берем Ubuntu 14.04, сервер будет работать на NGINX + LAMP, php модулем mod_fcgid, в качестве ftp сервера возьмем VSFTPD. Приступим!
