Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Выборка активных и не активных страниц через Selector

Автор atachРаздел Custom макросы

Ответов: 2
Просмотров: 394
Последний ответ 24 Апрель 2016, 13:02:38
от atach
Выборка похожих объектов каталога по одному свойству

Автор rauschenРаздел Custom макросы

Ответов: 5
Просмотров: 2895
Последний ответ 04 Май 2012, 11:37:10
от rauschen
Выборка USEL с несколькими параметрами для одного поля

Автор sempl84Раздел Шаблоны XSLT

Ответов: 3
Просмотров: 1648
Последний ответ 29 Ноябрь 2012, 11:05:03
от niakriss
UMI.Selector: выборка заказов только зарегистрированных пользователей

Автор atachРаздел Custom макросы

Ответов: 1
Просмотров: 177
Последний ответ 25 Май 2017, 16:10:05
от admin
Usel выборка и поле ссылка на дерево

Автор SumrakrndРаздел Шаблоны XSLT

Ответов: 88
Просмотров: 3636
Последний ответ 22 Март 2016, 18:43:38
от Sumrakrnd

0 Пользователей и 1 Гость просматривают эту тему.

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
выборка дат
« : 26 Ноябрь 2012, 12:46:21 »
Здравствуйте. Написала макрос для выборки дат. Но он выбирает даты всех новостей типа Новости. А мне надо, чтобы выбирал тип по id для моего типа данных новостей..
вот такой код:
А после того как перевела в json стал выдавать тольо 1 дату.. последнюю...  как сделать чтоб массив выдавал?

public function NewsDates()
{
$pages = new selector('pages');
$pages->types('hierarchy-type')->name('news', 'item');

$pages->where('publish_time')->eqmore(time());
//$pages->getFormattedDate("d.m.Y");
foreach($pages as $page)
echo "{$page->publish_time}\n";
$date = $page->publish_time;
$date->getFormattedDate("Y-m-d");
return json_encode($date->getFormattedDate("Y-m-d"));
}

пробовала вместо name('news', 'item'); ставить id(120);
но все равно не помогает(( выдает ошибку((( помогите, пожалуйста.....
« Последнее редактирование: 26 Ноябрь 2012, 14:09:33 от niakriss »

*

Iolanta

  • *
  • 13
  • +2/-0
    • Просмотр профиля
Re:выборка дат
« Ответ #1 : 26 Ноябрь 2012, 15:52:51 »
Вот здесь кажется выбирали по $typeId
http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/primery_ispolzovaniya_vozmozhnostej_api/perenos_dannyh/
может поможет     
        $sel = new selector("pages");
    $sel->types('object-type')->id($typeId);
    $pages = $sel->result();

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:выборка дат
« Ответ #2 : 26 Ноябрь 2012, 16:01:20 »
а разве так можно? выборку "страниц" делать.. а тип "объекта" в выборке ставить..
ну  я все же попробовала так... ошибку выдает...

*

Iolanta

  • *
  • 13
  • +2/-0
    • Просмотр профиля
Re:выборка дат
« Ответ #3 : 26 Ноябрь 2012, 16:13:24 »
не уверена что за число 120 (наверное тип данных новостей в шаблоне данных)
http://umihelp.ru/notes/vsegda_putayu_hierarchytypeid_i_objecttypeid/ видимо нужен второй вариант и тогда выборка 
 $sel->types('object-type')->id(120); по идее правильная, ошибку какую пишет?

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:выборка дат
« Ответ #4 : 26 Ноябрь 2012, 16:39:18 »
прошу прощения.. видимо где то символ не так написала.. перепечатала и заработала эта строчка...
но с выводом массива так и осталась проблема(

*

Iolanta

  • *
  • 13
  • +2/-0
    • Просмотр профиля
Re:выборка дат
« Ответ #5 : 26 Ноябрь 2012, 17:22:16 »
не факт, что заработает, но надо добавить в общий массив страницы, кот. вышли после выборки, а дату можно и xslt вывести
   public function NewsDates()
   {
      $sel = new selector('pages');
      $sel->types('hierarchy-type')->name('news', 'item');
      $sel->types('object-type')->id(120);
      $sel->where('publish_time')->eqmore(time());
      $pages = $sel->result();
      foreach($pages as $page)

         $date = $page->publish_time;
         $date->getFormattedDate("Y-m-d");
         
         $template = "default";
         list($template_block, $template_block_empty, $template_block_search_empty, $template_line) = def_module::loadTemplates("catalog/".$template, "objects_block", "objects_block_empty", "objects_block_search_empty", "objects_block_line"); 
         $block_arr = Array();
         $lines = Array();
         
         foreach($pages as $page){
            $line_arr = Array();
               $line_arr['attribute:id'] =  $page->id;
            $line_arr['attribute:link'] = umiHierarchy::getInstance()->getPathById($page->id);
               $line_arr['xlink:href'] = "upage://" . $page->id;
               $line_arr['node:text'] = $page->name; 
            $lines[] = self::parseTemplate($template_line, $line_arr, $page->id);
         }
         $block_arr['subnodes:lines'] = $lines;
         return $this->parseTemplate($template_block, $block_arr,0);
   }
если проверка пройдет
 http://umi.site.com/udata://custom/NewsDates/udata/lines/item
то останется только вывести в xslt как-нибудь так

   <xsl:apply-templates select="document('udata://custom/NewsDates/')/udata/lines/item" mode="mylist"/>
   
   <xsl:template match="item" mode="mylist">
      <xsl:variable name="pdate" select="document(concat('upage://', @id, '.publish_time'))/udata/property/value/@unix-timestamp" disable-output-escaping="yes"/>
     <xsl:value-of select="document(concat('udata://system/convertDate/', $pdate, '/(d.m.Y)'))/udata" />
   </xsl:template>

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:выборка дат
« Ответ #6 : 27 Ноябрь 2012, 09:50:49 »
что то не так.. буду разбираться))) спасибо

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:выборка дат
« Ответ #7 : 27 Ноябрь 2012, 11:09:32 »
сделала так... теперь все работает))) спасибо))
	public function NewsDate()
{
$sel = new selector('pages');
      $sel->types('object-type')->id(120);
      $sel->where('publish_time')->eqmore(time());
      $pages = $sel->result();
      foreach($pages as $page)

         $block_arr = Array();
         $lines = Array();
         $template_line = null;
         foreach($pages as $page){
            $line_arr = Array();
               $line_arr['attribute:id'] =  $page->id;
            $line_arr['attribute:link'] = umiHierarchy::getInstance()->getPathById($page->id);
               $line_arr['xlink:href'] = "upage://" . $page->id;
               $line_arr['node:text'] = $page->name;
            $lines[] = def_module::parseTemplate($template_line, $line_arr);
         }
         $block_arr['subnodes:lines'] = $lines;
         return $this->parseTemplate($template_block, $block_arr);

}

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:выборка дат
« Ответ #8 : 27 Ноябрь 2012, 14:14:37 »
а может кто еще знает как результат этого макроса в ява скрипт можно запихнуть?

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Re:выборка дат
« Ответ #9 : 28 Ноябрь 2012, 22:46:43 »
прописать в шаблоне, например

<script	type="text/javascript">
var oTable   = <xsl:value-of select="result/page/@pageId"/>;
var oDataSet = null;

$(document).ready(function() {
//...

</ script >

можно еще для верности содержимое тега script обвернуть <![CDATA[ .... ]]>

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:выборка дат
« Ответ #10 : 29 Ноябрь 2012, 11:02:46 »
ага... уже так и сделала..)))