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

Zelyonkin

  • Захожу иногда
  • 102
  • 0 / 0
Добрый день! Может кто уже делал. Нужна возможность внедрять в материал некие php вставки использующие поля материала. Эти вставки могут быть в любом месте материала.
Допустим есть какое-то количество материалов где описываются сотрудники организации. В материалах есть поля ФИО, специальность и т.д. Далее эти материалы заполняются и в нужные места по тексту просто должны втыкаться некие шоткоды, например [FIO], которые соответственно при рендере на сайте должны выводит ФИО из поля данного материала.
*

sivers

  • Завсегдатай
  • 1957
  • 267 / 0
Переопределяете макет материала, в нем перед выводом контента делаете в нем замену шоткодов на значения полей (обычным str_replace можно).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

ShopES

  • Захожу иногда
  • 426
  • 11 / 0
сложно описано
*

sivers

  • Завсегдатай
  • 1957
  • 267 / 0
сложно описано
Проще будет только готовое решение. Но вопрос был про возможность. Понадобятся подробности - спросит.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Zelyonkin

  • Захожу иногда
  • 102
  • 0 / 0
На самом деле я пока что и делаю str_replace. Возможно есть какие-то более правильные варианты. Вот что у меня сейчас:
Код
foreach($this->item->jcfields as $field) {
$thisCustomFields[$field->name] = $field->value;
}
$replaceShotcodeText=str_replace('[специальность]', $thisCustomFields['spetsialnost'], $this->item->text);
Топорненько :). И если таких вставок 10, то делать массив, в массиве перечислять HTML и т.д.
*

sivers

  • Завсегдатай
  • 1957
  • 267 / 0
Вот. Особо расписывать человеку и не пришлось. Оптимизируйте немного код и все:
Код
$shortCodes = array();
foreach($this->item->jcfields as $field) {
    $shortCodes['['.$field->name.']'] = $field->value;
}
$this->item->text = str_replace(array_keys($shortCodes), array_values($shortCodes), $this->item->text);
в текст вставляйте сразу по именам полей: [spetsialnost]

Хотя, можно можно и по русскому тайтлу, тогда в цикле тоже надо заполнять массив тайтлами, а не нэймами.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Zelyonkin

  • Захожу иногда
  • 102
  • 0 / 0
в текст вставляйте сразу по именам полей: [spetsialnost]
Вот это уже лучше выглядит. Благодарю! Так можно все поля вставлять просто посмотрев название этого поля в админке. И если пойти дальше, то может подскажете как реализовать обёртки для шоткодов? Например [p class=aaa spetsialnost] или [strong class=aaa spetsialnost], чувствую надо делать некий explode и затем разбирать. Или может так [p.aaa spetsialnost]?
*

sivers

  • Завсегдатай
  • 1957
  • 267 / 0
Вот это уже лучше выглядит. Благодарю! Так можно все поля вставлять просто посмотрев название этого поля в админке. И если пойти дальше, то может подскажете как реализовать обёртки для шоткодов? Например [p class=aaa spetsialnost] или [strong class=aaa spetsialnost], чувствую надо делать некий explode и затем разбирать. Или может так [p.aaa spetsialnost]?
для этого регулярные выражения подойдут. Читайте про preg_match_all
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображаются поля при создании и редактировании модулей и материалов

Автор Didj

Ответов: 5
Просмотров: 177
Последний ответ 04.05.2022, 21:49:39
от marksetter
Вывод дополнительного поля материала в модуле

Автор timofe

Ответов: 9
Просмотров: 555
Последний ответ 04.05.2022, 08:43:42
от effrit
Изменение доп. поля материала через фронтенд

Автор Damarkuzz

Ответов: 1
Просмотров: 91
Последний ответ 29.03.2022, 14:03:37
от NewUsers
Скрыть не нужные поля в SP LMS - Joomla Learning Management System

Автор kot488

Ответов: 0
Просмотров: 123
Последний ответ 23.01.2022, 17:19:38
от kot488
Перенос строки в тексте при выводе из поля таблицы с помощью getDBO()

Автор goga_pgasovav

Ответов: 5
Просмотров: 318
Последний ответ 07.01.2022, 14:17:01
от goga_pgasovav