Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Вывод результата работы модуля в dle_content без tpl шаблона

Вывод результата работы модуля в dle_content без tpl шаблона


     26.02.2014    Общие вопросы, Общие вопросы по вёрстке, Общие вопросы по PHP    2026

вопрос
Добрый вечер всем, до недавнего времени делал модули для себя с привязкой .tpl шаблона, в случае этого результат работы модуля выводился в тегах:
<div id="dle-content"></div>

$tpl->load_template( 'mytpl.tpl' );


Сейчас модуль совсем небольшой, всего-лишь для вывода лёгкой статистики из БД, не вариант прикреплять шаблон.

Делаю в конце модуля:
echo("Результат работы модуля:".$var);


Но результат выводится вне всего сайта. Как можно сделать вывод результата ровно в нужное место сайта, где он должен быть и с использованием шаблона. В исходниках не нашел что то :( Подскажите плиз, заранее спасибо :)

Ответил: D0Gmatist


Создаём php в нём пишем наш код и подключаем шаблон
    $tpl->load_template( 'vash_tpl.tpl' );


подключаем теги в шаблон
$tpl->set( '{category}', $my_cat );
$tpl->set( '{link}', $my_link );


закрываем tpl
$tpl->compile( 'vash_result' );
$tpl->clear();


Идём в index.php и после
$tpl->set ( '{speedbar}', $tpl->result['speedbar'] );

дописываем
$tpl->set ( '{vash-result}', $tpl->result['vash_result'] );


В main.tpl в любое место подключаем тег {vash-result}

ГОТОВО!!!

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

vk_159926832
206 | 5

vk_159926832 - 26 февраля 2014 14:56 - Юзер

Это не то что нужно, мне надо совсем без подключения шаблона организовать вывод в контент сайта. {content}

D0Gmatist
225

794 | 281

D0Gmatist - 26 февраля 2014 15:09 - Местный

Цитата: vk_159926832
Как можно сделать вывод результата ровно в нужное место сайта, где он должен быть и с использованием шаблона.
вы определитесь )))
то чего вы хотите этого не сделать ...

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

golden_eagle_god
26

247 | 34

golden_eagle_god - 26 февраля 2014 15:26 - Юзер

Можно сделать, на подобии msgbox, там подгружается шаблон в новом классе, я сделал себе заготовку на подобии такой и не парюсь.

vk_159926832
206 | 5

vk_159926832 - 27 февраля 2014 12:43 - Юзер

Считаю как хороший вариант!

D0Gmatist
225

794 | 281

D0Gmatist - 26 февраля 2014 15:43 - Местный

Тот же шаблон в ООП

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

ravchik
66

375 | 123

ravchik - 26 февраля 2014 16:56 - Юзер

а не проще инклюдом подключать к шаблону?
{include file="engine/modules/mymodule.php"}

D0Gmatist
225

794 | 281

D0Gmatist - 26 февраля 2014 17:05 - Местный

как вариант

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

D0Gmatist
225

794 | 281

D0Gmatist - 26 февраля 2014 17:18 - Местный

В папке modules создаём файл statexe.php и в нём пишем
<?php

if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
}

$statexe_news = dle_cache("statexe_news");
if (!$statexe_news) {
    $time = time() - 3500;

    $row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post" );
    $statexe_news = $row['count'];

    create_cache("statexe_news", $statexe_news);
}

$statexe_day = dle_cache("statexe_day");
    if (!$statexe_day) {
    $time = time() - 3500;

    $temp_date = date( 'Y-m-d H:i', $_TIME - (3596 * 24) );
    $row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE date >= '$temp_date'AND date <= '$temp_date' + INTERVAL 24 HOUR AND approve ='1'" );
    $statexe_day = $row['count'];

    create_cache("statexe_day", $statexe_day);
}

?>


идём в файл index.php
ищем
require_once ROOT_DIR . '/engine/init.php';

ниже дописываем
include ROOT_DIR . '/engine/modules/statexe.php';


ищем
$tpl->set ( '{speedbar}', $tpl->result['speedbar'] );

ниже дописываем
$tpl->set ( '{news_num}', $statexe_news );
$tpl->set ( '{news_day}', $statexe_day );


ищем
$tpl->result['main'] = str_ireplace( '{THEME}', $config['http_home_url'] . 'templates/' . $config['skin'], $tpl->result['main'] );

ВЫШЕ дописываем
$tpl->result['main'] = preg_replace_callback ( "#\\[declination=(\d+)\\](.+?)\\[/declination\\]#is", "declination", $tpl->result['main'] );


в шаблоне main.tpl в любое место вставляем ПРИМЕР с фильмами
в базе [declination={news_num}]филь|м|ма|мов[/declination] / за 24h + [declination={news_day}]филь|м|ма|мов[/declination]


итог будет

в базе 159 фильмов / за 24h + 21 фильм

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

ПафНутиЙ
1064

3394 | 2433

ПафНутиЙ - 26 февраля 2014 19:51 - Админ

Что то вы всё усложняете господа.
http://dle-news.ru/extras/online/modules_include.html

[aviable=faq]{include file="engine/modules/mymod.php"}[/aviable]
[not-aviable=faq]{content}[/not-aviable]

Каков вопрос - таков и ответ. Просто помните об этом.

D0Gmatist
225

794 | 281

D0Gmatist - 26 февраля 2014 20:04 - Местный

ПафНутиЙ, я не про усложнения))) человек просил как ему вставить аккуратно .. я привёл два варианта .. и оба оккуратны

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

vk_159926832
206 | 5

vk_159926832 - 27 февраля 2014 12:44 - Юзер

Вы мне не то советовали. Но всё-же спасибо :) поступлю по совету Golden_Eagle

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

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