Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по вёрстке Загрузка {custom} во вкладках на ajax, как сделать?

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


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

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


 CSS


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

Комментарии пользователей (36)

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 11:35 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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

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

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 11:45 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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

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

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 11:48 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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
39

1479 | 390

dj-avtosh - 15 сентября 2015 11:54 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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

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

G-3p
13

179 | 40

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

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

dj-avtosh
39

1479 | 390

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 должны работать глобальные теги.



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

skype: elhan.isaev

G-3p
13

179 | 40

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

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

Gameer
226

1124 | 396

Gameer - 15 сентября 2015 12:48 - Эксперт

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

Истина в противоречии.​

G-3p
13

179 | 40

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

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

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 12:59 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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

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

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 13:05 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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

10.5

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 13:06 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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
39

1479 | 390

dj-avtosh - 15 сентября 2015 13:15 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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

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

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 13:23 - шашлычник

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

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

skype: elhan.isaev

G-3p
13

179 | 40

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

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

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 13:25 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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

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

Gameer
226

1124 | 396

Gameer - 15 сентября 2015 13:21 - Эксперт

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

Истина в противоречии.​

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 13:01 - шашлычник

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

skype: elhan.isaev

Gameer
226

1124 | 396

Gameer - 15 сентября 2015 13:11 - Эксперт

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

Истина в противоречии.​

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 13:14 - шашлычник

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

skype: elhan.isaev

Gameer
226

1124 | 396

Gameer - 15 сентября 2015 13:16 - Эксперт

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

Истина в противоречии.​

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 13:18 - шашлычник

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

skype: elhan.isaev

dj-avtosh
39

1479 | 390

dj-avtosh - 15 сентября 2015 13:37 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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
39

1479 | 390

dj-avtosh - 15 сентября 2015 16:10 - шашлычник

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

skype: elhan.isaev

G-3p
13

179 | 40

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

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

G-3p
13

179 | 40

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

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

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

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