Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Как вывести тег { content } не в main.tpl?

Как вывести тег { content } не в main.tpl?


     25.03.2020    content    Все вопросы » Шаблоны (TPL)    1195

вопрос
Пытаюсь адаптировать react.js шаблон для dle cms.
Принцип работы шаблона сложен тем, что весь код формируется на стороне сервера и выводится на главной (main.tpl) с помощью приблизительно такого кода:



Код страницы формируется в json и js, мне необходимо, чтобы содержимое content отдавалось в json внутри файла tpl

Догадался сделать так:
1. создал отдельный шаблон для конкретной категории;
2. задал отдельный tpl шаблон для вывода контента категории в данном шаблоне, в нем и разместил json код, который формирует в результате вывод контента на главной;

Теперь из js я ссылаюсь на url категории /o-skripte/ который отдает мне нужный json

Понимаю, что все это не правильно и криво, но иначе не смог реализовать это.

Проблема в том, что сейчас при переходе в категорию, отдается json для посетителя.
Можно как-то посетителю отдать контент категории, а не json?

Думал публиковать новости в 2 категории, в категорию для формирования json и реальную категорию для контента, но наверное это не правильный выход.

Если кто понял, посоветуйте что нибудь.

Спасибо!

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


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

cortin
Юзер

cortin - 25 марта 2020 11:03 -

Я вас не до конца понял, но я бы сделал так, я бы посылал ajax запрос на сервер на теже урлы что уже есть, но с определенем хттп хэдером, а на стороне пхп если тот видет такой хэдер выдавал бы результат ввиде json, если хэдера нет то стандартный вывод. Можно просто гет переменую со спец именем передавать.

Mandrill API
Юзер

Mandrill API - 25 марта 2020 11:11 -

Это интересно, я пока в php и get переменные не лез, пытался все реализовать имеющимися возможностями.
Буду думать.

cortin
Юзер

cortin - 25 марта 2020 11:27 -

Но это реально проше через пхп,

if ( isset( $_SERVER["HTTP_GET_JSON"] ) )
{
    $json = json_encode( [
        "status" => "...",
        "content" => $tpl->result["content"],
    ] );
   exit($json );
}

Mandrill API
Юзер

Mandrill API - 25 марта 2020 11:29 -

Это для main.php код?
Буду пробовать.

Mandrill API
Юзер

Mandrill API - 25 марта 2020 11:37 -

Это для main.php или show.short.php код?
Что-то запутался :(

dj-avtosh
PHP-developer

dj-avtosh - 25 марта 2020 12:04 -

это у какого сервера есть HTTP_GET_JSON? httpd?

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

cortin
Юзер

cortin - 25 марта 2020 13:13 -

это jquery ajax пусть вставляет

cortin
Юзер

cortin - 25 марта 2020 11:38 -

Да в DLE14 engine/modules/main.php надо вставить после


$tpl->set ( '{content}', "<div id='dle-content'>" . $tpl->result['content'] . "</div>" );

$tpl->compile ( 'main' );

Mandrill API
Юзер

Mandrill API - 25 марта 2020 11:40 -

Большое спасибо! Буду тестировать.
Теперь появился вопрос, где для json шаблон создавать )))
Думаю в процессе тестов соображу.

cortin
Юзер

cortin - 25 марта 2020 11:49 -

Создай отдельный файл и вставь его в main.tpl, тэги template по умолчанию в браузере не ведны, они и созданы чтобы их использовать, для js это удобно с jquery вообще идеально будет все, можеш без нее
Внем может быть такое:

<template id="...">
 <div class=....
</template>
<template id="...">
 <div class=....
</template>
<template id="...">
 <div class=....
</template>

cortin
Юзер

cortin - 25 марта 2020 11:42 -


$tpl->set ( '{AJAX}', $ajax );
$tpl->set ( '{info}',  $tpl->result['info'] );

$tpl->set ( '{content}', "<div id='dle-content'>" . $tpl->result['content'] . "</div>" );

$tpl->compile ( 'main' );

if ( isset( $_SERVER["HTTP_GET_JSON"] ) )
{
    $json = json_encode( [
        "status" => "...",
        "content" => $tpl->result["content"],
    ] );
   exit($json );
}

cortin
Юзер

cortin - 25 марта 2020 11:42 -

Это так для тестов, конечно когда все тебя устроит это все надо будет перенести в плагин

Mandrill API
Юзер

Mandrill API - 25 марта 2020 11:49 -

Если обратиться с гет параметром отдаст json, а где настроить сам json шаблон в который должны быть теги {title}, {data} и другие? Не до конца понял (
Сохранив при этом стандартный шаблон для посетителей.

cortin
Юзер

cortin - 25 марта 2020 15:24 -

пхп код модифицируйте пусть это все выдасть json

LazyDev
PHP-developer

LazyDev - 25 марта 2020 13:29 -

Зачем? Во имя чего? Ужас. Впихивать react на готовую cms не приспособленную для этого. Жесть.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

cortin
Юзер

cortin - 25 марта 2020 15:25 -

А в чем не приспобленость ?

Mandrill API
Юзер

Mandrill API - 25 марта 2020 18:44 -

Шаблоны на react уж очень красивые и современные. Если раньше можно было купить классную тему и не париться, то сейчас это невозможно, одно галимое г. Нужно либо заказывать дизайн и верстку, либо использовать react.js шаблоны т.к. среди них еще есть качественные и красивые темы.

TeraMoune
Эксперт

TeraMoune - 25 марта 2020 21:03 -

И тем не менее в обоих случаях применяются одни и те же правила CSS которые и придают оформление шаблонам. Любой стиль формы, компонента, инпута, меню и тд из шаблона react можно без особых усилий перенести в html&css.

Mandrill API
Юзер

Mandrill API - 26 марта 2020 09:46 -

Вчера возился с php, когда дошел до jquery ajax то понял, что не осилю задачу )
С утра в голову пришла другая мысль )))
Создал копию сайта - установил бекап в папку сайта site.ru/copy/ и в ней отдаю json во всех шаблонах.
Теперь если на главном сайте переходить в категорию, видишь категорию, а не json.

Но сбрасывается авторизация (((
Я подумал, что если 2 cms внутри одного домена, авторизацию будет держать, но не держит.
Хотя если авторизоваться в админке на основном сайте и перейти в админку на сайт из папки site.ru/copy/admin.php то на нем тоже авторизован.

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

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

наверх