2010-12-02 7 views
3

Wie kann ich eine benutzerdefinierte page.tpl.php für eine bestimmte Ansicht erstellen?benutzerdefinierte page.tpl.php für eine drupal view

Ich spreche nicht über die Gestaltung der Ansicht selbst, nur die Seite, auf der diese Ansicht gerendert wird.

Vielen Dank.

@Keith Morgan - Es ist Seite.

+1

Der Ansatz hängt von der Art der Sichtanzeige mit dem Sie arbeiten. Ist es zum Beispiel Seite oder Block? – keithm

Antwort

5

Sie können eine Vorlagendatei erstellen, um fast jeden Aspekt der Sichtenausgabe zu thematisieren. In Ihrem Fall möchten Sie eine benutzerdefinierte Vorlage für Ihre Seitenanzeige erstellen.

Klicken Sie im Ansichtsdesigner in den Grundeinstellungen auf den Link Design. Je nachdem, ob Sie die gesamte Ansicht (z. B. views-view - Beispiel - page.tpl.php), jede Zeile (z. B. views-view-fields - Beispiel) gestalten möchten, sehen Sie einige Vorlagen-Namensoptionen --page.tpl.php) und so weiter.

Kopieren Sie die entsprechende Vorlage, die Sie anpassen möchten, von/sites/all/modules/views/theme zu Ihrem Thema und passen Sie sie Ihren Wünschen an.

Sobald Sie Ihre benutzerdefinierte Vorlagendatei erstellt haben, können Sie zum View Designer-Designlink zurückkehren, um sicherzustellen, dass sie verwendet wird. Ihre Vorlage sollte fett sein.

Hoffe, das hilft.

+11

fragt das OP nicht nach dem Thema der Seite, wenn eine Ansicht aktiv ist und nicht die Ansicht selbst? Wenn Sie eine Ansicht mit einer Seitenanzeige haben, wird die oberste Vorlage immer noch aus views-view.tpl.php abgeleitet, die keine Seitenelemente enthält. Dies wird immer noch in die aktive Seitenvorlage eingefügt. – mpdonadio

1

Wenn Sie eine Ansicht als Seite betrachten, können Sie die Ergebnisse von page_manager_get_current_page() in Ihrem Vorprozess verwenden, um festzustellen, ob Ihre Ansicht aktiv ist. Führen Sie dann die entsprechenden Schritte aus (Wenden Sie Körperklassen an, fügen Sie einen Vorlagenvorschlag hinzu).

1

mit sillygwailo Vorschlag bekam ich diese sehr gut für mich zu arbeiten:

function YOUR-THEME-NAME_preprocess_page(&$vars) { 

//allow template suggestions based on url paths. 
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q'])); 
if ($alias != $_GET['q']) { $suggestions = array(); 
$template_filename = 'page'; 
foreach (explode('/', $alias) as $path_part) { 
$template_filename = $template_filename . '-' . $path_part; 
$suggestions[] = $template_filename; 
} 
$alias_array = explode('/', $alias); 
$variables['template_files'] = $suggestions; 

Dann, wenn Ihr Blick auf www.example.com/photos ist, einen Seite-photos.tpl.php in Ihrem Thema erstellen Verzeichnis und Drupal verwenden das als Vorlage.

2

Hatte ein ähnliches Problem, das behoben wurde, indem ich eine .tpl.php in den Template-Ordner meines Designs legte. Die Namenskonvention für eine Seitenanzeige von Ansichten in Drupal 7 Seite - Pfad zu view.tpl.php

2

In einem Drupal 7 Thema, das ich eine Vorlage Vorschlag in template.php hinzugefügt:

function sovon_preprocess_page(&$variables) { 
if(views_get_page_view()) { 
    $variables['theme_hook_suggestions'][] = 'page__view';  
} 
} 

Weitere Informationen finden Sie unter http://api.drupalize.me/api/drupal/function/views_get_page_view/7 und http://drupal.org/node/223440#custom-suggestions.

+1

Ich mochte die Einfachheit Ihrer Antwort, aber ich dachte, ich würde darauf aufbauen. Ich merke auch, dass es über zwei Jahre alt ist, aber das könnte helfen. Also, was ich getan habe, war das Innere der Funktion zu ändern, um dies zu sein: if ($ view = Ansichten_get_page_view()) { $ Variablen ['theme_hook_suggestions'] [] = 'Seite - Ansicht -'. $ Anzeigen -> Name; } Mit diesem Befehl wird der Name der Ansicht abgerufen und nach Vorlagendateien mit dem Präfix "page - view-" und dem Namen Ihrer Ansicht gesucht. Auf diese Weise können Sie dies erweitern, ohne eine if-Anweisung für jede Ansicht zu schreiben. – Kirkland

7

Per Allartk Lösung
In Drupal 7 template.php:

function <theme>_preprocess_page(&$variables) { 
    if (($views_page = views_get_page_view()) && $views_page->name === "galleries") { 
     $variables['theme_hook_suggestions'][] = 'page__views__galleries'; 
    } 
} 

Dann in Ihrem Themenverzeichnis, erstellen Sie die Seite - Ansichten - galleries.tpl.php Datei. Clear drupal Cache und Vorlage sollte funktionieren. Ich habe 'Galerien' als Beispielnamen verwendet.

+4

Dies ist nicht notwendig, verwenden Sie einfach 'drupal 7 ist Seite - path-to-view.tpl.php' – Duncanmoo

+1

@Duncanmoo - der Vorteil zu Amir Ansatz ist, dass Sie explizit sehen können, dass die Vorlage eine Ansicht enthält, wenn Namenskonvention betrifft Sie (genau wie wir haben Seite - node-mynode.tpl.php zum Beispiel). Ich kombiniere gerne ähnlich wie oben, indem ich den Maschinennamen der Ansicht verwende, so dass ich zum Beispiel, wenn meine Ansicht hier/there/myview existiert, page - view - myview.tpl.php anstelle der Standardseite haben kann --hier - da - myview.tpl.php – BrynJ

0

Wenn diese überprüfte Antwort nicht funktioniert (weil es nicht für mich war) können Sie eine Seite erstellen - (URL-Name) .tpl.php und dann style dein Thema, wie Sie es wollen. Dann können Sie die Ansicht in eine von mehreren Möglichkeiten importieren ...

 print render($page['content']); 

oder

$ view = views_get_view ('Viewname'); print $ view-> execute_display ('default', $ args);

args $ ist nur ein Array und kann blank..you es einfach wegzulassen

vollständig sein kann
Verwandte Themen