Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по вёрстке » Загрузка {custom} во вкладках на ajax, как сделать?

Загрузка {custom} во вкладках на ajax, как сделать?


     15.09.2015    Общие вопросы по вёрстке, Шаблоны (TPL), jQuery    4138

вопрос
Добрый день, люди добрые.
Давно хотел на сайте использовать не просто обычные вкладки, а вкладки, которые загружали контент только той вкладки, которая в данный момент активная.
Очень долго искал, потом забыл и наконец-то нашел замечательный код:


 CSS


Работает всё как нужно, но здесь всё устроено так, что содержимое вкладок берется из статических страниц, а мне нужно, что бы в первой вкладке было содержимое {custom category="1"}, во второй {custom category="2"} и в третьей {custom category="3"}.
Т.е в каждой вкладке свой тег {custom}.
Уже битый день пытаю переделать, а всё не пойму как. Подскажите пожалуйста.

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

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 11:35 -

Т.е. их не должно быть изначально, а по клику они должны забираться с сервера?

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 11:43 -

Да, но содержимое должно подгружаться не с стат. страницы (как сейчас), а с блока содержащего {custom}.
Если на стат. странице написать {custom category="1"}, то во вкладке отображается просто текст "{custom category="1"}"

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 11:45 -

Смысл костылить, проще спрятать контент под hidden и показывать его по клику на таб. Или нужна какая-то магия?

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 11:49 -

Прикол в том, что в каждой вкладке много содержимого (3 ленты новостей, 1 вкладка - 1 лента).
А это грузит страницу прилично, а так отображается (подгружается) содержимое той или иной вкладки, только по клику.

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 11:48 -

судя по Вашему вопросу, Вы требуете композитную подгрузку контена. Грубо говоря - Вы хотите что бы у Вас по определенной ссылке подгружался только контент нужного custom, все таки легче спрятать под hidden, если конечно это не делается во благо производительности, и в сторону усугубления индексации.

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 11:52 -

"Вы хотите что бы у Вас по определенной ссылке подгружался только контент нужного custom"
- Да.
Но как я уже говорил:
<li><a href="./tabs/tab-2.html">Вкладка 2</a></li>

Если на стат. странице tab-2.html написать {custom category="1"}, то во вкладке отображается просто текст "{custom category="1"}"

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 11:54 -

Логично, это даже не файл шаблона. Пора учиться думать головой.

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 11:57 -

Пробывал создавать файл .tpl в шаблоне (и ссылку на него вместо ./tabs/tab-2.html) и там прописывать custom, тоже толку 0.

G-3p
Юзер

G-3p - 15 сентября 2015 12:01 -

Сам код и вкладки работают прекрасно, но вот вопрос в том, как заставить их выводить содержимое {custom}.

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 12:10 -

Создаете файл /engine/modules/only_content/only_content.php с содержимым


<?php

/**
* Load only content
*/

! defined( 'DATALIFEENGINE' ) && die( "Hacking attempt!" );

! empty( $_REQUEST['id'] )    && $_REQUEST['id'] = ( (int) $_REQUEST['id'] );

  empty( $_REQUEST['id'] )    && $_REQUEST['id'] = 'default';


$tplName        = 'only_content_' . $_REQUEST['id'] . '.tpl';
$tplNameWithDir = $tpl->dir . '/' . $tplName;

if ( file_exists( $tplNameWithDir ) )
{

    $tpl->load_template( $tplName );
    $tpl->compile( 'only_content' );
    $tpl->clear();

    die($tpl->result['only_content']);


} else {

    die( 'error' );

}


в engine/engine.php прописываете

case 'only_content' : include ENGINE_DIR.'/modules/only_content/only_content.php'; break;


затем создаете шаблон, допустим

only_content_1.tpl


и обращаетесь по адресу

 /?do=only_content&id=1


если обратиться по адресу:

 /?do=only_content


будет загружен

only_content_default.tpl


для

 /?do=only_content&id=2


будет

only_content_2.tpl


и так далее, внутри этих tpl должны работать глобальные теги.



Не тестировал!

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 12:56 -

Ничего не отображает и даже по переходу на эту страницу пишет, мол публикаций по этому адресу нет.

LazyDev
PHP-developer

LazyDev - 15 сентября 2015 12:48 -

А не проще сделать в /ajax/ php и по ajax подгружать а не парсить с другой страницы?

Мой блог: LazyDev.pro

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

G-3p
Юзер

G-3p - 15 сентября 2015 12:54 -

Можешь показать как? А то вариант выше не работает.
P.S: Спасибо за хорошие модули. Пока не пользуюсь, но подумываю. Это уже 3-й сайт делаю с 0, 2 пред. в утиль, не понравился результат.

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 12:59 -

в engine.php ничего не забыли добавить?

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 13:04 -

Хорошая новость, заработало. Я в файл создал в modules, а не modules/only_content. Идиот(
Плохая новость, выводит просто текст {custom category="1"}

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 13:05 -

быть не может, какая версия dle?

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 13:06 -

10.5

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 13:06 -

ссылку на вывод в студию

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 13:10 -

Сайт на Denwer. http://akus.com/?do=only_content&id=1
Содержимое only_content_1.tpl
{custom category="1"}
Новости есть, если в main это {custom category="1"} прописать, то выводит.

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 13:15 -

Просто обязано работать. Что-то не так делаете.

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 13:20 -

Если в прошлый раз был действительно был косяк, то на этот раз всё сделано согласно инструкции.
Точь в точь. Может с кодом табов где-то конфликт?

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 13:23 -

по прямой ссылке тоже не показывает новости?

Если обратиться к /?do=only_content&id=1

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 13:24 -

Нет. Только текст, пробовал и с {login}, тоже самое.

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 13:25 -

если есть тимвьювер, могу посмотреть, го в скайп.

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 13:28 -

Интернет очень слабый.

LazyDev
PHP-developer

LazyDev - 15 сентября 2015 13:21 -

G-3p, сейчас на паре сижу, не мею возможности как таковой.

Мой блог: LazyDev.pro

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

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 13:01 -

нравится в ajax прописывать пути к шаблонизатору и загружать его класс? Я дал самое нормальное решение, если код читать умеете.

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

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

LazyDev
PHP-developer

LazyDev - 15 сентября 2015 13:11 -

dj-avtosh, да, вариант хороший, ничего против не имею. Так же можно только по подгрузке сделать. Только можно сделать через file_get_contents а не подгружать класс.

Мой блог: LazyDev.pro

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

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 13:14 -

При чем тут file_get_contents? Подгружать tpl файл и парсить?

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

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

LazyDev
PHP-developer

LazyDev - 15 сентября 2015 13:16 -

dj-avtosh, ajax > file_get_contents > preg_replace_callback > return = профит.

Мой блог: LazyDev.pro

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

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 13:18 -

Не знаю не знаю, file_get_contents, тогда уж лучше include...

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

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

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 13:37 -

подозреваю дело в криво настроенном денвере :D

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 13:55 -

G-3p: Мне лень было возиться с {custom category="2"}, поэтому я экспериментировал на {login}.
Но я до сих пор не могу понять, почему на логин оно не работает.
dj-avtosh: потому что login относится к main.tpl как бы
что бы работал логин нужно в php добавить $tpl->set( '{login}', $member_id['name'] );
после $tpl->load_template( $tplName );

dj-avtosh
PHP-developer

dj-avtosh - 15 сентября 2015 16:10 -

нет, это называется я положил на вас всех и мне в последний раз на вопрос ответили.

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

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

G-3p
Юзер

G-3p - 15 сентября 2015 16:26 -

И зачем грубить?

G-3p
Юзер

G-3p - 15 сентября 2015 16:31 -

***Комментарий удален***

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

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

наверх