Kaip savame modulyje iškviesti error404

Lietuviškas CMS Made Simple forumas

Moderator: Augustas

Post Reply
User avatar
Augustas
Forum Members
Forum Members
Posts: 241
Joined: Wed Oct 17, 2007 6:09 pm

Kaip savame modulyje iškviesti error404

Post by Augustas »

Gal kas žino kokias CMSMS komandas reikia naudoti, norint savo pagamintame modulyje iškviesti error404 puslapio turinį ir kad jį pavaizduotų su šablonu (template) priskirtu tam puslapiui.

Jei konkrečiau, mano sukurtas modulis tam tikrais atvejais turi išmesti ERROR 404 klaidą, ir tam padaryti norėčiau rodyti CMSMSe esančio built-in puslapio su aliasu "error404" turinį (content).

Bandau įvairius variantus, bet niekaip nerandu CMSMS funkcijų kombinacijos, kurių pagalba tai galėčiau padaryti nenusigrybaudamas.
Be to, CMSMS apidoc'as nelabai detalus ir pavyzdžių niekur nėra.

Ačiū
http://FollowTheRoad.com/ - living on the road...
http://www.kligys.com/ - asmeninis blog'as...
vilkis

Re: Kaip savame modulyje iškviesti error404

Post by vilkis »

Labas,
nelabai suprantu kas yra "built-in" puslapis. Bet redirectinimą į sukurtą puslapį galima padaryti taip:

Code: Select all

$alias = 'error404';
$id = ContentManager::GetPageIDFromAlias($alias);
if($id)
{
	$this->RedirectContent($id);
	return;
}
vilkis
User avatar
Augustas
Forum Members
Forum Members
Posts: 241
Joined: Wed Oct 17, 2007 6:09 pm

Re: Kaip savame modulyje iškviesti error404

Post by Augustas »

sakau "built-in", nes nuo vienos iš paskutinių CMSMS versijų (galbut nuo 1.6) tarp Content Types egzistuoja ir "Error Page" tipas, pagal kurį sukurus puslapį, jam automatiškai priskiriamas alias'as "error404".

Dėkui už pasiūlymą, bet ir jį esu anksčiau išbandęs. Problema ta, jog šitas redirektinimas duoda klaidos statusą = 302.
O man reikia, kad klaidos kodas iš karto būtų 404.

Aš kol kas tą reikalą išsprendžiau taip:

Code: Select all

if(    [sąlyga netenkinama]    ){
	header("HTTP/1.1 404 Not Found");
	header("Status: 404 Not Found");
	$_GET['page'] = $_REQUEST['page'] = 'xxmxmxmxmxmxmxmxmxasasasasas';
	include(dirname(__FILE__).'/../../index.php');
	exit;
}
T.y. aš iš modulio iškviečiu CMSo pagrindinį index.php failą su neegzistuojančio puslapio alias'u.
Nelabai švariai, bet veikia. --> rodomas tekstas nurodytas "error404" puslapyje, ir išmetama http status 404 klaida.
Last edited by Augustas on Mon Apr 12, 2010 12:19 pm, edited 1 time in total.
http://FollowTheRoad.com/ - living on the road...
http://www.kligys.com/ - asmeninis blog'as...
User avatar
Augustas
Forum Members
Forum Members
Posts: 241
Joined: Wed Oct 17, 2007 6:09 pm

Re: Kaip savame modulyje iškviesti error404

Post by Augustas »

Pastebėjau, kad nereikia nurodyti 404 statuso headerių mano modulyje, nes aš juk kviečiu neegzistuojantį puslapį.
t.y. kodas būtų:

Code: Select all

if(    [sąlyga netenkinama]    ){
	$_GET['page'] = $_REQUEST['page'] = 'xxmxmxmxmxmxmxmxmxasasasasas';
	include(dirname(__FILE__).'/../../index.php');
	exit;
}
http://FollowTheRoad.com/ - living on the road...
http://www.kligys.com/ - asmeninis blog'as...
vilkis

Re: Kaip savame modulyje iškviesti error404

Post by vilkis »

Nepadėjau, bet sužinojau :)
Reiks kada nors išbandyti.
vilkis
User avatar
Augustas
Forum Members
Forum Members
Posts: 241
Joined: Wed Oct 17, 2007 6:09 pm

Re: Kaip savame modulyje iškviesti error404

Post by Augustas »

Pasirodo mano sprendimas veikia normaliai tik kai "config.php" faile 'process_whole_template' yra TRUE:
$config['process_whole_template'] = true;

Kadangi nuo CMSMS 2.0 jo reikšmė bus FALSE, ir nebebus galima jo keisti config'e, aš vis dar ieškau varianto savo problemai :)
http://FollowTheRoad.com/ - living on the road...
http://www.kligys.com/ - asmeninis blog'as...
Post Reply

Return to “Lithuanian - Lietuviškai”