Display Suite custom Layout (footer outside of the wrapper div)

am 29.03.2014 - 20:45 Uhr in
Hallo zusammen
Ich versuche gerade ein eigenes Layout für Display Suite zu generieren das zwingt aber meine Installation jedes mal in die Knie.
Vorne weg ich bin kein php master ... verstehe gerade mal so viel wie man mit HTML/CSS Kenntnissen aus dem Code herauserkennen kann und ansatzweise interpretieren.
Ich hab mir das "ds_2col_stacked_fluid" aus dem "ds" Ordner raus kopiert und den footer nach ausserhalb des " layout_wrapper-div's" verschoben, bin nicht sicher ob drupal das nicht mag oder ob das Problem bei der .inc Datei liegt?
Kan mir da jemand weiter helfen?
Bei der ganzen Aktion gehts darum das ich im footer meines teasers, social-media links platziert habe und da das ganze div als link zum Inhalt funktioniert gibts da ein Problem, und zwar wen immer jemand ein "share-bottom" druckt dan wird er auch gleichzeitig zum Inhalt weitergeleitet (onclick -> node) daher wäre das super wen ich den footer ausserhalb platzieren könnte.
Sollte es ev. eine noch bessere Lösung geben wäre ich natürlich auch Glücklich!
Dies ist das tpl.php (original) ich hab dan die 4 footer Zeilen auserhalb des layout_wrapper divs platziert und die .inc datei zusammen geschnippselt ...
<?php
/**
* @file
* Display Suite fluid 2 column stacked template.
*/
// Add sidebar classes so that we can apply the correct width in css.
if (($left && !$right) || ($right && !$left)) {
$classes .= ' group-one-column';
}
?>
<<?php print $layout_wrapper; print $layout_attributes; ?> class="ds-2col-stacked-fluid <?php print $classes;?> clearfix">
<?php if (isset($title_suffix['contextual_links'])): ?>
<?php print render($title_suffix['contextual_links']); ?>
<?php endif; ?>
<<?php print $header_wrapper ?> class="group-header<?php print $header_classes; ?>">
<?php print $header; ?>
</<?php print $header_wrapper ?>>
<?php if ($left): ?>
<<?php print $left_wrapper ?> class="group-left<?php print $left_classes; ?>">
<?php print $left; ?>
</<?php print $left_wrapper ?>>
<?php endif; ?>
<?php if ($right): ?>
<<?php print $right_wrapper ?> class="group-right<?php print $right_classes; ?>">
<?php print $right; ?>
</<?php print $right_wrapper ?>>
<?php endif; ?>
<<?php print $footer_wrapper ?> class="group-footer<?php print $footer_classes; ?>">
<?php print $footer; ?>
</<?php print $footer_wrapper ?>>
</<?php print $layout_wrapper ?>>
<?php if (!empty($drupal_render_children)): ?>
<?php print $drupal_render_children ?>
<?php endif; ?>
.inc Datei
<?php
<?php
function ds_2col_stacked_fluid_ex_footer() {
return array(
'label' => t('2col stacked fluid ex footer'),
'regions' => array(
'header' => t('header'),
'left' => t('Left'),
'right' => t('Right'),
'footer' => t('footer'),
),
// Add this line if there is a default css file.
'css' => TRUE,
// Add this line if you're using DS 2.x for icon preview
'image' => TRUE,
);
}
?>
- Anmelden oder Registrieren um Kommentare zu schreiben
Niemand keine Idee?
am 02.04.2014 - 07:46 Uhr
Niemand keine Idee?
Die Änderungen im .inc File
am 02.04.2014 - 08:55 Uhr
Die Änderungen im .inc File sind nicht notwendig. Was ich hier sehe werden lediglich die Regionen und andere Parameter definiert. Deine Änderungen im tpl.php file sollten ausreichend sein. Überschreibst du das File oder verwendest du eine Kopie in dem templates Verzeichnis deines Themes?
Vielen Dank fur die
am 02.04.2014 - 09:57 Uhr
--
Vielen Dank fur die
am 02.04.2014 - 09:56 Uhr
Vielen Dank fur die Aufmerksamkeit
Ich habe das neue layout in ...meinTheme/ds _layouts, wie es in der doku beschrieben wird.
Das tpl.php da oben ist das original, die version die ich in meinem Verzeichniss habe ist manipuliert ... wie gesagt den footer div habe ich auserhalb des layout_wrappers plaziert.
Wen ich drupal dan starte bekomme ich einen error....
dan ist noch an zu merken das im original Layouts Verzeichniss des DS keine .inc fils vorhanden sind ich habe dieses veil von wo anders her kopiert und den header&footer bereich manuell eingefuegt, das war nur n'rechts/links layout, natuerlich auch noch die namen des layouts geandert usw.
Sorry habe gedacht du
am 02.04.2014 - 10:21 Uhr
Sorry habe gedacht du mainpulierst einfach die tpl.php im modul-Verzeichnis (solltest du eh nicht).
Welche Fehlermeldung kommt denn?
Im Prinzip ist das eh sehr simpel:
die tpl.php Datei geht in ein Verzeichnis "ds_layouts" in den root deines Themes-Ordners
und die .inc Datei auch - hier gibts Beispiele wie die .inc aussehen muß: https://drupal.org/node/1098068 - in der .inc definierts du nur deine Regionen.
Passt die Syntax der .tpl.php?
Das mit dem simpel hab ich
am 02.04.2014 - 10:41 Uhr
Das mit dem simpel hab ich mir anfangs auch gedacht ... und warscheinlich ist es das auch, muss wider mal irgendwo was kleines sein.
Mal vorne weg ... denkst du das wirklich moeglich ist einen teil des codes auserhalb des layout_wrapper div's zu platzieren? Ev. ligt genau da schon das problem das DS das nicht akzeptiert...?
Ansonsten hier mal den genauen code wie er im meinTheme/ds_layouts liegt...
<?php
/**
* @file
* Display Suite fluid 2 column stacked template.
*/
// Add sidebar classes so that we can apply the correct width in css.
if (($left && !$right) || ($right && !$left)) {
$classes .= ' group-one-column';
}
?>
<<?php print $layout_wrapper; print $layout_attributes; ?> class="ds-2col-stacked-fluid <?php print $classes;?> clearfix">
<?php if (isset($title_suffix['contextual_links'])): ?>
<?php print render($title_suffix['contextual_links']); ?>
<?php endif; ?>
<<?php print $header_wrapper ?> class="group-header<?php print $header_classes; ?>">
<?php print $header; ?>
</<?php print $header_wrapper ?>>
<?php if ($left): ?>
<<?php print $left_wrapper ?> class="group-left<?php print $left_classes; ?>">
<?php print $left; ?>
</<?php print $left_wrapper ?>>
<?php endif; ?>
<?php if ($right): ?>
<<?php print $right_wrapper ?> class="group-right<?php print $right_classes; ?>">
<?php print $right; ?>
</<?php print $right_wrapper ?>>
<?php endif; ?>
</<?php print $layout_wrapper ?>>
<<?php print $footer_wrapper ?> class="group-footer<?php print $footer_classes; ?>">
<?php print $footer; ?>
</<?php print $footer_wrapper ?>>
<?php if (!empty($drupal_render_children)): ?>
<?php print $drupal_render_children ?>
<?php endif; ?>
und...
<?php
function ds_2col_stacked_fluid_ex_footer() {
return array(
'label' => t('2col stacked fluid ex footer'),
'regions' => array(
'header' => t('header'),
'left' => t('Left'),
'right' => t('Right'),
'footer' => t('footer'),
),
// Add this line if there is a default css file.
'css' => TRUE,
// Add this line if you're using DS 2.x for icon preview
'image' => TRUE,
);
}
Fatal error: Call to undefined function ds_ds.ds_fields_info() in ...\meinTheme\sites\all\modules\ds\includes\ds.registry.inc on line 570
... noch angemerkt wen ich
am 02.04.2014 - 10:45 Uhr
... noch angemerkt wen ich die 4 zeilen wider in den layout_wrapper div rein kopiere habe ich immer noch das selbe problem also an dem sollte es erstmal nicht liegen ... der error kommt ja auch nicht aus meinem Theme directory sondern aus dem "modules\ds" ...
In der linie 570 der
am 02.04.2014 - 10:49 Uhr
In der linie 570 der ds.registry.inc ist folgender code:
$layouts[$values->name] = $function();
der ganze block (linie 565-573) ist...
function _ds_layouts_scan_theme($theme, &$layouts) {
$theme_layouts = file_scan_directory(drupal_get_path('theme', $theme) . '/ds_layouts', '/inc$/');
foreach ($theme_layouts as $file => $values) {
include_once(DRUPAL_ROOT . '/' . $file);
$function = 'ds_' . $values->name;
$layouts[$values->name] = $function();
$layouts[$values->name]['path'] = str_replace('/' . $values->filename, '', $file);
}
}
Hi ich habe das gerade mit
am 02.04.2014 - 11:20 Uhr
Hi ich habe das gerade mit deinen Codestücken getestet. Da gibts kein Problem.
Hast du die Dateien richtig benannt - die .inc - Datei muß mit Unterstrichen geschrieben sein. s.Screenshot
und in der .inc - Datei steht noch ein ds_ Prefix im Namen der Funktion.
Ich denke schon das ich die
am 02.04.2014 - 11:37 Uhr
Ich denke schon das ich die richtig benannt habe...
Ortner Name im meinTheme/ds_layouts Verzeichniss
"ds_2col_stacked_fluid_ex_footer"
Dateien im Ortner:
ds_2col_stacked_fluid_ex_footer.inc
ds-2col-stacked-fluid-ex-footer.css
ds-2col-stacked-fluid-ex-footer.png
ds-2col-stacked-fluid-ex-footer.tpl.php
Du hast echt den code von da
am 02.04.2014 - 11:40 Uhr
Du hast echt den code von da oben bei dir rein kopiert und das hatt funktioniert??? Dan bin ich platt!
Ok, versuche mal die ganzen
am 02.04.2014 - 11:42 Uhr
Ok, versuche mal die ganzen ds- (bzw. ds_) prefixes von den Datei- und Ordnernamen wegzunehmen.
Oder: setze noch ein zusätzliches "ds_" vor den Funktionsnamen.
Siehe hier: https://drupal.org/node/1098068: Die Files + Ordner werden ohne ds_ bzw. ds- angegeben, die funktion jedoch mit.
Globetrotter schrieb Du hast
am 02.04.2014 - 11:44 Uhr
Du hast echt den code von da oben bei dir rein kopiert und das hatt funktioniert??? Dan bin ich platt!
Ich habe nur
function ds_2col_stacked_fluid_ex_footer() {
umgeschrieben.
LG
Here we are! Super ... VIELEN
am 02.04.2014 - 12:14 Uhr
Here we are!
Super ... VIELEN DANK!
musste ja so einfach sein, sorry das ich deine Zeit in Anspruch genommen habe!
Funktioniert bestens ... dem ersten anschein nach ... hab zwar wider was neues zum kauen, haha, aber so ist das halt wen man lernt :)
Schoenen Tag noch....