if 404 page

mester képe

Sziasztok.

Egy egyszerű if-el szeretném ellenőrizni, hogy aktuális oldal 404, az nem található-e.

Milyen változót vagy összefüggést használhatok?

Köszi

Drupal verzió: 
Nagy Gusztáv képe

Én ezt a kérdést nem értem. Mit szeretnél?

0
0

Nagy Gusztáv

mester képe

Arról lenne szó, hogy a sminkben van egy olyan rész, amit nem szeretném ha megjelenne a 404-es oldalakon.

Ezért gondoltam arra, hogy egyszerű if-el ellenőrizhető lenne.

0
0
DTB képe

Ha egy létező oldalt akarsz ellenőrizni, akkor több megoldás is létezik,
ez legfőképp a telepített moduloktól függ. Talán legegyszerübb a drupal url() fuggvényével képzett cimet lekérdezni a standard http_get() php függvénnyel,
valami ilyesmi kóddal:

<?php
$address=url("node/" . $node->nid); //ezzel megkapod a drupal által használt cimet  
if(http_get($address, array("timeout"=>1), $info)){
    // az oldal létezik
    // print_r($info); // visszakapott fejléc
}
else{
    // hiba, ide amit akarsz csinálni hiba esetén    
}
?> 

Ha jól sejtem, akkor a 404-es oldalakat akarod kiszűrni. Javaslom keresd meg a drupal.org-on a Search 404 modult: http://drupal.org/project/search404
0
0
mester képe

Nem egy konkrét oldalnál szeretném, hanem általánosságban, ha page == 404, akkor a sminken nem jelenik meg a bizonyos rész.

Nézegettem már azt a search404 modult, meg a function drupal_not_found() függvényt is, de ehhez a részhez pont nem értek annyira.

Hátha valaki ebbe megtalálja a megoldást:

function drupal_not_found() {
  drupal_set_header('HTTP/1.1 404 Not Found');
 
  watchdog('page not found', check_plain($_GET['q']), NULL, WATCHDOG_WARNING);
 
  // Keep old path for reference.
  if (!isset($_REQUEST['destination'])) {
    $_REQUEST['destination'] = $_GET['q'];
  }
 
  $path = drupal_get_normal_path(variable_get('site_404', ''));
  if ($path && $path != $_GET['q']) {
    // Set the active item in case there are tabs to display, or other
    // dependencies on the path.
    menu_set_active_item($path);
    $return = menu_execute_active_handler($path);
  }
 
  if (empty($return) || $return == MENU_NOT_FOUND || $return == MENU_ACCESS_DENIED) {
    drupal_set_title(t('Page not found'));
    $return = t('The requested page could not be found.');
  }
 
  // To conserve CPU and bandwidth, omit the blocks.
  print theme('page', $return, FALSE);
}
0
0
aboros képe

az adminisztrációs felületen megadhatod, hogy melyik node jelenjen meg 404 esetén. beküldesz egyet és beállítod, hogy az legyen. szerintem mivel ez ugyan olyan node, mint bármelyik másik, simán sminkelheted is ugyanúgy, mint bármelyik másik nodeot, például az idje alapján saját tpl.php használatával.

0
0

-
clear: both;

mester képe

De én nem egyedi 404 oldalt szertnék, hanem akkor mondok egy példát, azt, hogy a 404 oldalon ne jelenjen meg a LOGO.

Ezt pl. hogy lehet megcsinálni ?

0
0
aboros képe

csinálsz egy nodeot, ami a 404 oldalad lesz, annak létrehozol saját tpl.php -t a page.tpl.php alapján és kiszeded belőle a logot. így.

0
0

-
clear: both;

mester képe

Hmmm, azt hittem, hogy a node-x.tpl.php fájlban csak a node megjelenését lehet módosítani, nem az egész page-t, de majd akkor próbálkozom.

0
0
pp képe

Minden node-nak van egy egyedi útvonala node/$nid (ahol a $nid a node egyedi azonosítója) és minden útvonalhoz tudsz egyedi page.tpl.php-t gyártani. Tehát a node.tpl.php-hez nem kell nyúlnod, hanem a megfelelő page-node-$nid.tpl.php fájlt kell módosítanod.

pp

0
0
mester képe

Így már értem, ezt a lehetőséget nem ismertem. Köszönöm szépen, működik és tetszik is ez a megoldás :)

0
0
csg képe

Arra kell ilyenkor vigyázni, hogy a 404-es oldalakon nem jelennek meg a blokkok sem. Én pont ma vettem észre, hogy ha rámegyek a /404 oldalra, akkor ott vannak, de ha egy nem létező url-t írok be, akkor nincsenek.

Ha szeretnél blokkokat a 404 oldaladon, arra itt a megoldás:
http://drupal.org/node/129762#comment-232868

0
0

--
Csonka Gergely
http://cheppers.com

DTB képe

Ebben az esetben én a smink page.tpl.php-t buherálnám és a $title változó értékét figyelném.
Az általam használt sminkben ez a $head_title de lehet, hogy más sminkben másként hivják.

<?php
if ($title=t('Page not found')){
    //amit változtatni akarsz
}
...
?>
0
0
mester képe

Igazából ilyenre gondoltam, meg kisebb pontosítás után működik is, csak eléggé buherált dolog... :S

0
0