Klike

Klike

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

Скрипт импорта 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();
    }
};
Klike
02 февраля 2016, 13:35
modx.pro
4
1 232
0

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

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



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



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

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

Fenom Tickets ms2Gallery

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

Cron + .sh + php

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

Подскажите, пожалуйста, куда копать?)
Klike
24 декабря 2015, 21:32
modx.pro
1
1 403
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]]
работает, как надо.

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

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

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

– Архив
	– 2015
		– Декабрь 2015
		– Ноябрь 2015
		– Октябрь 2015
	–2014
		– Декабрь 2014
		– Ноябрь 2014
		– Октябрь 2014
В ресурсах, где указывается TV выводится список всех дочерних Архива, кроме нового – Декабрь 2015.
Лимит установлен 0. Не могу понять, отчего так.
Klike
10 декабря 2015, 14:26
modx.pro
2
1 123
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 родителя(раздела).

НО статьи отсортированы по возрастанию.
Как их отсортировать по убыванию? Может кто сталкивался
Klike
03 ноября 2015, 22:17
modx.pro
1
1 317
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 с информацией. Только как это сделать, пока не хватает знаний.

Подскажите, пожалуйста, как реализовать?
Klike
03 ноября 2015, 13:00
modx.pro
1
962
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`
]]
Klike
03 ноября 2015, 04:47
modx.pro
1
1 104
0

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

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

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