Отвечу на ваши вопросы по DLE

mr.Temkin
На сайте с 17.11.2010
Offline
37
#1671

Может, кто-то сталкивался с такой проблемой. В шаблоне настройки имейл-сообщения, отсылаемого при добавлении нового комментария на сайте, стоит: "Если вы не хотите больше получать уведомлений о новых комментариях к данной новости, то проследуйте по данной ссылке: {%unsubscribe%}", а на почту всем пользователям приходит "Если вы не хотите больше получать уведомлений о новых комментариях к данной новости, то проследуйте по данной ссылке: --" ?

То есть вместо ссылки на адрес, где можно отписаться, стоит двойной прочерк.

Надеюсь на лучший исход
M
На сайте с 04.12.2013
Offline
223
#1672

Никому не нужен домен dlе10, рушка?

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
Q1
На сайте с 04.04.2010
Offline
121
#1673

как на дле 10 код линкфид поставить?

Ни фига не пашет, у всех такая же трабла, если всё по инструкции делать..

Просто больше денег - monsterwap.com (https://monsterwap/welcome/GRR5) Регистрация открыта для всех!
A
На сайте с 02.10.2012
Offline
12
#1674

Как реализовать кэширование в модуле, если в модуле такие строки:

$sql_result = $db->query( $sql_request );

$found_result = $db->num_rows( $sql_result );
$result_count = $db->super_query( "SELECT COUNT(*) as count $sql_from $where" );
$count_result = $result_count['count'];

$tpl->load_template( '/personaj.tpl' );
$build_navigation = false;
include (ENGINE_DIR . '/modules/show.custom.php');

$tpl->result['content'] = str_ireplace( '[personaj]', '', $tpl->result['content'] );
$tpl->result['content'] = str_ireplace( '[/personaj]', '', $tpl->result['content'] );
if( $config['files_allow'] )
if( strpos( $tpl->result['content'], "[attachment=" ) !== false ) {
$tpl->result['content'] = show_attach( $tpl->result['content'], $attachments );
}

Я так понял выборка из бд передается в show.custom.php, чтобы был наложен шаблон на все строки выборки. А как сделать так, чтобы модуль создавал кэш в данном случае?

Спасибо.

sashka_
На сайте с 27.01.2010
Offline
103
#1675
Attyla:
Как реализовать кэширование в модуле, если в модуле такие строки:

$sql_result = $db->query( $sql_request );

$found_result = $db->num_rows( $sql_result );
$result_count = $db->super_query( "SELECT COUNT(*) as count $sql_from $where" );
$count_result = $result_count['count'];

$tpl->load_template( '/personaj.tpl' );
$build_navigation = false;
include (ENGINE_DIR . '/modules/show.custom.php');

$tpl->result['content'] = str_ireplace( '[personaj]', '', $tpl->result['content'] );
$tpl->result['content'] = str_ireplace( '[/personaj]', '', $tpl->result['content'] );
if( $config['files_allow'] )
if( strpos( $tpl->result['content'], "[attachment=" ) !== false ) {
$tpl->result['content'] = show_attach( $tpl->result['content'], $attachments );
}


Я так понял выборка из бд передается в show.custom.php, чтобы был наложен шаблон на все строки выборки. А как сделать так, чтобы модуль создавал кэш в данном случае?
Спасибо.

<?
$tpl->result['content'] = false;
$tpl->result['content'] = dle_cache( md5( $sql_request ) );

if( !$tpl->result['content'] ) {

$sql_result = $db->query( $sql_request );
$found_result = $db->num_rows( $sql_result );
$result_count = $db->super_query( "SELECT COUNT(*) as count $sql_from $where" );
$count_result = $result_count['count'];

$tpl->load_template( '/personaj.tpl' );
$build_navigation = false;
include (ENGINE_DIR . '/modules/show.custom.php');

$tpl->result['content'] = str_ireplace( '[personaj]', '', $tpl->result['content'] );
$tpl->result['content'] = str_ireplace( '[/personaj]', '', $tpl->result['content'] );
if( $config['files_allow'] )
if( strpos( $tpl->result['content'], "[attachment=" ) !== false ) {
$tpl->result['content'] = show_attach( $tpl->result['content'], $attachments );
}

if( $tpl->result['content'] )
create_cache( md5( $sql_request ) , $tpl->result['content'] );

}

Вот так попробуй

Знаю PHP, JS, jQuery. Помощь для вашего сайта. (/ru/forum/840509).
дани мапов
На сайте с 06.09.2012
Offline
204
#1676
Attyla:
Как реализовать кэширование в модуле, если в модуле такие строки:

$sql_result = $db->query( $sql_request );

$found_result = $db->num_rows( $sql_result );
$result_count = $db->super_query( "SELECT COUNT(*) as count $sql_from $where" );
$count_result = $result_count['count'];

$tpl->load_template( '/personaj.tpl' );
$build_navigation = false;
include (ENGINE_DIR . '/modules/show.custom.php');

$tpl->result['content'] = str_ireplace( '[personaj]', '', $tpl->result['content'] );
$tpl->result['content'] = str_ireplace( '[/personaj]', '', $tpl->result['content'] );
if( $config['files_allow'] )
if( strpos( $tpl->result['content'], "[attachment=" ) !== false ) {
$tpl->result['content'] = show_attach( $tpl->result['content'], $attachments );
}


Я так понял выборка из бд передается в show.custom.php, чтобы был наложен шаблон на все строки выборки. А как сделать так, чтобы модуль создавал кэш в данном случае?
Спасибо.

Вот нашел как реализовано в модуле меню, можно сделать по этому примеру:


$cache_time = 1440;//1 day

$cat_menu = LoadFromCache( 'cat_menu', $cache_time, 'text' );
if ( !$cat_menu )
{
$sql_result = $db->query("SELECT id,alt_name,name FROM " . PREFIX . "_category WHERE parentid=101 ORDER BY id");
$cat_menu='';


...............



$cat_menu.= '</ul></div>';

SaveToCache( 'cat_menu', $cat_menu );
}
$tpl->set('{cat_menu}', $cat_menu);
Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
A
На сайте с 02.10.2012
Offline
12
#1677

sashka_, сделал так, как вы написали, а как проверить, что данные читаются из кэша а не из бд? Это возможно как-то отследить? Количество запросов не уменьшается, если запустить модуль дважды подряд с одинаковыми параметрами. Если я правильно понял, то он создает, но не читает кэш. Как быть?

sashka_
На сайте с 27.01.2010
Offline
103
#1678
Attyla:
sashka_, сделал так, как вы написали, а как проверить, что данные читаются из кэша а не из бд? Это возможно как-то отследить? Количество запросов не уменьшается, если запустить модуль дважды подряд с одинаковыми параметрами. Если я правильно понял, то он создает, но не читает кэш. Как быть?

можно вывод на экран сделать, когда работает без кеша


$tpl->result['content'] = false;
$tpl->result['content'] = dle_cache( md5( $sql_request ) );

if( !$tpl->result['content'] ) {
echo "Кеш не сработал";
$sql_result = $db->query( $sql_request );
$found_result = $db->num_rows( $sql_result );
$result_count = $db->super_query( "SELECT COUNT(*) as count $sql_from $where" );
$count_result = $result_count['count'];

$tpl->load_template( '/personaj.tpl' );
$build_navigation = false;
include (ENGINE_DIR . '/modules/show.custom.php');

$tpl->result['content'] = str_ireplace( '[personaj]', '', $tpl->result['content'] );
$tpl->result['content'] = str_ireplace( '[/personaj]', '', $tpl->result['content'] );
if( $config['files_allow'] )
if( strpos( $tpl->result['content'], "[attachment=" ) !== false ) {
$tpl->result['content'] = show_attach( $tpl->result['content'], $attachments );
}

if( $tpl->result['content'] )
create_cache( md5( $sql_request ) , $tpl->result['content'] );

}
A
На сайте с 02.10.2012
Offline
12
#1679
sashka_:
Вот так попробуй

Кэш создается, но не читается, какая может быть причина? В $sql-request есть текущее время это может быть причиной?!

UPD Да проблема была в дате из sql запроса, которая давала другую сумму md5. Спасибо всем, кто помог.

A
На сайте с 02.10.2012
Offline
12
#1680

Другой вопрос: как надо фильтровать параметры GET запроса для того чтобы не нарушить безопасность движка. Видел в functions.php функцию, которая не пропускает url если в нем есть кавычки и другие не безопасные символы. Этого достаточно или надо дополнительно их сканировать, чтобы предотвратить sql injection? Если да, то, как это сделать?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий