Posted by misc on March 4, 2009 at 9:41am
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?
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
Ett antal block, men inte alla.
/* Mikke Schirén, https://digitalist/ */
Hej Mikke!
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!
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
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.phpIntressant
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
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,
Inte snyggaste lösningen, men kan man inte göra så här?
Skapa en ny fil som heter typ
block-block-11.tpl.phpoch sedan köra nåt i de stilen:<?phpinclude( path_to_theme() . 'block-block-9.tpl.php' );
?>
Eller så kan man ju lägga
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()
Den typen av logik kör man kanske bäst i en template_preprocess_block().
/ Hannes Lilljequist – SthlmConnection