Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как добавить неполную таблицу в новость?

Как добавить неполную таблицу в новость?


     20.04.2021    Общие вопросы, Шаблоны (TPL), Ламерские вопросы    925

вопрос
Добрый день! Пытаюсь добавить часть таблицы в новость

<tr>
   <rd>текст</td>
   <rd>текст</td>
   <rd>текст</td>
</tr>

Соответственно парсер вырезает неполный код таблицы и остается только текст.
Идея такая. Есть обертка в шаблоне, в которую тегом custom выводятся короткие новости.

<table>
 <thead>
  <th>Один</th>
  <th>Два</th>
  <th>Три</th>
 </thead>
 <tbody>
    тут новость №1
    тут новость №2
    тут новость №3
  </tbody>
</table>

Т.е. должна получиться таблица, которая расширяется с добавление новостей.
Пробовал заводить в новость полную таблицу таким способом чтобы не парсило,

<table>
 <tbody>
  <tr>
    <rd>текст</td>
    <rd>текст</td>
    <rd>текст</td>
   </tr>
  </tbody>
</table>

но получает таблица вложенная в таблицу, это не подходит

Пробовал скриптами вырезать лишние теги, тоже безрезультатно

Посоветуйте решение, может какими то другими средствами DLE, может поправить где-то что-то в парсере и т.д
Главное, добавление должно происходить через короткую новость, средства дополнительных полей тоже не подходят.

Ответа пока нет


14 комментариев

lutskboy
Эксперт

lutskboy - 20 апреля 2021 17:14 -

есть тип поля html js.

Hander
Юзер

Hander - 20 апреля 2021 23:10 -

можно по подробнее, если это дополнительное поле, то не подходит

maks
Юзер

maks - 21 апреля 2021 08:08 -

Тогда ковыряйте parse.class.php в папке /engine/classes/

NONSENS
Юзер

NONSENS - 21 апреля 2021 08:52 -

1. <rd> в <td> - если это не опечатка

2. Зачем "дрючить" "движок", если можно настроить парсер (кстати, Вы лучше поподробнее о парсере раскажите и "что пытаемся спарсить" - обычные новости (для которых достаточно BB-кода) или что-то "громоздкое" типа таблиц в таблице?)

Скорее всего просто парсер неверно настроен (либо на сайте-доноре что-то поменялось, если раньше всё работало) - простая настройка выглядет примерно так: есть переменная в парсере (которую он ищет на доноре) и такая же переменная на шаблоне вставки (импорта) - если парсер нашёл (заполнил) данную переменную, то он её вставляет в шаблон импорта. И так с каждым пунктом (с каждой переменной). Это если мы заполняем "готовый шаблон" (и тут мы можем предусмотреть/исправить ошибки), но если мы дерём "что попало", то тащим всё с потенциальными ошибками. Первый вариант предпочтительнее, т.к. не позволяет набить 100500 косячных новостей, на удаление которых уйдёт больше времени, чем на подстройку шаблона под новые "реалии".

Hander
Юзер

Hander - 21 апреля 2021 09:24 -

Да <rd> это опечатка, правильно <td>

Возможно я неправильно понимаю слово парсер, простите за неграмотность, в общем та штука в движке которая при добавление новости зачищает все лишнее и не правильное, т.е. в данном случае не дает вставить неполную таблицу в новость

Hander
Юзер

Hander - 21 апреля 2021 09:27 -

maks,
да пробовал посмотреть этот файл и понять где что, но не получилось

Hander
Юзер

Hander - 21 апреля 2021 09:30 -

Вот все что я пытаюсь вставить в новость
<tr>
   <td>текст</td>
   <td>текст</td>
   <td>текст</td>
</tr>

Жму добавить новость, в итоге движок оставляет только
тексттексттекст

NONSENS
Юзер

NONSENS - 22 апреля 2021 02:40 -

А может всё в порядке, просто таблица "прозрачная" и "не на 100% ширины" (откройте HTML-код - есть ли там ваши ТДшки)?

А если сделать так?

<table width="300">
<tr>
   <td>текст</td>
   <td>текст</td>
   <td>текст</td>
</tr>
</table>


Всё нормально? Всё Работает?

Hander
Юзер

Hander - 21 апреля 2021 09:33 -

Пробовал вот такую штуку, понимаю что глупость, но вдруг)
<script type="text/javascript">
$('<tbody><table><tbody>').replaceWith(function(){
    return $("<tbody>").append($(this).contents());
});
</script>

Hander
Юзер

Hander - 21 апреля 2021 09:39 -

Давайте попробую расписать более подробнее структуру
В main.tpl добавляю это
{include file="datasheet.tpl"}

В datasheet.tpl такой код

<div class="col-12">
 <div class="box">
  <div class="short story">
   <table>
    <thead>
     <tr>
      <th>Название</th>
      <th>Описание</th>
      <th>Производитель</th>
      <th>Скачать datasheet</th>
     </tr>
    </thead>
    <tbody>{custom template="short-data" sort="desc" cache="yes"}</tbody> 
   </table>
  </div>
  </div>
</div>

В short-data.tpl такой код
{short-story}

И в новость пытаюсь добавить это

<tr>
  <td>TSOP2838</td>
</tr>
<tr>
  <td>Photo Modules for PCM Remote Control Systems</td>
</tr>
<tr>
  <td>Vishay</td>
</tr>
<tr>
  <td>[attachment=2238]</td>
</tr>


В итоге получаю это
TSOP2838Photo Modules for PCM Remote Control SystemsVishay[attachment=2238]

doom45
Юзер

doom45 - 21 апреля 2021 11:20 -

Не понимаю, в чем проблема использовать доп. поле вместо {shortstory}? Там где работает {shortstory} работает все теги доп полей.

Доп. поле на такие случаи и рассчитано.

Hander
Юзер

Hander - 21 апреля 2021 11:37 -

doom45,
Уже есть около тысячи подобных новостей с таблицами, все переделывать на дополнительное поле, занятие трудоемкое и время затратное, да еще в короткую новость что-то надо писать, иначе будет ошибка

NONSENS
Юзер

NONSENS - 22 апреля 2021 02:48 -

В parse.class.php в папке /engine/classes/ попробуйте временно закоментировать:


/*
$def->addAttribute('table', 'height', 'Text');
$def->addAttribute('td', 'border', 'Text');
$def->addAttribute('th', 'border', 'Text');
$def->addAttribute('tr', 'width', 'Text');
$def->addAttribute('tr', 'height', 'Text');
$def->addAttribute('tr', 'border', 'Text');
*/


и


/*
,'th' => array(),'td' => array()
*/


Это от DLE 12.1 - у Вас может быть немного подругому

Hander
Юзер

Hander - 22 апреля 2021 13:10 -

Спасибо всем, что потратили время, пришлось все таки пойти трудным путем
Создал доп.поле html js, и переделываю новости, нудная долгая работа, но все таки работает.
Но нашелся плюс, теперь смогу сделать мгновенный поиск фильтрацию по названию в ячейке.
Если интересно выложу решение.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх