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

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

*

Seweryss

  • **
  • 60
  • +0/-0
    • Просмотр профиля
Доброго дня уважаемое сообщество. Столкнулся с проблемой: нужно чтобы на одной страничке были все комментарии, а на другой - только определенное число (3 например).
Вычитал, что в шаблоне макроса comments_insert, а именно в разделе comments_block,  есть макрос который оперирует выводом количество страниц (%per_page%). Только я не могу его настроить, вернее не могу понять как им пользоваться вообще. Помогите пожалуйста.
В админке настроено, что 10 комментов на странице, но мне нужно, чтобы на главной, выводилось только 3, а на странице отзывов все 10.

Очень нужна помощь. Надеюсь только на Вас.
« Последнее редактирование: 03 Октября 2013, 23:36:58 от Seweryss »

*

Seweryss

  • **
  • 60
  • +0/-0
    • Просмотр профиля
Друзья, помогите пожалуйста =( Больше некого спросить.

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Думаю, проще написать свой usel вида:

<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type module="comments" method="comment" />
        <category depth="1000">{1}</category>
</target>

    <limit page="0">{limit}</limit>
</selection>

Допустим, файл, описывающий usel, называется getComments.xsl, тогда его вызов будет таким: usel://getComments/[id раздела, комментарии которого показывать]/?limit=[количество комментариев, которые показывать]
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

Seweryss

  • **
  • 60
  • +0/-0
    • Просмотр профиля
Я очень признателен за помощь, но, к сожалению, использую tpl шаблонизатор, до еще xls еще не дорос. Может как - то можно решить эту задачу на tpl?  Или никак?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
попробуйте все же usel запрос работая через data doSelection() макрос (см. подробнее в документации)

а xml usel файла вам уже написали выше он вполне подойдет с небольшим изменением
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type module="comments" method="comment" />
        <category depth="1000">{1}</category>
</target>

    <limit page="{3}">{2}</limit>
</selection>

В итоге, если ваш xml файл называется comments_usel, а езд шаблон для обработки результатов comments_usel_tpl, то вызов макроса будет выглядеть так:
%data doSelection(comments_usel_tpl,comments_usel,[id_страницы__комментариями],[количество_комментариев_выводимых_на_странице],[номер_страницы_с_комментариями])%

Например, вывод комментариев со страницы с id = 99:
1. вывод первых 3 комментариев: %data doSelection(comments_usel_tpl,comments_usel,99,3)%
2. вывод следующих 3 комментариев (с 4 по 6): %data doSelection(comments_usel_tpl,comments_usel,99,3,1)%
3. вывод всех комментариев (схитрим подставив заранее большое число комментариев во второй параметр): %data doSelection(comments_usel_tpl,comments_usel,99,1000000)%

*

Seweryss

  • **
  • 60
  • +0/-0
    • Просмотр профиля
Спасибо Вам огромное за Вашу помощь. Буду пробовать.

*

Seweryss

  • **
  • 60
  • +0/-0
    • Просмотр профиля
К сожалению не работает.
%data doSelection(comments,comments_usel,77,2)%   это вызов

это   usel
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type module="comments" method="comment" />
        <category depth="1000">{1}</category>
</target>

    <limit page="{2}">{1}</limit>
</selection>

а здесь обработчик который находится в tpls/data/usel

<?php

$FORMS = Array();


$FORMS['comments_block'] = <<<COMMENT_BLOCK
<div class="right_column">
%lines%
</div>


COMMENT_BLOCK;

$FORMS['comments_block_line'] = <<<COMMENT_LINE_USER


<div class="right_column">
<div class="image_title" ><img src="../../images/img/ava.png"/></div>
<div class="coment_text">
<div class="comment_text" umi:element-id="%id%" umi:field-name="message" umi:delete="delete">
%message%
</div>     
</div>
<div class="name">%nickname%</div>

<div class="firma" umi:element-id="%id%" umi:field-name="firma" >%firma%</div>

</div>
COMMENT_LINE_USER;


?>

Вроде бы все правильно сделал, как Вы и говорили, только вот оно ничего не выводит, к сожалению. Можете подсказать, что я не так сделал? Буду очень и очень признателен. Заранее спасибо.

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Ошиблись в usel - вместо <limit page="{2}">{1}</limit> должно быть <limit page="{3}">{2}</limit>
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

Seweryss

  • **
  • 60
  • +0/-0
    • Просмотр профиля
Спасибо за ответ. Да, я знаю, только теперь требуют выводить только 2 комментария. Проблема в другом, мне кажется, что шаблон ТПЛ (который отвечает за обработку данных) я неправильно оформил. Только мои попытки вставить, что-то другое, ничего хорошего не дают.

П.С. Я так думаю потому что макрос вывода срабатывает (не пишет, что не найден шаблон) но ничего не выводит, абсолютно.

Друзья, помогите пожалуйста, очень нужна помощь. Очень важный момент.

П.П.С. я уже пробовал в тпл файле менять названия блоков-обработчика, вот так:
<?php

$FORMS = Array();

$FORMS['elements_block'] = <<<END
<p>Elements list (%total%/%per_page%)</p>
<ul>
%items%
</ul>
END;

$FORMS['elements_block_line'] = <<<END
<div class="image_title" ><img src="../../images/img/ava.png"/></div>
<div class="coment_text">
<div class="comment_text" umi:element-id="%id%" umi:field-name="message" umi:delete="delete">
%message%
</div>    
</div>
<div class="name">%nickname%</div>

<div class="firma" umi:element-id="%id%" umi:field-name="firma" >%firma%</div>
END;

?>
Показывает только: Element list (2\77) - т.е. что- то оно видит, но, полей коментов (имени, фирмы и т.д.) нет  :(

Неужели нет идей? Ребята, помогите, пожалуйста. Пополню моб. на 200 руб (или больше, если захотите) за помощь. Просто позарез нужна помощь.
« Последнее редактирование: 16 Октября 2013, 16:59:53 от Seweryss »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Явно что проблема где-то в мелочи, для того чтобы сказать что именно у вас не так привидите здесь

1. пример вызова макроса %data doSelection()% (чтобы видеть какие параметры вы передаете)
2. содержимое xml файла, который вы используете в данном data doSelection() макросе
3. содержимое tpl шаблона, который вы используете в данном data doSelection() макросе
4. html код блока, внутри которого, должен выводиться результат работы %data doSelection()% макроса

Как выглядит шаблон для вывода комментариев, который уже работает? (скорее всего это tpl файл /tpls/comments/default.tpl)

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Если передавали как написано %data doSelection(comments,comments_usel,77,2)%, то для начала попробуйте  все строковые параметры заключить в апострофы
%data doSelection('comments','comments_usel',77,2)%

Если не поможет, в блок шаблона elements_block  поставьте какой-нибудь  текст, чтобы увидеть, что у вас вообще-то выбрался именно ваш шаблон.

Если шаблон ваш, значит, просто нет выборки, т.е., ошибка в usel

*

Seweryss

  • **
  • 60
  • +0/-0
    • Просмотр профиля
Спасибо за оперативные ответы. Предоставляю файлы:
1:  %data doSelection(default,comments_usel,77,2)%
2: XML файл:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type module="comments" method="comment" />
        <category depth="1000">{1}</category>
</target>

    <limit page="{2}">{1}</limit>
</selection>
3: TPL файл обработки запроса
<?php
$FORMS = Array();

$FORMS['elements_block'] = <<<END
<p>Elements list (%total%/%per_page%)</p>
<div class="right_column">
<div>%message%</div>
%items%

</div>
END;

$FORMS['elements_block_line'] = <<<END

<div class="image_title" ><img src="../../images/img/ava.png"/></div>
<div class="coment_text">
<div class="comment_text" umi:element-id="%id%" umi:field-name="message" umi:delete="delete">
%message%
</div>     
</div>
<div class="name">%nickname%</div>
<div class="firma" umi:element-id="%id%" umi:field-name="firma" >%firma%</div>
%id%

END;
?>

4:
<div class="message">
<div class="title_coment">Отзывы</div>
%data doSelection(default,comments_usel,77,2)%
</div>

П.С. Срабатывает только эта часть TPL файла: <p>Elements list (%total%/%per_page%)</p>   (выводит: Elements list (2/77) ) значит, что оно нашло 2 элемента удовлетворяющих запрос. Но вот всё что находится в блоке, который формирует Items - игнорируется. Не могу понять в чём проблема.

Vladimir, спасибо за реакцию: Я уже пробовал, проблема в том, что вроде бы работает, но, наполовину. Не выводит поля страницы (текст, автор, фирма и т.д.).

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
вы забыли выложить html того, что получается в итоге. конечно мне не нужна весь исходный код страницы, а только того места где должны выводиться комментарии

*

Seweryss

  • **
  • 60
  • +0/-0
    • Просмотр профиля
Не так Вас понял вначале. Наверное должно быть так?  (Это то, что получается в конце). Если, что -то нужно еще - говорите, предоставлю всё что потребуется, только бы решить проблему.
<div class="super_middle_wrapper">
<div id = "middle_wrapper">
<div class="mid_sub">
<div id="zamanuha_wrapper">
<div class="zagolov">Оборудование для кафе б/у</div>
</div>
<p>Elements list (2/77)</p>
<div class="right_column">
<div>%message%</div>
</div>
</div>
</div>
</div>
</div>
« Последнее редактирование: 17 Октября 2013, 20:09:04 от Seweryss »

*

Vladimir

  • ****
  • 279
  • +48/-0
    • Просмотр профиля
Посмотрите, пожалуйста,  документацию по макросу doSelection.  Какие переменные допустимо использоваться внутри блоков elements_...? А какие у вас? 

Возьмите блоки со страницы
http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/shablony_dannyh/data_doselection/#tpl-templating
и попробуйте с типовыми получить список комментариев.

проблема, конечно, остается - я бы ожидал, что хотя бы неполно, но все же комментарии бы вывелись, но у вас переменная %items% не отработала совсем. М.б., это из-за %message%. Давайте исключим все нестандартное для начала.