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

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

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


Сообщения - thecoder

Страницы: 1 [2] 3
16
сортировка по usel работает. admin ты оказался прав, надо указать type через id.
Почему первый раз не получилось хз.... Наверное в такую жару надо работать не более 2-х часов.

17
Цитировать
из вашего ответа не понятно почему у вас не работала до этого, а сейчас заработала usel выборка.... Поменяли id у типа данных?

не менял, просто из выборки убрал сортировку и выборка работает, как только добавляю сортировку (создал новое поле qwerty) выдает:
Цитировать
Field "qwerty" is not presented in selected object types

18
Что-то не получается.
По usel выводит следующее:

<udata xmlns:xlink="http://www.w3.org/TR/xlink" generation-time="0.034175">
<page id="109" parentId="53" link="/realty/flat/sell/_/" is-active="1" object-id="27841" type-id="833" update-time="1373372805" alt-name="_" xlink:href="upage://109">
<basetype id="6" module="catalog" method="object">Объекты каталога</basetype>
<name/>
</page>
<page id="110" parentId="53" link="/realty/flat/sell/1/" is-active="1" object-id="27842" type-id="833" update-time="1373372726" alt-name="1" xlink:href="upage://110">
<basetype id="6" module="catalog" method="object">Объекты каталога</basetype>
<name/>
</page>
<page id="111" parentId="53" link="/realty/flat/sell/2/" is-active="1" object-id="27843" type-id="833" update-time="1373373173" alt-name="2" xlink:href="upage://111">
<basetype id="6" module="catalog" method="object">Объекты каталога</basetype>
<name/>
</page>
<total>3</total>
</udata>

Есть ли какой нибудь вариант сделать сортировку по значению update-time?
Если в запрос добавляю:
<sort order="descending">update-time</sort>
пишет
"Field "update-time" is not presented in selected object types"

19
на странице надо вывести список объявлений из раздела каталога
 <xsl:apply-templates select="document('udata://catalog/getObjectsList/0/53')/udata" mode =  "adv"/>

потом шаблон вывода каждого объявления

<xsl:template match="udata[@module = 'catalog'][@method = 'getObjectsList']" mode = "adv">
в котором
<xsl:apply-templates select="lines/item" mode="adv"/>

<xsl:template match="item" mode="adv">
        <xsl:variable name="link" select="@link"/>
        ............
        <xsl:value-of select="document(concat('upage://', $link,'.num_house'))//value"/>
</xsl:template>

@link - ссылка на страницу объекта каталога, которую уже и обрабатываешь через upage.

Но мой подход скорее все не правильный. т.к. если таким образом выводить 10 значений из объявления, то будет 10 обращений к БД, что не есть гуд, т.к. замедляет работу. Надо как-то решить этот вопрос за одно обращение. Может admin подскажет как сделать.

20
у меня сделано так (может и не правильно, сам еще учусь, но работает)

<xsl:value-of select="document(concat('upage://', $link,'.num_house'))//value"/>

выводит номер дома

21
И еще понять не могу. поле publish_time есть, данные в него заносятся (видно через админку), а когда смотришь на страницу через upage этого поля нет.

22
если в админке руками меняю поле publish_time, то дата выводится как положено только не сортируется

23
Wrong object type given

24
Цитировать
вы с tpl шаблонизатором работаете га сайте?
xslt

Цитировать
значит в типе данных нет такого поля... в каком типе данных вами было добавленно поле 'publish_time'?

такое поле есть, если в админке посмотреть то дата и время записывается.
Но когда просматриваешь страницу объекта по протоколу upage - publish_time не виден.

в каком типе данных вами было добавленно поле 'publish_time' - раздел каталога

Добавил поле publish_time в объекты каталога - результат тот же.

25
Привет всем.
Помогите разобраться.
Есть каталог, в нем 3 объекта с разными датами. У объектов есть поле publish_time (добавлял его в шаблонах данных).
Пробовал делать через выборку usel:
<selection>
<target result="pages">
  <type module="catalog" method="object" />
  <category depth="4">{1}</category>
</target>
<sort order="descending">publish_time</sort>
</selection>
Выдает:
Цитировать
Field "publish_time" is not presented in selected object types
Пробовал писать в адресной строке:
udata/catalog/getObjectsList/0/53/0/0/0/publish_time/1

выдает:
Warning: file_get_contents(udata://catalog/getObjectsList/0/53/0/0/0/publish_time/1): failed to open stream: "udataStream::stream_open" call failed in D:\OpenServer\domains\metersell.ru\libs\root-src\releaseStreams.php on line 80

Warning: Cannot modify header information - headers already sent by (output started at D:\OpenServer\domains\metersell.ru\libs\root-src\releaseStreams.php:80) in D:\OpenServer\domains\metersell.ru\libs\errors.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at D:\OpenServer\domains\metersell.ru\libs\root-src\releaseStreams.php:80) in D:\OpenServer\domains\metersell.ru\libs\errors.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at D:\OpenServer\domains\metersell.ru\libs\root-src\releaseStreams.php:80) in D:\OpenServer\domains\metersell.ru\libs\errors.php on line 16

Неперехваченное исключение

Ошибка (databaseException): Enable backtrace for debug.

что делаю не правильно?

26
Шаблоны XSLT / Re:Правильный архив новостей
« : 12 Октября 2011, 07:55:44 »
Кастомный метод который выводит года и месяца в которых есть новости (пример http://test.thecoder.ru/novosti/)

public function archive_news(){
          // GET - параметр year
          $get_year = (int) getRequest('year');
        // page_id Ленты новостей    
        $parent_id = 6;
        // Ищем самую позднею новость
        $news_last = new selector('pages');
        $news_last->types('hierarchy-type')->name('news', 'item');
        $news_last->where('hierarchy')->page($parent_id)->childs(1);
        $news_last->order('publish_time')->desc();
        $news_last->limit(0, 1);
        
        $news_last_element = $news_last->first;
        // Самый последний Год
        $last_year = $news_last_element->publish_time->getFormattedDate('Y');
        
        // Ищем самую раннею новость
        $news_first = new selector('pages');
        $news_first->types('hierarchy-type')->name('news', 'item');
        $news_first->where('hierarchy')->page($parent_id)->childs(1);
        $news_first->order('publish_time')->asc();
        $news_first->limit(0, 1);
        $news_first_element = $news_first->first;
        // Самый первый Год, может совпадать с последним
        $first_year = $news_first_element->publish_time->getFormattedDate('Y');
        
        //Итоговый массив
        $block_arr = array();
        
        $arr_year = array();
        $lines_arr = array();
        for($i = $last_year; $i >= $first_year; $i--){
           $year_id = (int) $i;
           $line_arr_year = array();
           $line_arr_year['node:text'] = $year_id;
           $line_arr_year['attribute:link'] = '?year=' . $i;
           if($get_year == $year_id) $line_arr_year['attribute:active'] = 1;
           $lines_arr[] = $line_arr_year;
        }
        
        $arr_year['nodes:year'] = $lines_arr;
        $block_arr['years'] = $arr_year;
        // GET - параметр month
        $get_month = (int) getRequest('month');
              
        //составление sql запроса выборки всех новостей за указанный год в GET-параметре year
        if($get_year){
            $date1 = mktime(0, 0, 0, 1, 1, $get_year);
            $date2 = mktime(23, 59, 59, 12, 31, $get_year);
            
            $news = new selector('pages');
            $news->types('hierarchy-type')->name('news', 'item');
            $news->where('hierarchy')->page($parent_id)->childs(1);
            $news->where('publish_time')->between($date1, $date2);
            $news->order('publish_time')->asc();
            
            $sql = $news->query();
            // подменяем данные в sql запросе, чтобы нам вернулись только id месяцев
            $sql = str_replace("SQL_CALC_FOUND_ROWS h.id as id, h.rel as pid", "FROM_UNIXTIME(oc_120.int_val, '%c')", $sql);
            $result = l_mysql_query($sql);
            $months = array();
            
            while ($row = mysql_fetch_row($result)) {
                        list($month_id) = $row;
                        if(!in_array($month_id, $months)) $months[] = intval($month_id);
            }
            
            $months = array_unique($months);
            $arr_month = array();
            $lines = array();
            $months_ru = array(1 => 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноября', 'Декабрь');
            
            foreach($months as $item){
              $line_arr = array();
              $line_arr['node:text'] = $months_ru[$item];
              $line_arr['attribute:id'] = $item;
              $line_arr['attribute:link'] = '?year=' . $get_year . '&month=' . $item;
              if($get_month == $item) $line_arr['attribute:active'] = 1;
              $lines[] = $line_arr;  
            }
            
            
            $arr_month['nodes:month'] = $lines;
            $block_arr['months'] = $arr_month;
        }         
      // $block_arr - итоговый php-массив, который будет преобразован в XML           
         return $block_arr;
    
    }
   };

Вызов кастома <xsl:apply-templates select="document('udata://custom/archive_news/')/udata" />
Шаблон:
<xsl:template match="udata[@method = 'archive_news']">
            <h3>Архив</h3>
                <dl class="archive">
                    <dt><ul>
                           <xsl:apply-templates select="//year" />
                        </ul>
                    </dt>
                    <dd>
                        <ul>
                           <xsl:apply-templates select="//month" />
                        </ul>
                    </dd>
                </dl>
    </xsl:template>
    
    <xsl:template match="year|month">
        <li>
        <xsl:if test="@active = 1">
          <xsl:attribute name="class">active</xsl:attribute>  
        </xsl:if>
        <a href="{@link}"><xsl:value-of select="." /></a>
        </li>        
    </xsl:template>

27
Не совсем понял вопроса. Если уже в каталоге есть объекты, то просто перетащите их в нужные категории.

28
ээээээ.......а зачем в меню использовать usel?

1. Посуда - это раздел каталога

1.1 Чашки - это подраздел раздела Посуда
1.2 Тарелки - это подраздел раздела Посуда

Используй categoryList

Для примера используй демо Интернет-магазин на xslt. Там слева как раз выводится такое меню.

29
Шаблоны XSLT / Re:xslt многоуровневое меню
« : 07 Октября 2011, 12:51:06 »
А не пробовали вывод подменю сделать в шаблоне вывода активного пункта меню?

30
Шаблоны XSLT / Шаблон писем активации
« : 25 Сентября 2011, 21:09:58 »
Друзья, помогите найти шаблоны писем активации.

P.S. нашел что они лежат в tpl, а как сделать чтобы шаблоны брались из xslt?

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