Создание редактора статей с блочным добавлением контента

12
maks_m
На сайте с 02.07.2013
Offline
101
793

Хочу написать редактор для сайта, да не знаю с чего начать.

Допустим контент сайта — статьи с заданиями, номером задания, описанием (3 поля). В статье несколько заданий.

Суть редактора состоит в том, чтобы пользователю не нужно было заморачиваться с оформлением этих трёх блоков, в его распоряжении должно быть 3 текстовых поля: «задание», «номер задания», «описание» — и кнопка добавления ещё трёх таких текстовых полей для следующего задания.

Затем все эти блоки «заворачиваются» в определённые html-теги и сохраняются в одну запись в таблице БД.

Т.е. если созданы два задания, то запись в БД выглядит так:


<div class="block">
<div class="num">1</div>
<div class="task">Задание</div>
<div class="desc">Описание</div>
</div>
<div class="block">
<div class="num">2</div>
<div class="task">Задание</div>
<div class="desc">Описание</div>
</div>

А при редактировании классы num, task и desc снова разбивались на текстовые html-поля.

Как подобное реализовать? Что использовать? Что почитать?

SeVlad
На сайте с 03.11.2008
Offline
1609
#1
maks_m:
Как подобное реализовать? Что использовать?

Форма с несколькими полями - запись в БД.

В чём проблема?

maks_m:
А при редактировании классы num, task и desc снова разбивались на текстовые html-поля.

регулярки на запись и вывод.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
maks_m
На сайте с 02.07.2013
Offline
101
#2
SeVlad:
Форма с несколькими полями - запись в БД.
В чём проблема?

Запись в БД будет состоять из следующих полей: id, title, content, date, author.

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

totamon
На сайте с 12.05.2007
Offline
437
#3
maks_m:
Поле content будет содержать все задания вместе с html-тегами, потому что таких «заданий» может быть столько, сколько добавит пользователь, и создавать для каждого из них отдельное поле - большая нагрузка.

не надо так делать) для заданий отдельная таблица нужна, нагрузка будет меньше на самом деле, и геморроя не будет когда понадобится добавить какие-то обработки заданий

maks_m:
А при редактировании классы num, task и desc снова разбивались на текстовые html-поля.

не в падлу вам сначала объединять, потом разбивать... а говорят программисты ленивые))

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
Jor
На сайте с 23.06.2012
Offline
42
Jor
#4

В content вы планируете хранить только задания? Как вариант, сохранять не html разметку, а json.

Если в content не только задания, то можно создать отдельную ячейку.

Поля пользователя:

<input type="text" name="task[0][num]">

<textarea name="task[0][task]"></textarea>
<textarea name="task[0][desc]"></textarea>

При сохранении (не забудьте отфильтровать):

$tasks = json_encode($_POST['task'], JSON_UNESCAPED_UNICODE);

Вывод на сайте:

<?php foreach(json_decode($tasks) as $task) : ?>

<div class="block">
<div class="num"><?php echo $task->num; ?></div>
<div class="task"><?php echo $task->task; ?></div>
<div class="desc"><?php echo $task->desc; ?></div>
</div>
<?php endforeach; ?>

При редактировании, тот же foreach (с ключами), только подставляем в поля.

Но, лучше создать отдельную таблицу для заданий, как уже посоветовал totamon.

Почитать:

http://php.net/manual/ru/function.json-encode.php

http://php.net/manual/ru/function.json-decode.php

M
На сайте с 04.12.2013
Offline
223
#5

maks_m, как выше написали, вы немного не понимаете, как все это должно работать. Я вам недавно давал ссылку на простой фронт-энд-движок, в котором можно сделать шаблон вроде


<?php while ($row=getrow()): ?>
<div class="block">
<div class="num"><?=$row['num']?></div>
<div class="task"><?=$row['task']?></div>
<div class="desc"><?=$row['desc']?></div>
</div>
<?php endwhile; ?>

и написать простой код для подготовки данных.

А потом уже пишете редактор (админку) для внесения записей в таблицу заданий без лишних тегов (теги форматирования, конечно, могут присутствовать, но серьезные структурные теги в БД в данном случае вносить не нужно). Если с написанием админки возникнут проблемы, можете воспользоваться подручными средствами вроде phpMyAdmin.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
SeVlad
На сайте с 03.11.2008
Offline
1609
#6
totamon:
не надо так делать) для заданий отдельная таблица нужна,

Вот послушай, maks_m, что говорят грамотные люди ;)

maks_m
На сайте с 02.07.2013
Offline
101
#7

miketomlin, спасибо, разобрался, сделал отдельную таблицу для заданий. Теги в самих записях таблицы использую только типа <b>, <i> и т.д.

Может ещё подскажете пример простого визуального редактора? Или же скрипт на JS, который бы окружал выделенное слово нужными мне тегами? Работы с выделенным фрагментом текста в input

totamon
На сайте с 12.05.2007
Offline
437
#8

совсем простых не вспоминается, пользуюсь http://summernote.org/ и http://www.nicedit.com

M
На сайте с 04.12.2013
Offline
223
#9

Мы по старинке все в основном на TinyMCE делаем.

---------- Добавлено 27.01.2016 в 00:54 ----------

maks_m:
в input
В смысле в textarea?
SeVlad
На сайте с 03.11.2008
Offline
1609
#10
maks_m:
Может ещё подскажете пример простого визуального редактора? Или же скрипт на JS, который бы окружал выделенное слово нужными мне тегами?

Это сложно

:)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий