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

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

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


Сообщения - sinneren

Страницы: [1] 2
1
Картинка есть.прописана,но на сайте не отображается.

2
Попробовал поиграться с выборкой
$pages->where('is_active')->equals(false);
      $pages->where('begin_time')->eqless(time());
      $pages->where('end_time')->more(time()); и без этой строки. с ней вообще ноль.
При выборке $pages->where('begin_time')->eqless(date("Y-m-d H:i:s", time())); и старой eqless(time()) выборка аналогична. НО,если убрать вообще, то она колоссальна,160 метров лог. странно.
Выборка по ID не дает результата

3
Переделал с правильной(по идее) датой и временем, но тоже не сработало
public function cronActivateNews() {
$pages = new selector('pages');
$pages->types('hierarchy-type')->name('news', 'item');
$pages->where('is_active')->notequals(true);
$pages->where('begin_time')->eqless(date("Y-m-d H:i:s", time()));

foreach ($pages as $page){
if($page->getValue("end_time") <= date("Y-m-d H:i:s", time())){
$page->setIsActive(false);
} else {
$page->setIsActive(true);
}
$page->commit();
}
}

4

Вот скрин настройки типа данных

5
В общем, я залогировал $page массив и получил такое нечто:
umiHierarchyElement Object
(
    [rel:private] => 21
    [alt_name:private] => set_qualification_august
    [ord:private] => 18098
    [object_id:private] => 28302
    [type_id:private] => 24
    [domain_id:private] => 1
    [lang_id:private] => 1
    [tpl_id:private] => 12
    [is_deleted:private] =>
    [is_active:private] =>
    [is_visible:private] =>
    [is_default:private] =>
    [name:private] => Набор Квалификация (1 августа - 31 августа)
    [update_time:private] => 1409659797
    [object:private] =>
    [is_broken:private] =>
    [store_type:protected] => element
    [id:protected] => 20430
    [is_updated:protected] =>
    [bNeedUpdateCache:protected] =>
)
Это пример одной из акций. В целом тут не много не мало разные материалы, НО все они из RU версии, и ни одной деактивированной. Во-вторых нет нигде в массиве begin\end времени. Что, по моему, и является причиной(или одной из).

6
тип данных новость, родитель лента новостей.
Нет,активной не стала. В каком именно макросе. Они же лишь в шаблонах, выводят что-то, обрабатывают инфу,но не управляют в целом. Новость остается неактивной и в админке,а не просто не отображается.

7
Если имелось ввиду сайт.ру/udata/news/cronActivateNews
то ответ такой
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="news" method="cronActivateNew" generation-time="0.020110"/>
<!--
 This page generated in 0.130268 secs by XSLT, HTTP SCHEME MODE
-->

8
Вот это не понял. Как,что и где запустить.
Цитировать
запустите udata://news/cronActivateNews

9
Но,как я полнял, custom_event.php
запускает фунцию из __custom.php
код которой в принципе не отличается от обычной
abstract class __custom_news {
//TODO: Write here your own macroses

public function cronDeactivateNews(){
$pages = new selector('pages');
$pages->types('hierarchy-type')->name('news', 'item');
$pages->where('end_time')->eqless(time());

foreach ($pages as $page){
$page->setValue(date("h:i:s"));
$page->setIsActive(false);
$page->commit();
}
}
};

10
Текущее время сервера 16:14:54 (1409660094). Реальное совпадает.

11
Так... по порядку. Код добавления я привел просто кстати, чтоб посмотерть может там какая лишняя обработка.

Сначала я закомментировал umiEventListener,потом вручную запустил крон.пхп.

Строчка news::cronDeactivateNews исчезла,когда закомментировал строку в файле custom_event.php

12
есть еще custom_events.php с
new umiEventListener("cron", "news", "cronDeactivateNews");
может потому дважды в отчете крона идет

13
Добавление новости, может что тут
<?php
public function addNewsItem() {
$hierarchy = umiHierarchy::getInstance();
$hierarchyTypes = umiHierarchyTypesCollection::getInstance();
$objectTypes = umiObjectTypesCollection::getInstance();
$cmsController = cmsController::getInstance();

$parent_id = (int) getRequest('param0');
$object_type_id = (int) getRequest('param1');
$title = htmlspecialchars(trim(getRequest('title')));

$parentElement = $hierarchy->getElement($parent_id);
$tpl_id = $parentElement->getTplId();
$domain_id = $parentElement->getDomainId();
$lang_id = $parentElement->getLangId();

$hierarchy_type_id = $hierarchyTypes->getTypeByName("news", "item")->getId();
if(!$object_type_id) {
$object_type_id = $objectTypes->getBaseType("news", "item");
}

$object_type = $objectTypes->getType($object_type_id);
if($object_type->getHierarchyTypeId() != $hierarchy_type_id) {
$this->errorNewMessage("Object type and hierarchy type doesn't match");
$this->errorPanic();
}

$element_id = $hierarchy->addElement($parent_id, $hierarchy_type_id, $title, $title, $object_type_id, $domain_id, $lang_id, $tpl_id);

$users = $cmsController->getModule("users");
if($users instanceof def_module) {
$users->setDefaultPermissions($element_id);
}

$element = $hierarchy->getElement($element_id, true);

$element->setIsActive(true);
$element->setIsVisible(false);
$element->setName($title);

$element->commit();
$parentElement->setUpdateTime(time());
$parentElement->commit();

if($is_xslt) {
return Array("node:result" => "ok");
} else {
$this->redirect($referer_url);
}
}
?>

14
Executed event handlers:
   1. news::cronDeactivateNews (umiEventPoint), priority = 5, not critial
   2. news::feedsImportListener (umiEventPoint), priority = 5, not critial
   3. news::cronActivateNews (umiEventPoint), priority = 5, not critial
   4. dispatches::onAutosendDispathes (umiEventPoint), priority = 5, not critial
   5. emarket::onCronSyncCurrency (umiEventPoint), priority = 5, not critial
   6. config::runGarbageCollector (umiEventPoint), priority = 5, not critial

<?php
$onCronNewsRead = new umiEventListener("cron", "news", "feedsImportListener");
$onCronActivateNews = new umiEventListener("cron", "news", "cronActivateNews");
//new umiEventListener("cron", "news", "cronDeactivateNews");
?>

Дата публикации - 2014-09-02 15:38:00
Дата начала активности - 2014-09-02 15:46:00
Дата окончания активности - 2014-09-02 15:49:00

15
А где-то есть еще файл, где пишутся кастомные обработчики, вроде как у битрикса init.php?
В файле class.php один раз объявлена cronDeactivateNews и нигде и ничто к ней не ссылается там.
$pages = new selector('pages');
$pages->types('hierarchy-type')->name('news', 'item');
$pages->where('end_time')->eqless(time());

foreach ($pages as $page){
$page->setValue("test",date("h:i:s"));
$page->setIsActive(false);
$page->commit();
}

Можно полный код стандартного файла получить?

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