dle-modules / DLE-BlockPro

Модуль вывода новостей для DLE
http://bp.pafnuty.name/
MIT License
13 stars 14 forks source link

Не подгружает новость с поля при переходе и при обновлении страницы. #161

Closed maksisru closed 4 years ago

maksisru commented 4 years ago

вставил в шаблон полной новости {include file="engine/modules/base/blockpro.php?limit=1&sort=xf|id_sort_glav&order=old&showNav=y&navStyle=arrows"} все работает но при переходе с ссылки на новость либо при обновлении странницы проподает текст из доп поля который вывожу. при переходе по навигации вперед назад с blockpro все подгружает.. а как поправить чтоб сразу подгружало и при обновлении не скидывалось?

http://libstock.info/index.php?newsid=6

если стоит галочка, в -- > стандартная навигация dle //// ---- указатель этого параметра будет иметь значение для текущей страницы и формирования постраничной навигации так же, как это делается в DLE. Переход между страницей новостей будет происходить с перезагрузкой страницы .---

Описание ошибки:

Строка подключения с включенным параметром showstat:

{include file="engine/modules/base/blockpro.php?showstat=y"}

Статистика генерации:

Содержимое блока в красной рамке в конце блока с новостями

Запрос(ы): 
[1] SELECT p.id, p.autor, p.date, p.short_story, p.full_story, p.xfields, p.title, p.category, p.alt_name, p.allow_comm, p.comm_num, p.fixed, p.allow_main, p.symbol, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.related_ids, e.view_edit, e.editdate, e.editor, e.reason FROM `dle_post` p LEFT JOIN `dle_post_extras` e ON (p.id=e.news_id) WHERE approve AND p.date < "2017-09-20 21:57:16" ORDER BY fixed DESC, e.rating DESC, p.comm_num DESC, e.news_read DESC LIMIT 0, 10 
[1 время:] 0.0032839775085449
Время выполнения запросов: 0.0032839775085449
Время выполнения скрипта: 1505933836.7845 c.
Расход памяти: 2.97Мб

Код используемого шаблона:

<div id="{$block_id}">
    {foreach $list as $el}
        {$el.id}
    {/foreach}
</div> <!-- #{$block_id} -->
maksisru commented 4 years ago

кажется в этом кажется проблема Количество новостей в блоке 1 начать с 0 как поставить начать с текущей ? хотя это не отменяет

если стоит галочка, в -> стандартная навигация dle не работает

pafnuty commented 4 years ago

@maksisru В приведённом коде шаблона нет вывода данных из допполя. Вот так будет выводиться допполе с именем fieldname из новости

<div id="{$block_id}">
    {foreach $list as $el}
        {$el.xfields.fieldname}
    {/foreach}
</div> <!-- #{$block_id} -->
maksisru commented 4 years ago

у меня так было я не знаю почему выше выдало подругому

  {if $el.xfields['text-knigi-prologa-glavi']}
             <p>{$el.xfields['text-knigi-prologa-glavi']}</p>
            {else}
                <p>тут пусто (нажмите назад затем вперед!)</p>
            {/if}

<div id="{$block_id}">

{*Пробегаем по массиву с новостями*}
    {foreach $list as $key => $el}

    <a href="{$el.url}">{$el.title}</a>

    {$pages}

 <br>
            {* мое начало конец *}

            {* мое конец *}

            {if $el.xfields['text-knigi-prologa-glavi']}
             <p>{$el.xfields['text-knigi-prologa-glavi']}</p>
            {else}
                <p>тут пусто (нажмите назад затем вперед!)</p>
            {/if}

        <!--</div>--->
    {foreachelse}
        {*Если новостей нет - выведем информацию об этом*}
        <p>Новостей нет</p>
    {/foreach}
</div> <!-- #{$block_id} -->
<hr>

` при переходе по ссылке с меню у меня показывает 1 новость поскольку стоит (в настройках BlockPro Количество новостей в блоке 1 начать с 0 ) а как поставить начать с текущей??? в настройках только цифры

{include file="engine/modules/base/blockpro.php?startFrom=1&limit=1&sort=none&order=asis&showNav=y&navStyle=arrows"}

startFrom=1 как поставить начать с текущей за место 1

maksisru commented 4 years ago

&setFilter=p.id|eq|{news-id} так вроде...... только как кнопки добавить вперед назад (не получается)

pafnuty commented 4 years ago

@maksisru Что значит с текущей? startFrom задаёт с какой новости начинать вывод из тех новостей, которые в этот вывод попали.

Т.е. при выборке новостей выбралось 5 штук, при значении 2 будет пропущен вывод первой новости. Если передать ID новости, то гарантированно не выведется ничего.

maksisru commented 4 years ago

онлайн читалку хотел сделать...
книга добавляется в категорию книги в полной новости стоят проверки если доп поле книга=1/глава=0 то вид полной новости книга и ниже главы на полную новость соответствующей главе где проверка книга=0/глава=1 то вид новости читалка хотел реализовать навигацию с BlockPro в читалке (но ни как походу(( )

но у меня если без &setFilter=p.id|eq|{news-id} то при переходе с книги на главу 5 например будет текст какой прописан начать с 0,1,2 итд. а не то что надо.

если стоит &setFilter=p.id|eq|{news-id} то все работает при переходе на 5 или 7итд. главу книги но нет навигации вперед назад начиная с открытой news-id ну ни как. вообщем походу не сделать

так хотел настройки лимит 1 начать с news-id&setFilter=p.id|eq|{news-id}

pafnuty commented 4 years ago

А нельзя сделать просто разрыв страницы при добавлении новости? И не придётся заморачиваться с модулями.

maksisru commented 4 years ago

в книге бывает до 3000+ глав которые хотел а заморачивался для читателя чтоб удобная навигация была видно не судьба буду смотреть в сторону вод пресс

maksisru commented 4 years ago

попробую последний раз)) стандартной навигацией проверка на поля (+ много условий на вид)---> сама читалка в краткой новости (текст у меня из доп поля всеравно) далее если прокатит то джакс навигацию есть мод

pafnuty commented 4 years ago

Для вашей задачи лучше всего подходит разрыв страницы в новости. Либо отдельный модуль. Если делать допполя - 3000 допполей будет перебор однозначно. Если делать 1 глава - одна новость, очень трудно будет такими новостями управлять. Лучший вариант 1 книга - 1 новость. Сделать отдельный модуль для того, что бы можно было заливая книку автоматически разбивать её на главы и выводить.

maksisru commented 4 years ago

{include file="engine/modules/base/blockpro.php?startFrom=1&limit=1&sort=xf|id-sort-glav&order=old&showNav=y&pageNum=[xfvalue_id-sort-glav]&navStyle=arrows"}

вот тут надо поправить **[xfvalue_id-sort-glav] ** на значение из доп поля но не работает тоесть текущее значение подставить с доп поля... и все бы было норм ()

так вроде без фильтров и проверок ЧЕРНОВОЙ {include file="engine/modules/base/blockpro.php?startFrom=1&limit=1&sort=none&order=asis&showNav=y&pageNum=[xfvalue_id-sort-glav]&navStyle=arrows"}

maksisru commented 4 years ago

вот все работает ))))))))))) {include file="engine/modules/base/blockpro.php?startFrom=1&limit=1&xfSearch=e.id-knigi-glavi|gt||[xfvalue_id-knigi-glavi]&sort=none&order=asis&showNav=y&pageNum=[xfvalue_id-sort-glav]&navStyle=arrows"}

maksisru commented 4 years ago

вопрос можно ли если поставить Стиль постраничной навигации. digg: кнопки вперед назад оставить а 1 2 3 4 [5] 6 7 впихнуть в меню список раскрывающее а цифры поменять на значения доп поля и без сокращений 1 2 ... 5 6 7 8 9 [10] 11 12 13 14 ... 25 26 а полностью все 12345678... это где покапатся если можно? (тоесть вид в списке за место 1 будет 1 глава и возможно название)

pafnuty commented 4 years ago

@maksisru в https://github.com/dle-modules/DLE-BlockPro/blob/master/engine/modules/base/core/Pager.php реализована пагинация. Можно добавить собственный вариант и новый способ пагинации, оформить PR для полного счастья и будет официально новый способ пагинации.

maksisru commented 4 years ago

ух ты) спасибо

maksisru commented 4 years ago

ошибка обнаружилась {include file="engine/modules/base/blockpro.php?startFrom=1&limit=1&xfSearch=e.id-knigi-glavi|eq||[xfvalue_id-knigi-glavi]&sort=none&order=asis&showNav=y&pageNum=[xfvalue_id-sort-glav]&navStyle=arrows"} &xfSearch=e.id-knigi-glavi|gt||[xfvalue_id-knigi-glavi] не работает выводит начиная с первой добавленной и попорядку все

Нужно вывести в новости, новости с таким же значением доп поля добавлял так &setFilter=e.tagvalue|eq|[xfvalue_id-knigi-glavi] ошибка (строки с бд и белый экран) тоесть проверка доп поля просматриваемой новости на значения и вывод с таким же значением по типу {custom xfields="kinopoisk_id|[xfvalue_kinopoisk_id]" template="custom-similar" from="0" limit="20"}

pafnuty commented 4 years ago

@maksisru Какая ошибка бд?

maksisru commented 4 years ago

Неустранимая ошибка: необработанное исключение: SafeMySQL: неизвестный столбец 'e.tagvalue' в 'предложении where'. Полный запрос: [SELECT p.id, p.autor, p.date, p.short_story, p.full_story, p.xfields, p.title, p.category, p.alt_name, p.allow_comm, p.comm_num, p .fixed, p.allow_main, p.symbol, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.related_ids, e.view_edit, e.editdate, e.editor , e.reason FROMdle_postp СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ dle_post_extrase ON (p.id = e.news_id) ГДЕ одобрить AND e.tagvalue = 1 AND p.date <"2019-12-05 15:40:22" LIMIT 1, 1] в /var/www/u0859863/data/www/libstock.info/engine/modules/base/core/SafeMySQL.php:632 трассировки стека: # 0 / var / www / u0859863 / data / www / libstock.info/engine/modules/base/core/SafeMySQL.php(492): SafeMySQL-> ошибка ('SafeMySQL: Unkn ...') # 1 / var / www / u0859863 / data / www / libstock.

{include file="engine/modules/base/blockpro.php?startFrom=1&limit=1&setFilter=e.tagvalue|eq|[xfvalue_id-knigi-glavi]&sort=none&order=asis&showNav=y&pageNum=[xfvalue_id-sort-glav]&navStyle=arrows"}

pafnuty commented 4 years ago

в таблице dle_post_extras нет поля tagvalue судя по всему.

maksisru commented 4 years ago

в dle_post_extras нету в dle_post есть xfields но нету тоже tagvalue

maksisru commented 4 years ago

xfields При этом в БД значения храняться в формате имя поля|значение поля

dle_post -> xfields ->1 имя поля|значение поля 2 имя поля|значение поля итд.

Версия DataLife Engine: 13.2
maksisru commented 4 years ago

xfields в бд 1 новост kniga-glava|0||name-kniga|Восставший против неба Against the Gods / ATG||platno-besplatno|0||nazvanie-nomer-glavi|Книга||id-knigi-glavi|1||tekst-prozez|2||zikl|ATG||id-sort-glav|0||name-original|Against the Gods||poster|Восставший против неба&#124;2019-11/1574343912_atg.jpg||aftor|Mars Gravity||strana|Китай

maksisru commented 4 years ago

&xfSearch=[id-knigi-glavi]|1||[id-knigi-glavi]|1&xfSearchLogic=AND &xfSearch=id-knigi-glavi|1||id-knigi-glavi|1&xfSearchLogic=AND &xfSearch=[xfvalue_id-knigi-glavi]|2||[xfvalue_id-knigi-glavi]|2&xfSearchLogic=AND

тоже не работает что то синтаксис передачи данных: &xfSearch=имя_поля|значение||имя_поля|значение

maksisru commented 4 years ago

в общем жесть какая то e.id-knigi-glavi|eq||[xfvalue_id-knigi-glavi] все таки работает НО xfvalue_id-knigi-glavi на записывать ид доп поля напр. книга1= 01, книга2= 123, книга3= 0224, тоесть новая книга + новый знак иначе путает в подгрузке (еще не тестил одинакоовые знаки на десетич. сотых например) и ... до этого книга была под 01 идом ид ей смеенил другой книги (новости) дал 01 ид ПУТАНИЦА первую открывает ...

maksisru commented 4 years ago

взрыв мозгов {include file="engine/modules/base/blockpro.php?startFrom=1&limit=1&xfSearch=e.id-knigi-glavi|eq||[xfvalue_id-knigi-glavi]&sort=none&order=asis&showNav=y&pageNum=[xfvalue_id-sort-glav]&navStyle=arrows"} работает опять ( ..|eq|..|gt|.. не из за этого менял постоянно ) вот в чем прикол

pafnuty commented 4 years ago

@maksisru я не совсем понимаю чего вы хотите добиться. Если нужно взять значение из допполя, то setFilter вам не подойдёт, если нужно использовать setFilter с параметром e.tagvalue - нужно создать и заполнить соответсвующее поле в таблице в БД. Определитесь для начала с тем, что необходимо сделать, а то в каждом новом сообщении я вижу разные вопросы, это не поможет решить проблему.