Klike
С нами с 14 января 2015; Место в рейтинге пользователей: #40Закалка MODX Revolution (перевод)
Своего писать я пока сомневаюсь, уровень не тот, а вот перевести полезную статью с официальной документации — это с удовольствием. Перевод местами может показаться несколько вольным, что касается формулировок, — иначе переводить скучно. Но в том, что касается технических деталей, старался быть дотошно точным. Так что, если найдёте технические неточности — ругайтесь в комментах. А на филологию прошу не жаловаться:) И тем более на идеологические расхождения с Вашим мировоззрением — тут все вопросы к авторам доков. Паранойи и почвы для громких споров среди «экспертов по безопасности» в статье предостаточно. Помни, о читатель, всё это касается в первую очередь важных и заметных проектов.
Добро пожаловать под кат.
Добро пожаловать под кат.
Сортировка тикетов (Tickets) по рейтингу
1 300
Сортировка тикетов (Tickets) по рейтингу и вывод через PdoPage. Долго искал пример на modx.pro. Нашел на одном из своих проектов.
Скрываем config.core.php
Я давненько на своих сайтах меняю адрес админки и папки /connectors/
Мне нравится, что MODX позволяет это делать и очень сложно обнаружить, что сайт работает на нём. Но тут Николай Ланец смутил меня тем, что MODX можно определить еще и по файлу /config.core.php в корне. Да, он не выдаёт никакой информации, но показывает белый экран, а веб-сервер отдаёт ответ 200.
Мне нравится, что MODX позволяет это делать и очень сложно обнаружить, что сайт работает на нём. Но тут Николай Ланец смутил меня тем, что MODX можно определить еще и по файлу /config.core.php в корне. Да, он не выдаёт никакой информации, но показывает белый экран, а веб-сервер отдаёт ответ 200.
Скрипт импорта CSV в базу данных в формате JSON
Доброго времени суток!
Написал скрипт, который будет запускаться по крону, для обновления информации на страницах из
CSV файлов, которые располагаются на других сайтах.
Скрипт вроде работает, но хочется убедиться, что всё правильно с точки зрения безопасности/оптимизации и прочего. Поэтому обращаюсь к сообществу с целью исправления ошибок, если таковые имеются.
Написал скрипт, который будет запускаться по крону, для обновления информации на страницах из
CSV файлов, которые располагаются на других сайтах.
Скрипт вроде работает, но хочется убедиться, что всё правильно с точки зрения безопасности/оптимизации и прочего. Поэтому обращаюсь к сообществу с целью исправления ошибок, если таковые имеются.
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
define('MODX_API_MODE', true);
require_once dirname(dirname(__FILE__)).'/core/config/config.inc.php';
require_once MODX_BASE_PATH . 'index.php';
$q = $modx->newQuery('modResource');
$q->where(array('parent' => 6,'published'=>1,'csvlink:!=' => ''));
$q->select('id,csvlink');
if ($q->prepare() && $q->stmt->execute()) {
while ($rowss = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
$array = array($rowss['id'] => $rowss['csvlink']);
if (($handle = fopen($rowss['csvlink'], 'r')) === false) {
die('Error opening file');
}
$headers = fgetcsv($handle, 0, ';');
$promo = array();
while ($row = fgetcsv($handle, 0, ';')) {
$promo[] = array_combine($headers, $row); // $promo[$row['0']] для выноса ID в Индекс массива
}
fclose($handle);
$promo_json = json_encode($promo);
$resource = $modx->getObject('modResource', $rowss['id']);
$resource->set('promo_json', $promo_json);
$resource->save();
$modx->cacheManager->refresh();
}
};
Интересует ваше мнение
Имеется сайт с промокодами для различных интернет-магазинов.
У каждого магазина может быть несколько промокодов/скидок:
В каждом промокоде есть подробные поля:
Думаю это можно реализовать с помощью MIGX. Нужно ли использование minishop в данном случае? Или может совершенно другим путём пойти?)
p.s. Импорт всех промокодов будет осуществляться из CSV файла, поэтому думаю использовать minishop, так как там есть встроенный импорт, который можно настроить по крону.
У каждого магазина может быть несколько промокодов/скидок:
В каждом промокоде есть подробные поля:
Думаю это можно реализовать с помощью MIGX. Нужно ли использование minishop в данном случае? Или может совершенно другим путём пойти?)
p.s. Импорт всех промокодов будет осуществляться из CSV файла, поэтому думаю использовать minishop, так как там есть встроенный импорт, который можно настроить по крону.
Fenom Tickets ms2Gallery
Вызываю getTickets в обычном режиме – всё хорошо, в Fenom – картинки не хотят показываться)
Видео докладов с прошедшего MODX Meetup Minsk 2015
Ура! Свершилось!
Все видео обработаны, выложены на youtube HD качестве, звук хороший, картинка не вау, так как в помещении света было мало, но смотреть можно.
Сразу даю ссылку на playlist, ниже в заметке все видео.
Ссылка на слайды есть в описании к каждому видео на Youtube.
Комментарии, замечания приветствуются.
Все видео обработаны, выложены на youtube HD качестве, звук хороший, картинка не вау, так как в помещении света было мало, но смотреть можно.
Сразу даю ссылку на playlist, ниже в заметке все видео.
Ссылка на слайды есть в описании к каждому видео на Youtube.
Комментарии, замечания приветствуются.
Соединяем EasyComm и mFilter2
Всем привет, и сразу к делу (кстати пишу первый раз тут, если будут ошибки — исправим).
Довольно таки часто требуется в интернет магазинах или каталогах добавить возможность пользователям писать отзывы о товарах, с этим очень хорошо справляется компонент EasyComm. Но очень часто возникает и смежная задача, слепить EasyComm с mFilter2, а именно сделать сортировку по количеству отзывов или по рейтингу товара. Выкладываю готовое решение.
Добавляем в вызов mFilter2 следующий код:
Довольно таки часто требуется в интернет магазинах или каталогах добавить возможность пользователям писать отзывы о товарах, с этим очень хорошо справляется компонент EasyComm. Но очень часто возникает и смежная задача, слепить EasyComm с mFilter2, а именно сделать сортировку по количеству отзывов или по рейтингу товара. Выкладываю готовое решение.
Добавляем в вызов mFilter2 следующий код:
&loadModels=`easycomm`
&where=`{"class_key":"msProduct"}`
&leftJoin=`{
"ecThread": {
"class": "ecThread",
"on": "msProduct.id = ecThread.resource"
}
}`
&select=`{
"msProduct": "*",
"ecThread": "ecThread.rating_simple AS rating, ecThread.count AS reviews"
}`
Cron + .sh + php
Доброго времени суток!
Пытаюсь выполнять ряд команд в файле .sh с помощью cron.
Среди команд есть на удаление папки/файла, и затем запуск импорта в minishop2.
Если вручную запускать из консоли, всё хорошо, а по крону никак не хочет импортировать.
Подскажите, пожалуйста, куда копать?)
Пытаюсь выполнять ряд команд в файле .sh с помощью cron.
Среди команд есть на удаление папки/файла, и затем запуск импорта в minishop2.
Если вручную запускать из консоли, всё хорошо, а по крону никак не хочет импортировать.
Подскажите, пожалуйста, куда копать?)
tpl.msMiniCart и Fenom
Перевожу чанки в Fenom, столкнулся с такой особенностью в миниКорзине:
Стандартный код чанка, всё работает, но…
Может кто сталкивался с подобным? Или ну его?!)) Оставить как есть?)
Стандартный код чанка, всё работает, но…
<div id="msMiniCart" [[+total_count:isnot=`0`:then=`class="full"`:else=``]]>
<div class="empty">
<h5><i class="glyphicon glyphicon-shopping-cart"></i> [[%ms2_minicart]]</h5>
[[%ms2_minicart_is_empty]]
</div>
<div class="not_empty">
<h5><i class="glyphicon glyphicon-shopping-cart"></i> [[%ms2_minicart]]</h5>
[[%ms2_minicart_goods]]: <strong class="ms2_total_count">[[+total_count]]</strong> [[%ms2_frontend_count_unit]],
[[%ms2_minicart_cost]]: <strong class="ms2_total_cost">[[+total_cost]]</strong> [[%ms2_frontend_currency]]
</div>
</div>
если перепить на Fenom, ни один из ниже написанных вариантов вызова не срабатывает{$_modx->getPlaceholder('total_count')}
{$_pls['total_count']}
{$total_count}
Стандартный же [[+total_count]]
работает, как надо.Может кто сталкивался с подобным? Или ну его?!)) Оставить как есть?)