TopSoft 2 Опубликовано: 5 августа 2009 Рассказать Опубликовано: 5 августа 2009 В новой версии появилась возможность перенести модификации в отдельные файлы и подключать их из шаблона. Так вот, столкнулся с такой проблемой. (Сразу скажу, что я не профессионал в php) Файл myblock.php подключается в шаблоне так {include file="engine/modules/myblock.php?block=soft"} и так {include file="engine/modules/myblock.php?block=games"} и имеет следующие содержание: if ($block == 'soft') { $topsoft = $dle_api->load_from_cache ("topsoft"); if (!$topsoft) { $db->query ("Select id, title, category, news_read from dle_post where category IN (1) order by news_read desc limit 0,10"); while ($row = $db->get_row()) { $topsoft .= "<li>".$i++.". <a href='".$config['http_home_url'].get_url($row['category'])."/".$row['id'].".html'>".$row['title']."</a><span>".$row['news_read']." просмотров</span></li>"; } } $dle_api->save_to_cache ( "topsoft", $topsoft); echo $topsoft; } if ($block == 'games') { $topgames = $dle_api->load_from_cache ("topgames"); if (!$topgames) { $db->query ("Select id, title, category, news_read from dle_post where category IN (2) order by news_read desc limit 0,10"); while ($row = $db->get_row()) { $topgames .= "<li>".$i++.". <a href='".$config['http_home_url'].get_url($row['category'])."/".$row['id'].".html'>".$row['title']."</a><span>".$row['news_read']." просмотров</span></li>"; } } $dle_api->save_to_cache ( "topgames", $topgames); echo $topgames; } При использование обоих блоков на одной странице появляется следующая ошибка - "Fatal error: Call to a member function load_from_cache() on a non-object in D:\home\localhost\www\engine\modules\myblock.php on line 36". Т.е. на строку $topgames = $dle_api->load_from_cache ("topgames"). Вопрос думаю и так ясен. Почему ошибка и как сделать так, чтобы работало? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 5 августа 2009 Рассказать Опубликовано: 5 августа 2009 TopSoft, покажите как вы подключаете файл API, целиком нужен файл вашего мода. Цитата Ссылка на сообщение Поделиться на других сайтах
TopSoft 2 Опубликовано: 5 августа 2009 Рассказать Опубликовано: 5 августа 2009 Автор Файл myblock.php целиком: <?php include_once ('engine/api/api.class.php'); $i = 1; if ($block == 'soft') { $topsoft = $dle_api->load_from_cache ("topsoft"); if (!$topsoft) { $db->query ("Select id, title, category, news_read from dle_post where category IN (1) order by news_read desc limit 0,10"); while ($row = $db->get_row()) { $topsoft .= "<li>".$i++.". <a href='".$config['http_home_url'].get_url($row['category'])."/".$row['id'].".html'>".$row['title']."</a><span>".$row['news_read']." просмотров</span></li>"; } } $dle_api->save_to_cache ( "topsoft", $topsoft); echo $topsoft; } if ($block == 'games') { $topgames = $dle_api->load_from_cache ("topgames"); if (!$topgames) { $db->query ("Select id, title, category, news_read from dle_post where category IN (2) order by news_read desc limit 0,10"); while ($row = $db->get_row()) { $topgames .= "<li>".$i++.". <a href='".$config['http_home_url'].get_url($row['category'])."/".$row['id'].".html'>".$row['title']."</a><span>".$row['news_read']." просмотров</span></li>"; } } $dle_api->save_to_cache ( "topgames", $topgames); echo $topgames; } ?> Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 5 августа 2009 Рассказать Опубликовано: 5 августа 2009 проблема в API, в дистрибутив внесены изменения, замените файл engine/api/api.class.php Цитата Ссылка на сообщение Поделиться на других сайтах
TopSoft 2 Опубликовано: 5 августа 2009 Рассказать Опубликовано: 5 августа 2009 Автор Заменил новым файлом из дистрибутива. Ошибка осталась Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 5 августа 2009 Рассказать Опубликовано: 5 августа 2009 замените include_once на include Цитата Ссылка на сообщение Поделиться на других сайтах
TopSoft 2 Опубликовано: 5 августа 2009 Рассказать Опубликовано: 5 августа 2009 Автор Заменил на просто include и заработало Спасибо. Цитата Ссылка на сообщение Поделиться на других сайтах
spam 11 Опубликовано: 5 августа 2009 Рассказать Опубликовано: 5 августа 2009 замените include_once на include так ведь это существенно поднимет нагрузку (((( Цитата Ссылка на сообщение Поделиться на других сайтах
TopSoft 2 Опубликовано: 5 августа 2009 Рассказать Опубликовано: 5 августа 2009 Автор celsoft, кстати если в тег costom добавить параметр "sort", то его можно использовать как topnews в разных разделах с нужных категорий, что очень полезно и отпадет необходимость в модификации которая выше. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.