Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Пишу модуль, Подскажите с выводом в полной новости и профиле.

Пишу модуль, Подскажите с выводом в полной новости и профиле.


     07.04.2014    dle 10.1, написание модулей, модули    Все вопросы » Общие вопросы по PHP    2776

вопрос
Доброго времени суток!
Уважаемые PRO и все кто пишет модули для dle.

Изучаю php уже как месяц, пишу свои модули. ну или стараюсь так сказать =)
И так, что я изучил за это время:
Как написать простой модуль, и вывести его на статической странице ( /index.php?do=mymod или mymod.html) кому как удобнее.
Так же изучил класс для работы с БД
Принципы написания и работы админки (админку тоже написал)

После всего проделанного хочу продвинуться дальше. И как всегда не обошлось без проблем. У меня возникла пара-тройка вопросов касательно dle. И вот хотелось бы обратиться к Вам за помощью, а именно:

Вывод в полной новости (тегами не инклудом)
Вывод в профиле (тегами не инклудом)

Буду очень благодарен тем кто мне поможет!
Заранее спасибо Вам =)

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


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

Kolya groza morey
Юзер

Kolya groza morey - 7 апреля 2014 12:46 -

Вывод в полной новости (тегами не инклудом)
Вывод в профиле (тегами не инклудом)

Лучше иклудом, если тегами нужно править файлі движка, а это вызовет лишние проблемы при обновлении.

Kota
Юзер

Kota - 7 апреля 2014 12:48 -

Знаю что инклудом проще. Но хотелось бы тегами. потому что для модулей муду делать отдельные шаблоны оформления)

dj-avtosh
PHP-developer

dj-avtosh - 7 апреля 2014 13:11 -

А как понять тегами не инклудом?

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

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

Kota
Юзер

Kota - 7 апреля 2014 13:15 -

Инклудом: {include file="engine/modules/characters/characters.php"}

Тегом: {characters}

dj-avtosh
PHP-developer

dj-avtosh - 7 апреля 2014 13:30 -

Это совсем разные сущности.

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

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

Kota
Юзер

Kota - 7 апреля 2014 13:32 -

Цитата: dj-avtosh
Это совсем разные сущности.

Знаю, вот и прошу помощи в данном вопросе.

rashpil
Эксперт

rashpil - 7 апреля 2014 14:52 -

Тогда не слушай эту ню про обновления и мол движок править придётся, на данном этапе позволительно опустить заботу об этом. Если хочешь вывести контент на отдельной страничке, то в engine.php подключай свой этот модуль. Вся информация со страницы (центральной колонки) выгружается в тег {content}. И структурируешь код соответствующим образом, вызывая шаблон: $tpl->load_template('my_module.tpl'); (Обычно ставится перед перед формированием контента, но не принципиально). Заполняешь теги (теги в шаблоне) информацией из модуля и в конце запускаешь компиляцию ($tpl->compile('content');)

Kota
Юзер

Kota - 7 апреля 2014 15:05 -

rashpil,
Спасибо!

По поводу компиляции.
/* Подгружаем шаблон */
$tpl->load_template('character.tpl');
$tpl->set('{txt}', $txt);
$tpl->set('{detail_txt}', $txt_detail);
$tpl->set('{version}', $version);
$tpl->compile('content');
$tpl->clear();

Так да?

Опишу процесс как я делал:

Подключил к /engine/engine.php

после
switch ( $do ) {

вставил

case "character" :
include ENGINE_DIR . '/modules/character/character.php';
break;

Всё работает.

Для вывода в полной новости делал так.

в /engine/modules/show.full.php

Перед строчкой
$tpl->compile( 'content' );
вставил

require_once ENGINE_DIR.'/modules/character/character.php';
$tpl->set ( '{character}', $tpl->result['character'] );

D0Gmatist
Юзер

D0Gmatist - 7 апреля 2014 21:28 -

можешь даже с отдельным шаблоном
    $tpl2 = new dle_template();
    $tpl2->dir = TEMPLATE_DIR;
    $tpl2->load_template( 'character.tpl' );

    $tpl2->set('{detail_txt}', $txt_detail);
    $tpl2->set('{version}', $version);

    $tpl2->compile( 'content' );
    $character_buffer = $tpl2->result['content'];
    unset($tpl2);


и соответственно
    require_once ENGINE_DIR.'/modules/character/character.php';
    $tpl->set ( '{character}', $character_buffer );

Kota
Юзер

Kota - 7 апреля 2014 22:47 -

D0Gmatist,
Больщущее Вам спасибо за данный ответ!
Как я понял в character.tpl эти два тега {version} и {detail_txt} буду т выводить результат работы переменных $txt_detail и $version.

а вот эта часть вписывается допустим в show.full.php
require_once ENGINE_DIR.'/modules/character/character.php';
    $tpl->set ( '{character}', $character_buffer );

и если в полной новости вписать тег {character} то будет выводиться результат работы модуля со своим шаблоном.
Правильно я понял?

D0Gmatist
Юзер

D0Gmatist - 7 апреля 2014 22:58 -

Да всё првильно

Kota
Юзер

Kota - 7 апреля 2014 23:00 -

D0Gmatist,
Еще раз спасибо большое!
Если будут вопросы можно будет к вам обратиться?

D0Gmatist
Юзер

D0Gmatist - 7 апреля 2014 23:01 -

Да пишите

Kota
Юзер

Kota - 8 апреля 2014 02:40 -

D0Gmatist,
Ну вот и вопрос к Вам:
В полной новости у меня будет кнопка добавить персонажей
При добавлении заполняю нужные мне данные. Которые записываются не в стандартную таблицу дле а в отдельную таблицу.
Как организовать привязку добавленных персонажей к той новости в которой они были добавлены? Знаю что нужно в таблице dle_posts добавить новый столбец characters к которому уже привязывать id персонажей из таблицы персонажей. Буду благодарен если подскажете на каком нибудь примере.

rashpil
Эксперт

rashpil - 8 апреля 2014 09:49 -

Можешь мой старый модуль актёров в паблике поискать, там актёры упоменаются в новостях, а инфа по ним в отдельной страничке

D0Gmatist
Юзер

D0Gmatist - 8 апреля 2014 11:02 -

    $db->query( "INSERT INTO " . PREFIX . "_post (...) values (...)" ); // Новая запись в БД
    $row = $db->insert_id(); // возвращаем AUTOINCRIMENT последней записи ... то есть ID
    $idPost = $row;
    $db->query( "INSERT INTO " . PREFIX . "_characters (post_id, ...) VALUES ('{$idPost}', ...)" ); // заносим ид поста в другую таблице чем получаем привязку

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

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

наверх