Calendar - Wochentage in View ausblenden
Eingetragen von deelite (468)
am 09.02.2011 - 12:00 Uhr in
am 09.02.2011 - 12:00 Uhr in
Hallo,
kennt jemand eine Möglichkeit, in der Wochenansicht von Calendar Wochentage auszublenden (Sa, So)?
Vielen Dank schon mal fürs Lesen.
- Anmelden oder Registrieren um Kommentare zu schreiben
Template
am 10.02.2011 - 09:27 Uhr
Das Modul Calendar liefert eine Template-Datei für die Darstellung mit, für die Wochenansicht ist das die calendar-week.tpl.php. Diese in das eigene Theme-Verzeichnis kopieren und nach Wunsch anpassen.
Theoretisch müsste es reichen, folgenden Code zu entfernen:
<?php foreach ($day_names as $cell): ?>
<th class="<?php print $cell['class']; ?>">
<?php print $cell['data']; ?>
</th>
<?php endforeach; ?>
Gruß,
Boris
Spalten ausblenden
am 10.02.2011 - 09:36 Uhr
Sorry, ich habe deine Frage vielleicht falsch verstanden. Der obige Ansatz blendet die Zeile mit den Wochentagsnamen aus. Wenn Du ganze Tage weglassen willst, musst du anders vorgehen. Der Ansatz ist aber wieder die Template-Datei calendar-week.tpl.php.
An das Templates werden zwei Arrays übergeben:
* $day_names: An array of the day of week names for the table header.
* $rows: The rendered data for this week.
Diese einfach mal mit Devel anzeigen lassen, und mit unset() die nicht gewünschten Tage (Zeilen) entfernen.
Gruß,
Boris
Vielen Dank bb, allerdings
am 14.02.2011 - 11:52 Uhr
Vielen Dank bb,
allerdings komme ich in der Datei auf keinen Nenner.
Der Einfachheit halber poste ich die Datei hier mal:
<div class="calendar-calendar"><div class="week-view">
<table class="full">
<thead>
<tr>
<?php if($by_hour_count > 0 || !empty($start_times)) :?>
<th class="calendar-agenda-hour"><?php print t('Time')?></th>
<?php endif;?>
<?php foreach ($day_names as $cell): ?>
<th class="<?php print $cell['class']; ?>">
<?php print $cell['data']; ?>
</th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php for ($i = 0; $i < $multiday_rows; $i++): ?>
<?php
$colpos = 0;
$rowclass = "all-day";
if( $i == 0) {
$rowclass .= " first";
}
if( $i == $multiday_rows - 1) {
$rowclass .= " last";
}
?>
<tr class="<?php print $rowclass?>">
<?php if($i == 0 && ($by_hour_count > 0 || !empty($start_times))) :?>
<td class="<?php print $agenda_hour_class ?>" rowspan="<?php print $multiday_rows?>">
<span class="calendar-hour"><?php print date_t('All day', 'datetime')?></span>
</td>
<?php endif; ?>
<?php for($j = 0; $j < 6; $j++): ?>
<?php $cell = (empty($all_day[$j][$i])) ? NULL : $all_day[$j][$i]; ?>
<?php if($cell != NULL && $cell['filled'] && $cell['wday'] == $j): ?>
<?php for($k = $colpos; $k < $cell['wday']; $k++) : ?>
<td class="multi-day no-entry"><div class="inner"> </div></td>
<?php endfor;?>
<td colspan="<?php print $cell['colspan']?>" class="multi-day">
<div class="inner">
<?php print $cell['entry']?>
</div>
</td>
<?php $colpos = $cell['wday'] + $cell['colspan']; ?>
<?php endif; ?>
<?php endfor; ?>
<?php for($j = $colpos; $j < 7; $j++) : ?>
<td class="multi-day no-entry"><div class="inner"> </div></td>
<?php endfor;?>
</tr>
<?php endfor; ?>
<?php foreach ($items as $time): ?>
<tr class="not-all-day">
<td class="calendar-agenda-hour">
<span class="calendar-hour"><?php print $time['hour']; ?></span>
<span class="calendar-ampm"><?php print $time['ampm']; ?></span>
</td>
<?php $curpos = 0; ?>
<?php foreach ($columns as $index => $column): ?>
<?php $colpos = (isset($time['values'][$column][0])) ? $time['values'][$column][0]['wday'] : $index; ?>
<?php for ($i = $curpos; $i < $colpos; $i++): ?>
<td class="calendar-agenda-items single-day">
<div class="calendar">
<div class="inner"> </div>
</div>
</td>
<?php endfor; ?>
<?php $curpos = $colpos + 1;?>
<td class="calendar-agenda-items single-day">
<div class="calendar">
<div class="inner">
<?php if(!empty($time['values'][$column])) :?>
<?php foreach($time['values'][$column] as $item) :?>
<?php print $item['entry'] ?>
<?php endforeach; ?>
<?php endif; ?>
</div>
</div>
</td>
<?php endforeach; ?>
<?php for ($i = $curpos; $i < 7; $i++): ?>
<td class="calendar-agenda-items single-day">
<div class="calendar">
<div class="inner"> </div>
</div>
</td>
<?php endfor; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div></div>
Vielleicht sieht ja jemand eine Lösung oder kennt einen anderen Weg.
Wie bereits geschrieben: ich brauche den Samstag und den Sonntag nicht in der Wochenansicht.
Hast Du Dich denn jemals mit
am 14.02.2011 - 14:25 Uhr
Hast Du Dich denn jemals mit Programmieren beschäftigt? Kennst Du den Aufbau einer Tabelle in HTML? Dann solltest Du keine Probleme haben, diesen Code zu verstehen und zu verändern. Es geht schließlich lediglich um den Umbau der Schleifen.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Version?
am 14.02.2011 - 15:28 Uhr
Das scheint mir irgendwie eine ganz andere Datei zu sein. Benutzt du vielleicht Drupal 7? Bei mir ist die calendar-week.tpl.php wesentlich kürzer, sie erhält einen Array $day_names mit Zeilen für die Tagesnamen und $rows mit Zeilen für alle Tage, und wenn man z.B. das Wochenende (die letzten zwei Tage) entfernen will, reicht dazu z.B. ein je zweimaliges array_pop($day_names) und array_pop($rows) am Anfang der Datei.
Gruß,
Boris
Sorry, ich war mit einer
am 14.02.2011 - 16:24 Uhr
Sorry, ich war mit einer dev-Version unterwegs, aber D6. Die calendar-week.tpl.php der letzten stabilen Version sieht gänzlich anders aus:
<div class="calendar-calendar"><div class="week-view">
<table>
<thead>
<tr>
<th class="calendar-agenda-hour"><?php print $by_hour_count > 0 ? t('Time') : ''; ?></th>
<?php foreach ($day_names as $cell): ?>
<th class="<?php print $cell['class']; ?>">
<?php print $cell['data']; ?>
</th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<tr>
<td class="<?php print $agenda_hour_class ?>">
<span class="calendar-hour"><?php print $by_hour_count > 0 ? date_t('All day', 'datetime') : ''; ?></span>
</td>
<?php foreach ($rows as $day): ?>
<td class="calendar-agenda-items">
<?php print $day['datebox']; ?>
<div class="calendar">
<div class="inner">
<?php print array_key_exists('all_day', $day) && count($day['all_day']) ? implode($day['all_day']) : ' ';?>
</div>
</div>
</td>
<?php endforeach; ?>
</tr>
<?php foreach ($items as $time): ?>
<tr>
<td class="calendar-agenda-hour">
<span class="calendar-hour"><?php print $time['hour']; ?></span>
<span class="calendar-ampm"><?php print $time['ampm']; ?></span>
</td>
<?php foreach ($columns as $column): ?>
<td class="calendar-agenda-items">
<div class="calendar">
<div class="inner">
<?php print isset($time['values'][$column]) ? implode($time['values'][$column]) : ' '; ?>
</div>
</div>
</td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div></div>
Allerdings erschließt sich mir nicht, wie ich die von Dir erwähnten Änderungen da einarbeite ;-(
Vor diesem Code!
am 14.02.2011 - 17:06 Uhr
Also, die Template-Datei erhält als Parameter einen Array $day_names mit Namen von Tagen und einen Array $rows mit den jeweiligen Spalten(!) der Tage. In diesen Arrays hat jeder Tag eine Zeile. Du musst also einfach die jeweils zwei letzten Zeilen entfernen. Dazu einfach vor deinem Code Folgendes einfügen:
<?php
array_pop($day_names); // Entfernt den letzten Tagesnamen (Sonntag)
array_pop($day_names); // Entfernt den vorletzten Tagesnamen (Samstag)
array_pop($rows); // Entfernt die letzte Tagesspalte (Sonntag)
array_pop($rows); // Entfernt die vorletzte Tagesspalte (Samstag)
?>
<div class="calendar-calendar"><div class="week-view">
<table>
...
Sollte eigentlich reichen. Ansonsten installier dir mal das Modul DEVEL und lass dir die Struktur dieser Arrays mal anzeigen:
dpm ($day_names);
dpm ($rows);
Gruß,
Boris
Mir zeigt sich gerade ein
am 14.02.2011 - 19:13 Uhr
Mir zeigt sich gerade ein ganz anderes Problem, denn ich hatte den Code bereits so eingebaut - jedoch ohne Erfolg. Deshalb mein letztes Post.
Was ich auch ändere in der calendar-week.tpl.php - es tut sich nichts. Auch einfacher Text als Test irgendwo in der Datei wird ignoriert.
Ich habe die Datei calendar-week.tpl.php aus den Ordner "theme" im Modul in meinen Theme-Ordner kopiert. Daran ist doch nichts falsch, oder? Aber selbst wenn ich direkt in der Datei im Modul etwas ändere, tut sich nichts.
Sehe ich gerade den Wald vor lauter Bäumen nicht?
Caches werden immer geleert.
UPDATE: ich kann die Datei sogar aus beiden Verzeichnissen löschen - die Wochenansicht wird mir immer noch angezeigt. Da wird doch der Hund in der Pfanne verrückt!
Ich musste mir eine andere
am 17.02.2011 - 11:27 Uhr
Ich musste mir eine andere Datei aus der Theme-Info des Views aussuchen und diese dann bearbeiten.
Jetzt bekomme ich die Wochentage (die Namen) ausgeblendet. Die Spalten bleiben allerdings stehen.
dpm ($day_names);
dpm ($rows);
... gibt mir leider nichts aus. devel hab ich installiert. hast Du da vielleicht noch einen Tipp für mich?
In der Beschreibung der
am 18.02.2011 - 10:51 Uhr
In der Beschreibung der calendar-week-overlap.tpl.php steht folgendes:
* $rows: The rendered data for this week.
*
* For each day of the week, you have:
* $rows['date'] - the date for this day, formatted as YYYY-MM-DD.
* $rows['datebox'] - the formatted datebox for this day.
* $rows['empty'] - empty text for this day, if no items were found.
* $rows['all_day'] - an array of formatted all day items.
* $rows['items'] - an array of timed items for the day.
* $rows['items'][$time_period]['hour'] - the formatted hour for a time period.
* $rows['items'][$time_period]['ampm'] - the formatted ampm value, if any for a time period.
* $rows['items'][$time_period]['values'] - An array of formatted items for a time period.
Leider kann ich damit nicht direkt viel anfangen, weshalb ich nur probieren kann. Aber auch das hat mich nicht weitergebracht.
Sieht vielleicht jemand eine Lösung?
Devel Tipps
am 19.02.2011 - 19:52 Uhr
dpm ($day_names);
dpm ($rows);
... gibt mir leider nichts aus. devel hab ich installiert. hast Du da vielleicht noch einen Tipp für mich?
Das sollte schon funktionieren, wenn das Devel-Modul installiert ist, du als Admin angemeldet bist und diese Befehle wirklich als PHP-Code im Template stehen, also vollständig
<?php dpm($day_names); ?>
<?php dpm($rows); ?>
Damit man auch wirklich etwas sieht, sollte in der page.tpl.php Datei allerdings auch die Variable $messages ausgegeben werden, die benutzt Devel nämlich für den dpm-Befehl. Vielleicht ist das dein Problem.
Devel kennt noch alternative Befehle, eine schöne Liste gibt es hier:
https://ratatosk.backpackit.com/pub/1836982-debugging-drupal
Gruß,
Boris
$messages war es ... Vielen
am 20.02.2011 - 12:44 Uhr
$messages war es ...
Vielen Dank.
Für $day_names bekomme ich diesen Output:
... (Array, 7 elements)
0 (Array, 3 elements)
header (Boolean) TRUE
class (String, 8 characters ) days mon
data (String, 6 characters ) Montag
1 (Array, 3 elements)
header (Boolean) TRUE
class (String, 8 characters ) days tue
data (String, 8 characters ) Dienstag
2 (Array, 3 elements)
header (Boolean) TRUE
class (String, 8 characters ) days wed
data (String, 8 characters ) Mittwoch
3 (Array, 3 elements)
header (Boolean) TRUE
class (String, 8 characters ) days thu
data (String, 10 characters ) Donnerstag
4 (Array, 3 elements)
header (Boolean) TRUE
class (String, 8 characters ) days fri
data (String, 7 characters ) Freitag
5 (Array, 3 elements)
header (Boolean) TRUE
class (String, 8 characters ) days sat
data (String, 7 characters ) Samstag
6 (Array, 3 elements)
header (Boolean) TRUE
class (String, 8 characters ) days sun
data (String, 7 characters ) Sonntag
Krumo version 0.2a | http://krumo.sourceforge.net Called from /home/deelite/www/glueck/sites/all/themes/glueck_tp_01/calendar-week-overlap--calendar.tpl.php, line 31
Aber das ist ja nicht das Problem.
$rows sieht das schon nicht mehr so ergiebig aus:
... (Array, 4 elements)
0 (Array, 7 elements)
multiday_buckets (Array, 7 elements)
0 (Array, 0 elements)
1 (Array, 0 elements)
2 (Array, 0 elements)
3 (Array, 0 elements)
4 (Array, 0 elements)
5 (Array, 0 elements)
6 (Array, 0 elements)
singleday_buckets (Array, 7 elements)
0 (Array, 0 elements)
1 (Array, 0 elements)
2 (Array, 0 elements)
3 (Array, 0 elements)
4 (Array, 0 elements)
5 (Array, 0 elements)
6 (Array, 0 elements)
total_rows (Integer) 1
Krumo version 0.2a | http://krumo.sourceforge.net Called from /home/deelite/www/glueck/sites/all/themes/glueck_tp_01/calendar-week-overlap--calendar.tpl.php, line 32
Da stehe ich jetzt wieder ganz am Anfang ;-(
Wieso?
am 20.02.2011 - 13:42 Uhr
Ich kenne diese Version von Calendar leider nicht, speziell die Template-Datei. Aber das Prinzip ist gleich geblieben: jede Zeile repräsentiert einen Tag, nur das der jetzt wohl noch in "multiday" und "singleday" Abschnitte gegliedert ist. Jetzt mal tapfer ans Werk, den letzten Tag rausnehmen und schauen was passiert:
<?php unset($rows[0]['multiday_buckets'][6]); ?>
<?php unset($rows[0]['singleday_buckets'][6]); ?>
$rows scheint in deinem Fall vier sich überlappende Kalender zu enthalten, also eventuell das gleiche noch mal für $rows[1], $rows[2] und $rows[3] machen.
Gruß,
Boris
Ich habe das jetzt erst mal
am 23.02.2011 - 10:37 Uhr
Ich habe das jetzt erst mal über den Ansatz eines anderen Threads gelöst. Allerdings ist die Endlösung noch nicht ganz nach meinem Geschmack, aber ich bleibe dran. Leider sitzt mir die Zeit im Nacken...
Vielen Dank für Eure Hilfe bis hierher.
Ich bewundere dieses Forum!