Каким образом выводить блоки

248
15 декабря 2017, 04:30

Здравствуйте. Делаю в админке создание блоков. Блок представляет из себя html содержимое. Каждому блоку присваиваю свое уникальное название, типа blockHead.

Вопрос: каким образом реализовать вывод этого блока при вставке чего-то типа:

{blockHead}

код страницы:

<?php
//подключение базы и прочих функций
  {blockHead}
?>

Название блоков хранятся в базе данных.

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

Answer 1

В вашем случае логичнее не использовать синтаксис шаблонизации а тупо подставлять блоки через условия. Судя по примеру в вопросе вы не юзаете mvc и логика у вас от представления не отделима. Тогда зачем изобретать велосипед =)

Например, собираете все пользовательские блоки запросом в массив, в котором ключ - это то самое название блока (оно же есть его позиция в шаблоне) а значение - сам код вставки:

Array [n](
    "blockHead" => Array(
        "enabled" => "1",
        "content" => "...content..."
    ),
    ...
    "blockFoot" =>  Array(
        "enabled" => "1",
        "content" => "...content..."
    )
)

Ну и дальше выводите их в своих местах:

<!--blockHead placing-->
    <?=($blocksArray['blockHead']['emabled']) ? $blockArray['blockHead']$ : '';?>
<!--/blockHead placing-->

З.Ы. Привитая мне бабушкой в детстве честность не позволяет назвать такую реализацию правильной (ибо много стандартов и махровых постулатов нарушается), но вполне обоснованным в рамках вопроса.

READ ALSO
WordPress - получить мета поля постов и сложить их

WordPress - получить мета поля постов и сложить их

Что имеем: несколько записей типа post с произвольным полем meta_keyКак с помощью стандартного запроса WP_Query получить все meta_key постов и сложить...

263
Вывод из group by с order by

Вывод из group by с order by

Здравствуйте, связался с такой проблемой, вывожу из базы

279
Редирект с URL на файл в папке

Редирект с URL на файл в папке

Есть самописная cms на php, и сверстаная страничкаНужно по url http://hostname

234
reCAPTCHA ответ

reCAPTCHA ответ

Всем привет, вопрос в ответе сервера GoogleПерерыл все что можно но ответа не нашел

220