Klike

Klike

С нами с 14 января 2015; Место в рейтинге пользователей: #40

Скрипт импорта CSV в базу данных в формате JSON

Доброго времени суток!
Написал скрипт, который будет запускаться по крону, для обновления информации на страницах из
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();
    }
};
02 февраля 2016, 13:35
modx.pro
4
1 484
0

Интересует ваше мнение

Имеется сайт с промокодами для различных интернет-магазинов.
У каждого магазина может быть несколько промокодов/скидок:



В каждом промокоде есть подробные поля:



Думаю это можно реализовать с помощью MIGX. Нужно ли использование minishop в данном случае? Или может совершенно другим путём пойти?)

p.s. Импорт всех промокодов будет осуществляться из CSV файла, поэтому думаю использовать minishop, так как там есть встроенный импорт, который можно настроить по крону.
28 января 2016, 09:45
modx.pro
1
989
0

Fenom Tickets ms2Gallery

Вызываю getTickets в обычном режиме – всё хорошо, в Fenom – картинки не хотят показываться)
20 января 2016, 09:08
modx.pro
5
2 994
0

Cron + .sh + php

Доброго времени суток!
Пытаюсь выполнять ряд команд в файле .sh с помощью cron.
Среди команд есть на удаление папки/файла, и затем запуск импорта в minishop2.
Если вручную запускать из консоли, всё хорошо, а по крону никак не хочет импортировать.

Подскажите, пожалуйста, куда копать?)
24 декабря 2015, 21:32
modx.pro
1
1 654
0

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]]
работает, как надо.

Может кто сталкивался с подобным? Или ну его?!)) Оставить как есть?)
21 декабря 2015, 09:30
modx.pro
2
2 126
0

Список ресурсов в TV не выводит новый ресурс

Создал TV, тип ввода – Список ресурсов, структура примерно такая:

– Архив
	– 2015
		– Декабрь 2015
		– Ноябрь 2015
		– Октябрь 2015
	–2014
		– Декабрь 2014
		– Ноябрь 2014
		– Октябрь 2014
В ресурсах, где указывается TV выводится список всех дочерних Архива, кроме нового – Декабрь 2015.
Лимит установлен 0. Не могу понять, отчего так.
10 декабря 2015, 14:26
modx.pro
2
1 366
0

Сортировка статей с группировкой по родителю

Есть несколько разделов на сайте, вызов статей таким образом:
[[!getTickets?
    &parents=`0`
    &leftJoin=`{
        "parentResource": {
           "class" : "Ticket"
           , "alias" : "parentResource"
           , "on" : "parentResource.id = Ticket.parent"
       }
    }`
    &select=`{
         "Ticket": "*"
         ,"parentResource": "parentResource.menuindex as parentindex"
    }`
    &sortby=`{"parentindex":"ASC","menuindex":"DESC"}`
    &groupby=`parent`
    &showLog=`1`
]]
Всё отсортировано по menuindex родителя(раздела).

НО статьи отсортированы по возрастанию.
Как их отсортировать по убыванию? Может кто сталкивался
03 ноября 2015, 22:17
modx.pro
1
1 544
0

YandexMaps – показать на карте

Возник маленький вопрос по YandexMaps.
На сайте есть Категории компаний: Косметика, Отдых и т.д.
Внутри которых соответственно сами компании, с координатами. Все компании отлично отображаются на карте, можно отключать вывод по категориям. А как сделать ссылку вида Показать на карте, никак не могу додуматься.

Вот кусок кода, который в tpl.yandexMaps закинул:

$('.show-on-map').bind('click', function (e) {
	map.panTo(item.geometry.getCoordinates());
	if(item.balloon.isOpen()) {
		item.balloon.close();
	}
	else {
		item.balloon.open();
	}
	return false;
});
Пример взял отсюда: dimik.narod.ru/ymaps/grouping.html

Как я понимаю, нужно связать данные из JSON с ссылкой, в которой, например, указан ID ресурса(компании), и если кликнуть на ссылку, то на карте откроется balloon с информацией. Только как это сделать, пока не хватает знаний.

Подскажите, пожалуйста, как реализовать?
03 ноября 2015, 13:00
modx.pro
1
1 182
0

Поочередный вывод статей из разных разделов Ticket

Структура сайта:
Раздел 1
	– Статья 1
	– Статья 2
	– Статья 3
Раздел 2
	– Статья 1
	– Статья 2
	– Статья 3
Раздел 3
	– Статья 1
	– Статья 2
	– Статья 3
Необходимый вывод на сайте:
Раздел1-Статья1	Раздел2-Статья1	Раздел3-Статья1
Загрузить ещё

Раздел1-Статья2	Раздел2-Статья2	Раздел3-Статья2
... и т.д.
Как подобное проделать с Tickets? Чтобы из каждого раздела по одному вывести, а следующие подгружать по кнопке.
[[!pdoPage?
	&element=`getTickets`
	&limit=`9` 
	&fastMode=`0`
	&parents=`0`
	&templates=`3`
	&tpl=`tpl.cardNews.Mainpage`
	&depth=`0`
	&innerJoin=`{
		"Children": {"class":"Ticket"}
	}`
	&select=`{
		"Children":"*"
	}`
	&groupby=`Ticket.id`
	&ajaxMode=`button`
	&ajaxTplMore=`@INLINE <button class="btn btn-more">Загрузить ещё...</button>`
	&showLog=`1`
]]
03 ноября 2015, 04:47
modx.pro
1
1 356
0

Вывести все поисковые запросы на сайте

Доброго времени суток. Возник вопрос, каким образом можно вывести популярные поисковые запросы на сайте, что-то вроде облака тегов, но из запросов.

[[!pdoPage?
	&class=`mseQuery`
        &tpl=``
        &showLog=`1`
]]
[[!+page.nav]]
20 октября 2015, 13:36
modx.pro
3
1 709
0