Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - crazygeorgio

Страницы: [1] 2
1
В самом контенте перестали обрабатываться tpl-макросы, типа тех же ссылок %content get_page_url(52)%, хотя в конфиге все стоит xml-macroses.allowed[] = "'content/get_page_url'" версия системы последняя, обновлений не требует, шаблонизатор php

2
Приветствую! Суть проблемы такая, сделали выгрузку YML через модуль обмена данными, но цены на сайте меняются каждый день, таким образом, цена в YML стоит не актуальная, можно ли по крону обновлять выгрузку? или же есть еще какие-то варианты, в каком направлении смотреть?

3
У клиента хост на godaddy.com, поставил там umi, тормозит неимоверно, сайт-визитки, может кто сталкивался с проблемами? решаемы? может есть какие-то варианты?

4
Цены товаров зависят от региона, выбранного на сайте! Однако, при добавлении товара в корзину и при дальнейшем изменении региона цены в корзине не пересчитываются. Написан метод, вызываю его при смене региона, вроде работает. Суть в том, что беру корзину, перебираю в ней товары, удаляю их и добавляю заново... может можно как-то и иначе?

public function basketRefresh() {
$order = $this->getBasketOrder();
$orderItems = $order->getItems();
if (count($orderItems) == 0) return false;

foreach($orderItems as $orderItem) {

$options = $orderItem->getOptions();
$amount = $orderItem->getAmount();

$element = $orderItem->getItemElement();
$orderItem->remove();
$orderItemNew = orderItem::create($element->id);

                if ($orderItemNew instanceof optionedOrderItem) {
foreach($options as $optionName => $optionId) {
if ($optionId) {
$orderItemNew->appendOption($optionName, $optionId);
}
}
}

$orderItemNew->setAmount($amount ? $amount : 1);
$orderItemNew->refresh();
$order->appendItem($orderItemNew);
}

$order->refresh();
}

5
Кто-нибудь подскажите, как в php-шаблонизаторе вызывать extProps???

скажем есть вывод новостей <?=$this->render($this->macros('news', 'lastlist', array(15,null,3)), 'news/lastnews')?>

куда extProps здесь вставлять???

6
добавляем Объектам каталога еще два числовых поля price_dollar и price_euro, далее выводим пользователям только цену в рублях, у рахных объектов может быть цена задана как в рублях, так и в любой другой валюте.

в папке emarket в __custom.php прописали метод

public function OnPriceValue($e)
{
$value = & $e->getRef('price');
$object_id = $e->getParam('object_id');
$object = umiObjectsCollection::getInstance()->getObject($object_id);
if ($object instanceof umiObject)
{
$price_dollar = $object->getValue('price_dollar');
$price_euro = $object->getValue('price_euro');
if ($price_dollar or $price_euro)
{
$code = $price_dollar ? 'USD' : 'EUR';
$price = $price_dollar ? $price_dollar : $price_euro;
$Currency = $this->getCurrency($code);
$defaultCurrency = $this->getDefaultCurrency();
$prices = array(
$price
);
$format = $this->formatCurrencyPrice($prices, $defaultCurrency, $Currency);
$value = round($format[0]);
/*$object->setValue('price',round($format[0]));               
$object->commit;*/             
                        }
}
else return false;
}

в custom_events.php прописали

Цитировать
<?php  new umiEventListener("umiObjectProperty_loadPriceValue", "emarket", "OnPriceValue");?>

все работает ок, но при этом если цена задана в долларах или евро, то по своей сути в базе в поле цены будет стоять НОЛЬ и таким образом не будут корректно работать фильтры по рублевой цене товаров каталога, при этом закомментченные строки в __custom.php решали бы проблему, но это слишком нагружает сайт. Поэтому решили делать это по крону

в catalog в __custom.php прописали метод, который перебирает товары и ставит в них рублевую цену:

public function setRubPrice()
{
$now = time();
$pages = new selector('objects');
$pages->types('object-type')->name('catalog', 'object');
$pages->option('or-mode')->fields('price_dollar', 'price_euro');
$pages->option('or-mode')->field('next_update_price');
$pages->where('next_update_price')->eqless($now);
$pages->where('next_update_price')->isnull(true);
$pages->where('price_euro')->more(0);
$pages->where('price_dollar')->more(0);
$pages->limit(0, 100);
foreach($pages as $page)
{
$price = $page->price;
$objectId = $page->id;
$page->setValue('price', 0); [b]/* **** */ [/b]     
                $page->setValue('price',$price);      $page->setValue('next_update_price',$now + 60*60*4);     
                $page->commit();     
                umiObjectsCollection::getInstance()->unloadObject($objectId);
}

return true;
}

в custom_events.php прописали

<?php    new umiEventListener('cron', 'catalog', 'setRubPrice'); ?>

все работает, но приходится сначала сбрасывать значение цены **** $page->setValue('price',0); иначе значение в базе не меняется. Вот такая вот странность

может быть проблема в моем коде?

7
Так вот, о чем я говорил на встрече разработчиков...

итоговый файл выгрузки составляется после подготовки к выгрузке из папки /sys-temp/yml/

суть в том, что система позволяет возможность кастомизации только отдельного предложения, т.е. то что внутри <offer> мы можем менять, и то не все, та же <category> не поддается изменению, а вот то что в секции <categories> менять через /xsl/export/custom/YML.xsl не получится и вовсе!!! Конечно, умники скажут, мол приведи структуру сайта как в яндекс маркете и все будет ок, но не всегда структуру можно подогнать под маркет и не всегда заказчик пойдет на это.

Пришлось создать справочник Категория YM с категориями у которых были указаны так же родители и добавить поле типа "выпадающий список" в тип данных Объекта каталога, и все, все что можно сделать легальным способом, далее так...

/classes/system/subsystems/export/exporters/YMLExporter.php
выводим список своих категорий в <category>
	
if (file_exists($dirName . 'categories' . $id))
{
file_put_contents($xml, '<categories>', FILE_APPEND);
$categories = new selector('objects');
$categories->types('object-type')->id('141');
foreach($categories as $category)
{
$id = $category->id;
$parent_id = $category->parent;
file_put_contents($xml, iconv('utf-8', 'windows-1251', '<category id="' . $id . '"' . ($parent_id ? ' parentId="' . $parent_id . '"' : '') . '>' . $category->name . '</category>') , FILE_APPEND);
}

file_put_contents($xml, '</categories>', FILE_APPEND);
}
 


меняем категорию в <offer>
	
$hierarchy = umiHierarchy::getInstance();

foreach($elementsToExport as $fileId)
{
$filePath = $dirName . $fileId . '.txt';
if (is_file($filePath))
{
$offer = file_get_contents($filePath);

preg_match('|<url>http://(.*)</url>|', $offer, $matches);
$url = explode('/', $matches[1]);
unset($url[0]);
$url = '/' . implode('/', $url);
$id = $hierarchy->getIdByPath($url, true);
$element = $hierarchy->getElement($id, true, true);
$category_ym = $element->category_ym;
$offer = preg_replace("!<categoryId>(.*)</categoryId>!", '<categoryId>' . $category_ym . '</categoryId>', $offer);
file_put_contents($xml, $offer, FILE_APPEND);
}


вот как-то, в прогинге не асс, если есть более простые и элегантные способы решения данной задачи, то хотелось бы увидеть ваши предложения

8
Здравствуйте! Необходимо добавить способ оплаты через paypal, кто-нибудь делал? Может быть есть какие-то встроенные незадокументированные решения?

9
Вот такая ошибка выплывает когда фильтруются товары в каталоге, подскажите, пожалуйста, может быть кто знает как ее убрать?

Warning:  mkdir() [function.mkdir: File name too long in xxx/public_html/libs/cacheControl.php on line 321

10
Не кидайте камнями, перепробовал уже кучу всевозможных вариантов, какие-то работают, но через раз или на каких-то страницах вообще не работают, не могу понять почему и как так.

Сейчас использую инструкцию

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

в конфиге такие установки
[seo]
folder-redirect = "1"
calculate-last-modified = "1"
calculate-e-tag = "0"
watch-redirects-history = "1"
crawl-delay = "3"
primary-domain-redirect = "0"
alt-name-separator = "_"
primary-www = "1"
index-redirect = "1"
url-suffix = "/"
url-suffix.add = "1"

в системе сам домен вбит с www

сейчас на при переходе на неокторые страницы все ок, идет редирект, а на некоторые если вводишь адрес без www таки открывается без редиректа, что, почему, может кто использует проверенный какой-то вариант?

вариант который тут http://umi-cms.spb.su/umi/71/redirect/ тоже почему-то не работает

11
Здравствуйте! Смотрю апи, не могу разобраться, http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/primery_ispolzovaniya_vozmozhnostej_api/obekty/

Почему выводит данные гостя, если я авторизован на сайте под админом? Как получить реальные свои данные?

12
В общем в разделе каталога есть два типа данных, у обоих есть свойство f_tip_osushitelya, при этом при запросе fields_filter[f_tip_osushitelya]=xxxx выводятся только объекты каталога одного типа, объекты второго типа данных опускаются... в чем может быть дело?

13
Создал кастомный метод cart_custom в модуле интернет-магазина

в нем запрашиваю id текущего покупателя
$customer_id   = customer::get()->id;

в permissions.custom.php прописал
'purchasing' => array('cart_custom')

но почему-то возвращает всегда левый id, что-то вроде id покупателя-гостя, вместо текущего... в чем може быть ошибка? пробовал и через $customer_id = (int) getCookie('customer-id'); все-равно

14
Вопрос, когда заходишь в редактирование типов данных и нажимаешь редактирование конкретной характеристики... мне необходимо выводить для поля подсказка не стоку input, а текстовый блок textarea. Может кто знает где шаблон этот правится, пробовал искать ничего не вышло(

15
Здравствуйте! Есть в планах разработать портал на юми с единовременной посещаемостью 100-200 человек в реальном времени. Реально ли это на юми? Или вопрос упирается в ресурсы хостинга?

Страницы: [1] 2