Drupal7

Drupal 7 reparieren

Vom Kunden kam eine mit mySQLDumper erzeugte Datensicherung, einer nicht mehr vorhandenen Drupal7-Installation.

Im Root-verzeichnis der Drupal Installation wechseln und dann den hashwert des Passwortes erzeugen:

$ ./scripts/password-hash.sh "123456"

password: 123456   hash: $S$DT8/WxCb4Z76LesMA.f/sA9q3TDNx0p9iOYSyQRbx4qoncyt1zry

Den Hash-Wert des Admin-Passwortes setzen:

UPDATE users SET pass ='$S$DT8/WxCb4Z76LesMA.f/sA9q3TDNx0p9iOYSyQRbx4qoncyt1zry' WHERE uid = 1;

Das Standard-Thema setzen:

UPDATE system SET status=1 WHERE name = 'garland';
UPDATE variable SET value='s:7:"garland"' WHERE name = 'theme_default';

Den Drupal-Cache löschen

TRUNCATE cache;
TRUNCATE cache_bootstrap;
TRUNCATE cache_block;

Für den Admin das Garland Thema einstellen (nur nötig falls ein User Theme benutzt wird):

UPDATE users SET theme='garland' WHERE uid = '1';

Den temporären Pfad neu stellen:

UPDATE
    variable
SET
    variable.value = 's:4:"/tmp";'
WHERE
    variable.name='file_temporary_path';
Tags: 

Drupal 7: Fatal error: Call to undefined function user_access()

Nachdem ich heute eine Webseite auf die neue Drupal-Version 7.38 umgestellt hatte bekam ich nach dem Update die Fehlermeldung:

Fatal error: Call to undefined function user_access() in /WWWROOT/122711/ht­docs/includes/me­nu.inc on line 3901

Der Fehler trat auf nach einem Update von Drupal 7.34 auf Drupal 7.38

  • Ich habe die Seite mit einer neuen (leeren) Datenbank getestet. Da lief die Seite normal. Der Fehler muss also in der Datenbank stecken.

Meine Lösung

  • Ich habe eine alte Datensicherung eingespielt.
  • Dann update.php ausgeführt.
  • Dann aus der neuen Datensicherung (die den obigen Fehler ausgelöst hat) nur die Tabellen field*, node* und taxonomy* zurückgesichert (mysqldumper ist dein Freund)
  • Jetzt kommt der Fehler nicht mehr.
Tags: 

Drupal7 - "Read more" bzw. "Weiterlesen" ausschalten

Ausschalten kann man die Anzeige des Schalters Weiterllesen in Drupal7 nicht so richtig.

Aber wenn man komplett auf den Schalter verzichten kann, dann kann er in der style.css Datei des verwendeten Templates unsichtbar gemacht werden.

/* wnf Weiterlesen bzw, Read more nicht mehr anzeigen  */
#main #content .node-readmore {
  display:none;
}
Tags: 

Ubuntu Apache2: Subdomains

Da ich meine verschiedenen Drupal-Seiten über eine Installation in einem gemeinsamen Webspace benutzen möchte, macht es sich zum Testen erforderlich auf meinem Rechner unter localhost Subdomains einzurichten.

Literatur:

/etc/hosts erweitern um:

127.0.1.1       d6niederfrohna.localhost
127.0.1.1       d6kita.localhost
127.0.1.1       d6heimatfest.localhost
127.0.1.1       d6k7311.localhost
127.0.1.1       d6schule.localhost

Erstellen einer Datei für Apache2: /etc/apache2/sites-available/d6ni­ederfrohna

<VirtualHost *:80>
    DocumentRoot /var/www/archiv/drupal6_niederfrohna_de/
    ServerName d6niederfrohna.localhost
    <Directory /var/www/archiv/drupal6_niederfrohna_de/>
        Options Indexes FollowSymLinks MultiViews +Includes
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

Die Subdomain dem Apache2 bekanntmachen und Apache2 neu starten

$ sudo a2ensite d6niederfrohna
Enabling site d6niederfrohna.
To activate the new configuration, you need to run:
  service apache2 reload
$ sudo service apache2 reload

Die oberen beiden Schritte für alle subdomains ausführen.

Kontrollieren, wie Apache2 die Subdomains auflöst:

$ apache2ctl -S
/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost d6heimatfest.localhost (/etc/apache2/sites-enabled/d6heimatfest:1)
         port 80 namevhost d6k7311.localhost (/etc/apache2/sites-enabled/d6k7311:1)
         port 80 namevhost d6kita.localhost (/etc/apache2/sites-enabled/d6kita:1)
         port 80 namevhost d6niederfrohna.localhost (/etc/apache2/sites-enabled/d6niederfrohna:1)
         port 80 namevhost d6schule.localhost (/etc/apache2/sites-enabled/d6schule:1)
Syntax OK

Aufruf im Browser mit

Drupal 6 Seiten

Drupal 7 Seiten

Drupal7: Logo in der Schnellwahl Opera darstellen

Diese Zeile:

<link rel="icon" type="image/png" href="<?php print base_path() . drupal_get_path('theme', 'responsive_blog') . '/logo_niederfrohna.png'; ?>" />

in die Datei /sites/all/the­mes/responsive_blog/tem­plates/html.tpl­.php einfügen

<!DOCTYPE html>
<html lang="<?php print $language->language; ?>" dir="<?php print $language->dir; ?>"<?php print $rdf_namespaces; ?>>
<head>
<?php print $head; ?>
<title><?php print $head_title; ?></title>
<?php print $styles; ?>
<?php print $scripts; ?>
<!--[if lt IE 9]><script src="<?php print base_path() . drupal_get_path('theme', 'responsive_blog') . '/js/html5.js'; ?>"></script><![endif]-->
<link rel="icon" type="image/png" href="<?php print base_path() . drupal_get_path('theme', 'responsive_blog') . '/logo_niederfrohna.png'; ?>" />

</head>
<body class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php print $page_top; ?>
  <?php print $page; ?>
  <?php print $page_bottom; ?>
</body>
</html>

Drupal7: Eigene Startseite aus SQL-Anweisungen generieren

Für die Startseite verwende ich ein PHP-Skript, welches ich jetzt auch für Drupal 7 angepasst habe.

So sieht das Ergebnis aus

Das Skript soll folgendes bewirken:

  • Anzeige eines Anfangstextes (ohne Bild, da das Bild ja schon in der Slideshow ist) Dieser Text steht im Node 1
  • Falls Artikel von heute da sind, diese Anzeigen
  • Falls zukünftige Artikel (28-Tage voraus) diese Anzeigen
  • Die Vergangenheit anzeigen.

Vorgehensweise:

  • neuen Inhaltstyp anlegen für Node 1

    Struktur – Inhaltstypen – Neu : wnfStartseite

  • bei diesem Inhaltstyp

    Anzeigeeinste­llungen

    „Autor- und Datumsinformationen anzeigen“ ausschalten

    Der Benutzername des Autors und das Veröffentlichun­gsdatum sollen

    nicht angezeigt werden.

  • Über PHPAdmin in der Tabelle node das Feld typ für node 1

    auf wnfstartseite setzen

  • Module – PHP-Filter aktivieren
  • Neue Seite anlegen:

    Den Inhalt der beiliegenden Datei in den Body kopieren

  • Text-Format „PHP-Code“ einstellen
  • Speichern
  • Konfiguration – System – Websiteinforma­tionen

    Standardstartseite auf die eben angelegte Seite stellen

<?php

function anzeige_ohne_caption($sql){
  $result = db_query_range($sql,0,10);
  foreach ($result as $record) {
    $node=node_load($record->nid);
    $node->title = '';
    $anzeige = node_view($node, 'full');
    $rendered = render($anzeige);
    print $rendered;
  }
}

function anzeige($sql,$caption=''){
  $result = db_query_range($sql,0,10);
  if (($result->rowCount()>0) and ($caption<>'')) {
    echo '<hr />';
    echo '<h2>'.$caption.'</h2>';
    }
  foreach ($result as $record) {
    //$rendered_teaser = render(node_view(node_load($record->nid), 'teaser'));
    $rendered_teaser = render(node_view(node_load($record->nid), 'full'));
    print $rendered_teaser;
  }
}

// Das Intro anzeigen
$sql = "SELECT * FROM {node} WHERE nid=1 ORDER BY created ASC";
anzeige_ohne_caption($sql);

// Die heutigen Termine anzeigen
$sql = "SELECT * FROM {node} WHERE type = 'article' AND status = 1 AND nid<>1  AND promote=1 AND (DATE(FROM_UNIXTIME(created))=CURDATE() OR sticky=1) ORDER BY created ASC";
anzeige($sql,'Heute in Niederfrohna');

//Zukunft anzeigen 28 Tage
$sql = "SELECT * FROM {node} WHERE type = 'article' AND status = 1 AND nid<>1  AND promote=1 AND DATE(FROM_UNIXTIME(created))>CURDATE() AND  FROM_UNIXTIME(created)<DATE_ADD(CURDATE(),INTERVAL 28 DAY)
ORDER BY created ASC";
anzeige($sql,'Die nächsten Tage in Niederfrohna');

//Vergangenheit anzeigen
$sql = "SELECT * FROM {node} WHERE type = 'article' AND status = 1 AND nid<>1  AND promote=1  AND DATE(FROM_UNIXTIME(created))<CURDATE() AND sticky<>1 ORDER BY created DESC";
anzeige($sql,'Das war los in Niederfrohna');

?>
Tags: 

Drupal7 zeigt keine Bilder an [gelöst]

Lokal auf meinem Rechner habe ich eine Drupal7 Homepage erstellt und getestet. Jetzt habe ich diese Seite zu meinem Hoster (kontent.com) hochgeladen und muss feststellen, dass die Seite zwar funktioniert die Bilder jedoch nicht mit angezeigt werden.

Eingetragen habe ich im Artikel:

![wnfkameradownloadgphoto_107](sites/default/files/bilder/wnfkameradownloadgphoto_107.png)  

Wenn ich im Quelltext nachschaue liefert Markdown das Bild so aus:

<p><img src="sites/default/files/bilder/wnfkameradownloadgphoto_107.png" alt="wnfkameradownloadgphoto_107" /></p>

Der lokale Rechner liefert mir als Bildadresse:

http://192.168.1.12/test/drupal_7_wlsoft_de/sites/default/files/bilder/wnfkameradownloadgphoto_107.png

Bei meinem Hoster wird ausgegeben:

http://drupal7.wlsoft.de/sites/default/files/bilder/wnfkameradownloadgphoto_107.png

alles scheint richtig zu sein, trotzdem wird das Bild nicht angezeigt.

Lösung:

Diese Datei sites/default/files/.htaccess verhindert den Zugriff auf die Bilder, weshalb ich die Optionen auskommentiert habe

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
#wnf
#Options None
#Options +FollowSymLinks
Tags: