Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Theme klonen in D7

Eingetragen von mv_alex (54)
am 28.04.2011 - 12:52 Uhr in
  • Themes & Theming
  • Drupal 7.x

Hallo zusammen,

in einer D7-Installation habe ich versucht, eine Kopie des Themes "busy" anzulegen, um testweise ein wenig daran zu verändern.

Nach Hagen Grafs Buch für D6 müsste das relativ einfach gehen - Ordner duplizieren und die theme.info anpassen. In meiner D7-Website wird das geklonte Theme aber leider nicht gefunden/erkannt.

Was muss ich bei diesem Vorgehen unter D7 besonders beachten?

Danke für jeden Tipp!

Gruß Alex

‹ [gelöst] Theme Titan: "weiße" Seiten, bei versch. Dingen Autocomplete AJAX-Status abfragen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

wie in D6

Eingetragen von Nicolai Schwarz (1071)
am 28.04.2011 - 23:05 Uhr

Das sollte so laufen wie in D6. Haben bei dir Ordner und Datei denselben Namen? Etwa "/busycopy" für den Ordner und busycopy.info für die Datei.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Namenskonventionen

Eingetragen von mv_alex (54)
am 29.04.2011 - 06:35 Uhr

Ja, haben sie.

Was mir aber gerade einfällt: Dürfen die Namen vielleicht keinen Bindestrich enthalten?

  • Anmelden oder Registrieren um Kommentare zu schreiben

_ statt -

Eingetragen von Nicolai Schwarz (1071)
am 29.04.2011 - 15:24 Uhr

Dann wird es daran liegen, siehe http://drupal.org/node/171205

Zitat:

The name should start with an alphabetic character, can contain numbers and underscores, but not hyphens, spaces or punctuation.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Fehlermeldungen

Eingetragen von mv_alex (54)
am 29.04.2011 - 16:50 Uhr

Danke für den Hinweis!! Ohne Bindestrich im Namen werden die Duplikate nun erkannt.

Zwei andere Fehlermeldungen sind mir nun aufgefallen;

1.

Zitat:

Fehler beim Prüfen von Daten über verfügbare Aktualisierungen für 2 Projekte.

Denke, das kommt hierher:

; Information added by drupal.org packaging script on January 1, 1970 - 00:00
version = "7.x-1.4"
core = "7.x"
project = "busyclone"
datestamp = "1296563828"

Schließlich gibt es ja kein Projekt "busyclone". Kann der Abschnitt aus der info-Datei entfernt werden?

2.

Zitat:

Notice: Undefined variable: site_name_and_slogan in include() (Zeile 10 von /www/htdocs/user/WEB/sites/all/themes/busyclone/templates/page.tpl.php).

Gleiches nochmal für Zeile 12.

Dies passiert scheinbar, wenn ich Sonderzeichen wie "!" oder "&" in "Name der Website" oder "Slogan" verwende. Darf man das grundsätzlich nicht oder ist das Problem themespezifisch?

Danke&Gruß
Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Link lesen

Eingetragen von Nicolai Schwarz (1071)
am 29.04.2011 - 17:20 Uhr

In meinem Link steht doch, was die minimalen Anforderungen sind: http://drupal.org/node/171205
In der .info muss nicht viel drin stehen

Und wg. 2: Du kannst mal versuchen, die Datei als "UTF8 ohne BOM" zu speichern, vielleicht reicht das schon. Hab es nicht ausprobiert.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hab ich ;)

Eingetragen von mv_alex (54)
am 29.04.2011 - 17:34 Uhr

In den Beispieldateien unter dem Link (z.B. angepasstes Garland) stehen genau diese Einträge noch drin ("project = drupal"). Daher frag ich lieber noch mal, bevor ich blind lösche. ;)

Ad 2.: Welche Datei genau meinst Du? Das Theme hab ich direkt über die Drupal-Oberfläche installiert, also nicht mit einem Editor bearbeitet etc. Und die Sonderzeichen kommen ursprünglich aus Verwaltung » Konfiguration » System - "Website-Informationen".

Gruß Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Editor

Eingetragen von Nicolai Schwarz (1071)
am 29.04.2011 - 18:20 Uhr

Ich meine die .info. Die Datei bearbeitest du doch mit einem Editor, oder? In dem meisten kann man die Datei dann im Format "UTF8 ohne BOM" abspeichern. Das erhält Sonderzeichen, ich weiß nur nicht mehr, ob Drupal die Datei dann noch verarbeitet, ich glaube aber, dass das so war.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Online-Editor

Eingetragen von mv_alex (54)
am 29.04.2011 - 19:09 Uhr

Ach Sorry, da stand ich jetzt auf dem Schlauch.

Ich bearbeite die Dateien nicht lokal sondern via WebFTP mit integriertem ACE Editor. Und der scheint tatsächlich beim Öffnen alle Dateien stets ins ISO-Format umzuwandeln, was ganz schön unpraktisch ist.

Nach Ändern auf UTF-8 seh ich im Augenblick keine Fehlermeldungen mehr. Werde das mal im Auge behalten.

Herzlichen Dank für Deine Hilfe!

Gruß Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Fehlermeldungen

Eingetragen von mv_alex (54)
am 30.04.2011 - 18:29 Uhr

Leider zu früh gefreut! :(

Die Fehlermeldungen sind wieder da. Die Dateien sind aber inzwischen als UTF-8 abgespeichert.

Zitat:

* Notice: Undefined variable: site_name_and_slogan in include() (Zeile 10 von /www/htdocs/user/WEB/sites/all/themes/busyclone/templates/page.tpl.php).
* Notice: Undefined variable: site_name_and_slogan in include() (Zeile 12 von /www/htdocs/user/WEB/sites/all/themes/busyclone/templates/page.tpl.php).

Passiert jedes Mal, wenn ich im Seitentitel ein "!" verwende.

In der page.tpl.php steht an diesen Stellen

<a href="<?php print $front_page ?>" title="<?php print $site_name_and_slogan ?>">
(...)
<img src="<?php print $logo ?>" alt="<?php print $site_name_and_slogan ?>" id="logo" />

Also scheint es irgendwie mit dem Titel zusammenzuhängen. Ich hab schon versucht, das Ausrufezeichen als HTML-Entity einzugeben - leider taucht das dann an anderer Stelle auch so auf.

Seltsamerweise passiert das Ganze nicht beim Originaltheme.

Hat noch jemand eine Idee, wo der Fehler liegen könnte?

Danke&Gruß
Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sieh Dir mal die Funktion

Eingetragen von wla (9461)
am 30.04.2011 - 18:44 Uhr

Sieh Dir mal die Funktion preprocess_page in der template.php Datei an. Vielleicht geht ja da etwas in der Syntax kaputt, wenn die Variable gefüllt werden soll.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

wieder utf8

Eingetragen von Nicolai Schwarz (1071)
am 30.04.2011 - 18:47 Uhr

Dann versuch mal, die page.tpl.php ebenso als UTF8 zu speichern.
(Ich lege meine Template-Files immer automatisch als UTF8 an und hatte mit den Sonderzeichen noch keine Probleme.)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ratlos

Eingetragen von mv_alex (54)
am 30.04.2011 - 19:42 Uhr

Vielen Dank für Eure Antworten!

Nicolai Schwarz schrieb

Dann versuch mal, die page.tpl.php ebenso als UTF8 zu speichern.

Das hatte ich schon, hab es jetzt zur Sicherheit nochmals überprüft. Alle Dateien des Theme-Clones sind als UTF-8 gespeichert.

Die erwähnte Funktion sieht so aus:

/**
* Override or insert variables into the page template.
*/
function busy_preprocess_page(&$vars) {
  // Prepare header.
  $site_fields = array();
  if (!empty($vars['site_name'])) {
    $site_fields[] = check_plain($vars['site_name']);
  }
  if (!empty($vars['site_slogan'])) {
    $site_fields[] = check_plain($vars['site_slogan']);
  }
  $vars['site_title'] = implode(' ', $site_fields);
  if (!empty($site_fields)) {
    $site_fields[0] = '<span>' . $site_fields[0] . '</span>';
  }
  $vars['site_html'] = implode(' ', $site_fields);
 
  // Set a variable for the site name title and logo alt attributes text.
  $slogan_text = filter_xss_admin(variable_get('site_slogan', ''));
  $site_name_text = filter_xss_admin(variable_get('site_name', 'Drupal'));
  $vars['site_name_and_slogan'] = $site_name_text . ' ' . $slogan_text;
}

Genau wie im Original, an der Datei habe ich nichts geändert.

Seltsam ist außerdem der Effekt, dass beim ersten Aufruf der Seite (nach Bearbeiten der Dateien und Speichern als UTF-8) keine Fehlermeldung erscheint, aber nach einfachem Reload schon, und dann permanent.

Bin etwas ratlos!

Gruß Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bei genauerer Betrachtung

Eingetragen von mv_alex (54)
am 02.05.2011 - 12:49 Uhr

Bei genauerer Betrachtung tritt der Fehler beim ersten Betreten der Seite (hab ich mit unterschiedlichen Browsern getestet) nicht auf. Erst bei einem Reload erscheint dann die Meldung.

Würde es an der falschen Codierung liegen, müsste der Fehler doch jedesmal auftreten, oder?

Könnte der Fehler vielleicht irgendwo im Seitencache liegen?

Gruß Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Cache

Eingetragen von Nicolai Schwarz (1071)
am 02.05.2011 - 13:30 Uhr
Zitat:

Könnte der Fehler vielleicht irgendwo im Seitencache liegen?

Wer weiß, hast du mal den Cache komplett gelöscht?

Falls immer noch

Zitat:

Notice: Undefined variable: site_name_and_slogan in include() (Zeile 10 von /www/htdocs/user/WEB/sites/all/themes/busyclone/templates/page.tpl.php).

erscheint: Hast du dir mal die page.tpl.php angesehen? Vielleicht gibt es da schlicht diesen Fehler. Also einmal die Stelle suchen und auskommentieren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Den Cache hab ich mehrfach

Eingetragen von mv_alex (54)
am 02.05.2011 - 15:57 Uhr

Den Cache hab ich mehrfach gelöscht, das hilft nicht.

Den betroffenen Quelltext der page.tpl.php

<a href="<?php print $front_page ?>" title="<?php print $site_name_and_slogan ?>">
<?php if ($logo): ?>
<img src="<?php print $logo ?>" alt="<?php print $site_name_and_slogan ?>" id="logo" />
<?php endif; ?>

hab ich mal testweise rausgenommen.

Ergebnis: Keine Fehlermeldungen, aber auch kein Logo und kein Seitentitel mehr.

Gruß Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Existenz

Eingetragen von Nicolai Schwarz (1071)
am 02.05.2011 - 16:59 Uhr

Als du das Theme kopierst hast, hast du die template.php mitkopiert? Vermutlich wird dort die Variable erzeugt, auf die die page.tpl.php zugreifen will.

Ersetze die Stelle doch mal durch:

<a href="<?php print $front_page ?>" title="<?php print $site_name ?>">
<?php if ($logo): ?>
<img src="<?php print $logo ?>" alt="<?php print $site_name ?>" id="logo" />
<?php endif; ?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Code-Injections

Eingetragen von mv_alex (54)
am 03.05.2011 - 14:00 Uhr
Nicolai Schwarz schrieb

Als du das Theme kopierst hast, hast du die template.php mitkopiert? Vermutlich wird dort die Variable erzeugt, auf die die page.tpl.php zugreifen will.

Ja, hab ich auch kopiert. Ist auch UTF-8 ;)

Mit Deinem Snippet erscheint die Fehlermeldung nicht mehr!

Wenn die Datei so eine Art Preprocessor ist, könnte der Fehler ja hierher kommen:

#
function busy_preprocess_page(&$vars) {
// Prepare header.
$site_fields = array();
if (!empty($vars['site_name'])) {
$site_fields[] = check_plain($vars['site_name']);
}
if (!empty($vars['site_slogan'])) {
$site_fields[] = check_plain($vars['site_slogan']);
}
$vars['site_title'] = implode(' ', $site_fields);
if (!empty($site_fields)) {
$site_fields[0] = '<span>' . $site_fields[0] . '</span>';
}
$vars['site_html'] = implode(' ', $site_fields);
// Set a variable for the site name title and logo alt attributes text.
$slogan_text = filter_xss_admin(variable_get('site_slogan', ''));
$site_name_text = filter_xss_admin(variable_get('site_name', 'Drupal'));
$vars['site_name_and_slogan'] = $site_name_text . ' ' . $slogan_text;
}

Ich bin jetzt nicht _der_ PHP-Spezialist, aber hier scheint mir auch eine Sperre gegen Code-Injections zu greifen.

Könnte man die an dieser Stelle gefahrlos "übergehen" oder muss ich dann an anderer Stelle Probleme befürchten?

Gruß Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Variable

Eingetragen von stBorchert (6003)
am 03.05.2011 - 14:23 Uhr

Hallo.
Du musst die Funktionen in der template.php auch noch umbenennen. Aktuell steht dort noch "function busy_preprocess_page(&$vars) { ... }", das muss bei Dir dann jedoch "busyclone_preprocess_page" heissen.
Auch bei den anderen Funktionen musst Du "busy" durch "busyclone" ersetzen.

Ansonsten wird die Funktion in Deinem Theme nicht aufgerufen und somit auch die Variable nicht erstellt. Das resultiert dann in dem von Dir beschriebenen Fehler.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dein Theme heißt doch

Eingetragen von wla (9461)
am 03.05.2011 - 14:29 Uhr

Dein Theme heißt doch busyclone!! Also muß die Funktion auch busyclone_preprocess_page heißen. Die wird deshalb auch gar nicht angesprungen und daher die Variable nicht gesetzt. Beim Kopieren der template.php müssen die Funktionsnamen an den Namen des neuen Themes angepaßt werden.

Beste Grüße
Werner

P.S. Da war der Stefan schneller :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Holzauge sei wachsam

Eingetragen von mv_alex (54)
am 03.05.2011 - 16:12 Uhr

Vielen Dank für diesen Hinweis! Da wäre ich wohl nie drauf gekommen.

Allerdings bringt es leider nicht die Lösung. Ich habe alle Funktionsnamen in der template.php an "busyclone" angepasst. Aber die Fehlermeldungen bestehen unverändert fort. Und wenn die Variable leer bliebe, dürfte doch auch kein Seitentitel erscheinen, oder?

Eine andere Idee: Ich habe auch eine Theme-bezogene Fehlermeldung beim Einsatz des Moduls Domain Access. Könnte hier vielleicht ein Zusammenhang bestehen?

Gruß Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Cache

Eingetragen von stBorchert (6003)
am 04.05.2011 - 07:59 Uhr

Hast Du den Theme-Cache geleert?

Mach doch mal in der Funktion busyclone_preprocess_page eine Debug-Ausgabe per [api:drupal_set_message]. Dann siehst Du, ob die Funktion ausgeführt wird.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Domain & Cache

Eingetragen von mv_alex (54)
am 04.05.2011 - 19:57 Uhr

Ad 2: Scheinbar reicht mein PHP-Verständnis hier nicht - ich seh nur Parse-Errors. ;)

Ad 1: Offenbar nicht! Zwar hatte ich über Verwaltung » Konfiguration » Entwicklung mehrfach den Cache gelöscht (und dachte, das schließt das Theme mit ein); aber nachdem ich ihn jetzt mal vollständig deaktiviert hab, sind die Fehler erst mal verschwunden. Und plötzlich seh ich auch zwei verschiedene Themes, je nach gewählter Domain.

Es gibt nämlich zwei Domains, je einer soll ein eigener Busyclone zugeordnet werden. Grundsätzlich klappt das, denn ich sehe unterschiedliche header_bg_building.jpg. Aber obwohl ein Theme auf s/w und das andere auf grün eingestellt ist, erscheinen beide in s/w.

Irgendwas hakt da also noch.

Gruß Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nachtrag

Eingetragen von mv_alex (54)
am 05.05.2011 - 12:41 Uhr

Ich vermute, dass dies mit den Batch-Aktualisierungen des Moduls Domain Access zusammenhängt. Nachdem dort wieder die bekannte Fehlermeldung erschien, klappte das auch mit dem Themes nicht mehr.

Als ich diese dann wieder händisch zugewiesen hatte (nach Einloggen von der jeweils betroffenen Domain aus, das scheint entscheidend zu sein!), wurden sie wieder richtig dargestellt. Also lass ich da jetzt die Finger von und hoffe, dass die Probleme nicht wieder auftauchen. ;)

Daher jetzt eine ganz andere Frage: Mit dem originalen Busy-Theme scheinen sich ja sehr unterschiedliche Darstellungen erreichen zu lassen, wenn ich mir die Screenshots z.B. zur D8-Core-Integration so anschaue. Besonders interessant finde ich die Anpassung des Headers in Höhe und Spaltenanzahl.

Kann man diese Anpassungen innerhalb von Drupal realisieren, z.B. mit Panels, oder muss man direkt an die Templates und Stylesheets gehen?

Danke & Gruß
Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Tag 22 Stunden
  • Hey danke
    vor 2 Tagen 16 Stunden
  • Update: jetzt gibt's ein
    vor 3 Tagen 11 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 20 Stunden
  • Da scheint die Terminologie
    vor 1 Woche 23 Stunden
  • Kannst doch auch alles direkt
    vor 1 Woche 5 Tagen
  • In der entsprechenden View
    vor 1 Woche 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 5 Tagen
  • gelöst
    vor 4 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 15 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association