Перейти к публикации

Первый мод через {include}


Рекомендованные сообщения

В новой версии появилась возможность перенести модификации в отдельные файлы и подключать их из шаблона. Так вот, столкнулся с такой проблемой. (Сразу скажу, что я не профессионал в 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").

Вопрос думаю и так ясен. Почему ошибка и как сделать так, чтобы работало? :)

Ссылка на сообщение
Поделиться на других сайтах

Файл 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;


}


?>

Ссылка на сообщение
Поделиться на других сайтах

проблема в API, в дистрибутив внесены изменения, замените файл engine/api/api.class.php

Ссылка на сообщение
Поделиться на других сайтах

celsoft, кстати если в тег costom добавить параметр "sort", то его можно использовать как topnews в разных разделах с нужных категорий, что очень полезно и отпадет необходимость в модификации которая выше.

Ссылка на сообщение
Поделиться на других сайтах

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

×
×
  • Создать...