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

Zelyonkin

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

sivers

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

ShopES

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

sivers

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

Zelyonkin

  • Захожу иногда
  • 109
  • 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

  • Живу я здесь
  • 2131
  • 287 / 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

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

sivers

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

Добавление поля в форму регистрации

Автор Robert24

Ответов: 3
Просмотров: 230
Последний ответ 10.10.2022, 23:35:04
от Robert24
Тип поля формы Select sql, как заполнить его через функцию php?

Автор GuDeVic

Ответов: 13
Просмотров: 759
Последний ответ 07.10.2022, 12:25:45
от fsv
Не отображается картинка в материале с другого хостинга

Автор Beer

Ответов: 3
Просмотров: 210
Последний ответ 16.09.2022, 21:18:01
от marksetter
Как добавить php код в материале Joomla 3.3.0

Автор Davit

Ответов: 9
Просмотров: 2450
Последний ответ 05.08.2022, 15:49:50
от fsv
Настраиваемые поля не отображаются в дочерней категории

Автор Dolphin4ik_1

Ответов: 0
Просмотров: 165
Последний ответ 13.07.2022, 16:05:02
от Dolphin4ik_1