Template till flera block i en template

Events happening in the community are now at Drupal community events on www.drupal.org.
misc's picture

Jag har ett antal block som jag har gjort lite olika templates till, men flera stycken har samma template, och då känns det ganska onödigt att ha flera templates med samma innehåll. Finns det något enkelt sätt att göra detta på?

Hur jag gör nu är alltså att skapa en template i mappen för mitt tema, 'block-block-9.tpl.php', där det står nio skulle jag alltså istället vilja ange flera nummer.

Comments

Men inte alla?

bilbyggaren's picture

Menar du att du vill ha samma template för ett antal av dina block men inte alla block som används på webbplatsen?

Precis

misc's picture

Ett antal block, men inte alla.

/* Mikke Schirén, https://digitalist/ */

Hej Mikke!

zoo33's picture

Hej Mikke!
Nä, det går inte, men man kan däremot använda samma mall för alla block i en viss region eller alla som skapats av en och samma modul. Här är de möjliga kombinationerna:

block-[module]-[delta].tpl.php
block-[module].tpl.php
block-[region].tpl.php
block.tpl.php

Theming blocks individually, by region, or by module

Du skulle också kunna göra nåt med template_preprocess_block() för att anpassa mallvariablerna utifrån olika kriterier och på så sätt "gruppera" utseendet på ett antal block.

Enklast är ju om man kan klara sig med css. Alla block har rätt användbara klasser, så ofta räcker det långt...

/ Hannes Lilljequist – SthlmConnection

Hej Hannes!

misc's picture

Hej Hannes!

Jo, de varianterna hade jag koll på, och jag behöver gå lite längre än css-manipulation.
Äsch, jag få ge mig, det är ju bara några filer med samma innehåll som det gäller ändå.

/* Mikke Schirén, https://digitalist/ */

Har inte testat men jag

frjo's picture

Har inte testat men jag gissar att det fungerar med symbolic soft links (ln -s).

Dvs. man gör en sym link i stil med:

ln -s block-block-9.tpl.php block-block-[annat nummer].tpl.php

Intressant

misc's picture

Det ska jag testa när jag kan (Putty som jag använder just nu krashar när jag går in på mitt webbhotell)

/* Mikke Schirén, https://digitalist/ */

Om du mest vill ha samma

jooel's picture

Om du mest vill ha samma innehåll i alla filer men inte vill behöva ändra i samtliga filer när något ska ändras, så är ju en praktisk rövare att köra en php include i dom filer det gäller, riktad mot en godtycklig fil du skapar själv.

(Parantetiskt: Det brukar jag förresten dessutom göra så fort det är något text-fält i drupal där jag ska använda php-kod, eftersom det är smidigare att editera och köra trial and error om man använder en vanlig text-editor än i ett drupal-formulär)

t.ex (D6)

$gemensam_template = $theme_path . "/min_egna_fil.php";
include $gemensam_template;

Med reservation för amatörmässig kod.

Inte snyggaste lösningen,

Tarnaurion's picture

Inte snyggaste lösningen, men kan man inte göra så här?

Skapa en ny fil som heter typ block-block-11.tpl.php och sedan köra nåt i de stilen:

<?php
include( path_to_theme() . 'block-block-9.tpl.php' );
?>

Eller så kan man ju lägga

Tarnaurion's picture

Eller så kan man ju lägga in en if-sats som kollar block-ID:n ($bid) från array med värden. Då har man allt i en fil.

<?php
  $special_theming
= array(9,11,15,19);
?>

<?php if ( in_array($bid,$special_theming) ): ?>
  ... special theme ...
<?php else: ?>
  ... normal theme ...
<?php endif; ?>

Jag är lite ovan vid att göra teman, har bara gjort justeringar i andras teman.

template_preprocess_block()

zoo33's picture

Den typen av logik kör man kanske bäst i en template_preprocess_block().

/ Hannes Lilljequist – SthlmConnection

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: