Технический сбой

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

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


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

вопрос
Пытаюсь адаптировать 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 - -

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

Mandrill API
Юзер

Mandrill API - -

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

cortin
Юзер

cortin - -

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

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

Mandrill API
Юзер

Mandrill API - -

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

Mandrill API
Юзер

Mandrill API - -

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

dj-avtosh
PHP-developer

dj-avtosh - -

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

По заказам пишем сюда: @Rud00y

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

cortin
Юзер

cortin - -

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

cortin
Юзер

cortin - -

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


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

$tpl->compile ( 'main' );

Mandrill API
Юзер

Mandrill API - -

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

cortin
Юзер

cortin - -

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

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

cortin
Юзер

cortin - -


$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 - -

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

Mandrill API
Юзер

Mandrill API - -

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

cortin
Юзер

cortin - -

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

LazyDev
PHP-developer

LazyDev - -

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

Мой блог: LazyDev.pro

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

cortin
Юзер

cortin - -

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

Mandrill API
Юзер

Mandrill API - -

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

TeraMoune
Эксперт

TeraMoune - -

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

Тестовый репозиторий установки плагинов: teramoune

Mandrill API
Юзер

Mandrill API - -

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

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

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

наверх