Filtermöglichkeit per Template
Hallo und Danke für diese Super-Extension! Ist echt gut gelungen...
Ich möchte eine Art Gallerie-Navigation/Filter erstellen:
- es sollen alle Gallerien mit dem Titel und einem Link zur Gallerie aufgelistet werden. Dies habe ich bereits erreich, idem ich alle dazu unnötigen schipsel auf dem Template entfernt habe.
Diese Liste wird ja nun aber nur auf der Gallerieübersichtsseite angezeigt und nicht auf der Detailansicht.
Ich habe schon alles probiert (mein php ist etwas holperig) und erreiche nicht, dass die "navi" auch trotz vars in der url angezeigt wird.
jetziges Template (wird nur auf übersichtsseite aller alben angezeigt...)
Code:
<!-- indexer::stop -->
<?php $GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/gallery_creator/html/gallery_creator_fe.js'; ?>
<!--start album-overview-->
<div class="<?php echo $this->class; ?> gallery_creator block"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
<?php if ($this->headline): ?>
<<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
<?php endif; ?>
<?php echo $this->pagination; ?>
<?php if (count($this->arrAlbums)>0): ?>
<ul class="list_albums">
<?php foreach ($this->arrAlbums as $Album): ?>
<li class="level_1 block row" style="<?php echo $this->imagemargin; ?>">
<div class="col_1">
<figure class="image_container" onmouseover="<?php echo $Album["thumbMouseover"]; ?>">
<?php if ($Album["href"]): ?>
<a href="<?php echo $Album["href"]; ?>" title="<?php echo $Album["title"]; ?>">
<?php endif; ?>
<?php if ($Album["href"]): ?>
</a>
<?php endif; ?>
</figure>
</div>
<div class="col_2">
<h2><?php echo $Album["name"]; ?></h2>
<?php if ($Album["count_subalbums"]): ?>
<p class="count_pics"><?php echo $Album["count_subalbums"]; ?> <?php echo $GLOBALS['TL_LANG']['gallery_creator']['subalbums']; ?></p>
<?php endif; ?>
</div>
<div class="clr"><!--clearing-box--></div>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div>
<!--end album-overview-->
<!--start album-overview-->
<div class="<?php echo $this->class; ?> gallery_creator block"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
<?php if ($this->headline): ?>
<<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
<?php endif; ?>
<?php echo $this->pagination; ?>
<?php if (count($this->arrAlbums)>0): ?>
<ul class="list_albums">
<?php foreach ($this->arrAlbums as $Album): ?>
<li class="level_1 block row" style="<?php echo $this->imagemargin; ?>">
<div class="col_1">
<figure class="image_container" onmouseover="<?php echo $Album["thumbMouseover"]; ?>">
<?php if ($Album["href"]): ?>
<a href="<?php echo $Album["href"]; ?>" title="<?php echo $Album["title"]; ?>">
<?php endif; ?>
<?php if ($Album["href"]): ?>
</a>
<?php endif; ?>
</figure>
</div>
<div class="col_2">
<h2><?php echo $Album["name"]; ?></h2>
<?php if ($Album["count_subalbums"]): ?>
<p class="count_pics"><?php echo $Album["count_subalbums"]; ?> <?php echo $GLOBALS['TL_LANG']['gallery_creator']['subalbums']; ?></p>
<?php endif; ?>
</div>
<div class="clr"><!--clearing-box--></div>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div>
<!--end album-overview-->
<script type="text/javascript">
<!--//--><![CDATA[//><!--
window.addEvent('domready', function() {
//Weiterleitung bei Klick auf das, das Bild enthaltende Listenelement
$$("ul.list_albums li.level_1").addEvent('click', function() {
var href = this.getElement('a').get('href');
var myURI = new URI();
var redirect = myURI.get('scheme') + '://' + myURI.get('host') + myURI.get('directory') + href;
window.parent.location=redirect;
});
/**
* Cursor über h2
*/
$$('.gallery_creator li.level_1').setStyle('cursor', 'pointer');
//bei domready erhält das erste Listenelement einen overlay
$$(".gallery_creator ul.list_albums").getFirst("li").addClass('active');
//Klassenzuweisung
$$(".gallery_creator ul.list_albums li.level_1").addEvent('mouseover', function() {
$$(".gallery_creator ul.list_albums").getFirst("li").removeClass('active');
this.addClass('active');
});
//Klassenentfernung
$$(".gallery_creator ul.list_albums li.level_1").addEvent('mouseout', function() {
this.removeClass('active');
});
});
//--><!]]>
</script>
<!-- indexer::continue -->
ich weiss, dass die navi so doppelt angezeigt wird, aber habs testhalber so drin.
Vielen Dank für einen Denkanstoss, wie ich die Navi auch in der Detailansicht einer gallerie anzeigen kann...
Nimmt mich wunder, weshalb es nicht per Template auslesbar ist
Evtl. bin ich ja vorgeprägt von Katalog, wo ja fast alles über Templates geregelt werden kann - ich kann mir nur nicht erklären, warum das nicht per php auslesbar ist in der detailview.
Sind die Übersichtsdaten in der detailansicht denn nicht "erreichbar" per php und ich muss deshalb über eine separate extension gehen..?
Muss es dem Kunden noch vorstellen, aber wenn ers so haben will wäre die Lösung mit einer kleinen Extension elegant. Bitte melde mir doch per pn, um was für eine finanzielle Grössenordnung es sich handelt (bin "Amateur", kleines Budget...).
Grüess usem Sonnige Aarau
EDIT:
Wäre das nicht eine interessante Ergänzung zu den per Standard vorhandenen Funktionen? Ich finde die Navigation per zurückbutton etwas sehr umständlich, wenn man von Gallerie zu gallerie springen kann ist das sehr praktisch...(Workflow wäre optimiert im Vergleich zur Realisation per Seitenstruktur und Standardnavi, wo das Erstellen und einbinden in eine Seite viel Aufwand bedeutet)
Lösung:
Habe ein modul "Auflistung" erstellt, dort die Albumtabelle vom gallerycreator gewählt, das feld alias eingetragen. Im List_default.html5 habe ich dann "den Rest" des Links eingefügt, sodass nun die Auflistung eine Naviliste für alle gallerien ist, welche dynamisch erstellt wird.
gallery_creator und meta.txt
Hallo Stranger
Die metaText-Informationen zum einzelnen Bild kriegst du im Template über das Array
$Picture['metaFile']['caption'], oder $Picture['metaFile']['alt']
siehe auch:
Code:
echo '<pre>' . $this->showTemplateVars() . '</pre>';
Zuerst aber das neuste build herunterladen.
Gruss Marko
"GalleryCreatorAlbums " nach "gallery_creator_albums" umbenannt
Ciao Toto
Ja, genau! Den Ordner mit den Grossbuchstaben GalleryCreatorAlbums kannst du manuell löschen, wenn das update geklappt hat.
Zur Info für alle anderen:
Scheinbar kann es auf Windows-Systemen Probleme geben mit Verzeichnissen, die Grossbuchstaben enthalten. Aus diesem Grund wurde ab v.3.1.0 das das Verzeichnis "GalleryCreatorAlbums " nach "gallery_creator_albums" umbenannt.
Klar ich in der runonce.php auch veranlassen können, dass das alte Verzeichnis nach dem Updatevorgang automatisch gelöscht wird. Doch das getraute ich mich ehrlich gesagt nicht. ich möchte lieber nicht verantwortlich sein, wenn jemand all seine Bilder verliert, wenn etwas beim Updaten schief gelaufen ist. Deshalb sollte das alte Verzeichnis "GalleryCreatorAlbums", wenn alles überprüft wurde, manuell gelöscht werden.
Liebe Grüsse
Marko
Gallery Creator aus dem Template aus modifizieren
Dies ist die Antwort auf eine persönliche Nachricht von 'Kohlekocher'
Die Template-Klasse erbt einige Methoden aus der Controller-Klasse, die für den Entwickler recht hilfreich sind. Dadurch lässt sich eine Erweiterung mit relativ wenig Aufwand aus dem Template heraus (updatesicher) anpassen.
Problemstellung:
Es soll aus dem Template heraus ein weiteres, grösseres Thumbnail (300px x 300px) generiert werden. Zu diesem Zweck bedient man sich der aus der Controller-Klasse vererbten Methode Controller:getImage().
Hier der Auszug aus dem Frontend-Template:
Code:
<?php
/*
aus http://api.contao.org/#getImage
string getImage (string $image, integer $width, integer $height, [string $mode = ''], [string $target = null])
wobei $mode entweder 'crop', 'proportional' oder 'box' ist
*/
//thumbnail generieren
//$Picture['href'] enthält den Pfad zum Bild
$myThumbSrc = $this->getImage($Picture['href'], 300, 300, 'proportional');
?>
<!-- thumbnail im html einbauen -->
<img src="<?php echo $myThumbSrc; ?>" alt="bla">
Hier die Auflistung aller aus übergeordneten Klassen vererbten Methoden:
Quelle: http://api.contao.org/
Inherited From Template
Template::__construct()
Template::dumpTemplateVars()
Template::getData()
Template::getFormat()
Template::getName()
Template::minifyHtml()
Template::output()
Template::parse()
Template::setData()
Template::setFormat()
Template::setName()
Template::showIE6warning()
Template::showTemplateVars()
Template::__get()
Template::__isset()
Template::__set()
Inherited From Controller
Controller::addEnclosuresToTemplate()
Controller::addImageToTemplate()
Controller::classFileExists()
Controller::convertRelativeUrls()
Controller::createInitialVersion()
Controller::createNewVersion()
Controller::eliminateNestedPages()
Controller::eliminateNestedPaths()
Controller::findContentElement()
Controller::findFrontendModule()
Controller::generateFrontendUrl()
Controller::generateImage()
Controller::generateMargin()
Controller::getArticle()
Controller::getBackendLanguages()
Controller::getBackendThemes()
Controller::getChildRecords()
Controller::getContentElement()
Controller::getCountries()
Controller::getDatePickerString()
Controller::getForm()
Controller::getFrontendModule()
Controller::getImage()
Controller::getLanguages()
Controller::getPageDetails()
Controller::getPageSections()
Controller::getSpellcheckerString()
Controller::getTemplate()
Controller::getTemplateGroup()
Controller::getTheme()
Controller::getTimeZones()
Controller::loadDataContainer()
Controller::optionChecked()
Controller::optionSelected()
Controller::parseSimpleTokens()
Controller::prepareForWidget()
Controller::printArticleAsPdf()
Controller::removeOldFeeds()
Controller::replaceInsertTags()
Controller::resizeImage()
Controller::restoreBasicEntities()
Controller::sendFileToBrowser()
Inherited From System
System::__construct()
System::addToUrl()
System::getFormattedNumber()
System::getIndexFreeRequest()
System::getMessages()
System::getReadableSize()
System::getReferer()
System::idnaDecode()
System::idnaEncode()
System::idnaEncodeEmail()
System::idnaEncodeUrl()
System::import()
System::isValidEmailAddress()
System::loadLanguageFile()
System::log()
System::parseDate()
System::redirect()
System::reload()
System::setCookie()
System::splitFriendlyName()
System::urlEncode()
Grüsse Marko
Zitat:
Hi Marko,
wie geht es dir? Lange nichts mehr gehört...? Nochmals Dickes Lob an dein Script "Gallery Creator"
Ich habe dein Script mitlerweile produktiv im Einsatz! Habe es aber etwas anders in die Seite eingebaut als ursprünglich geplant und mit dir diskutiert. Nutze nun das "Galleria" Script Template. Klappt auch alles soweit ganz gut! Habe das Template nochmals etwas angepasst, so dass nur dann die Bilder bzw. die Galleria angezeigt wird, wenn keine Unteralben existieren.
Kurze Frage: Gibt es eine Möglichkeit das ich die Templatevariable $Picture[rel] und $Album[thumb] mit einem anderen Wert fülle? Optimal wäre mir hier ein weiteres Thumbnail. Momentan ist es so das die Thumbnail Einstellung im Backend für alles gilt - also für die Thumbnails der Alben, für die Thumbnails der Detailansicht usw...
Ich würde gerne aber verschiedene größen Einstellen - also Thumbnailgröße für Albumübersicht, bzw. Albumauflistung und Thumbnailgröße für Kleinansicht, sowie Thumbnailgröße für Großansicht.
In Zusammenhang mit Galleria hat man nämlich die Möglichkeit zunächst ganz kleine Thumbnails (für die Liste unten) anzugeben, dann die Bilder für die Normalansicht (Großansicht), sowie das Originalbild nochmals in einer Lightbox zu öffnen. Das würde ich gerne so nutzen. Zusätzlich sollten die Thumbnails für die Albumübersicht aber auch korrekt angezeigt werden - d.h. nicht so klein wie in Galleria, aber auch nicht so groß wie in der Großansicht.
Ich denke so kompliziert sollte das nicht zu realisieren sein, oder?
1.) Das DCA anpassen, damit man die Werte im Backend erfassen kann
2.) Im PHP ein wenig Code einfügen, so dass die Templatevariablen entsprechend gefüllt werden mit $Picture[thumb] = klein, $Picture[rel] = groß und $Album[thumb] = Albumübersicht
3.) Das Template anpassen und die Variablen korrekt verwenden.
Für den zweiten Schritt kann man sicher Copy & Paste von dem heutigen Code machen der schon existiert um die Thumbnails zu erstellen, oder?
Was hälst du von der Idee? Kannst du mir vielleicht die Stellen im PHP Coding nennen, wo man das anpassen muss?
Viele Grüße
Tobias
Liste der Anhänge anzeigen (Anzahl: 2)
Fehler?
Hallo an alle und Guten Rutsch,
kann mir jemand sagen wie dieser Fehler zustande kommt?
Anhang 6193
Es ist eine jungfräuliche Installation Contao 2.10.3 mit folgende Erweiterungen:
Anhang 6192
Bearbeitungsrechte für Bilder in Alben
Moin Marko,
ich habe deine wunderbare Erweiterung im Einsatz und gerade bemerkt, dass Bilder in Alben offensichtlich nur von dem Benutzer bearbeitet werden können der das Album auch mal angelegt bzw. die betreffende Bilder in das Album eingelesen hat. Ist das richtig und wenn ja: kommt man da irgendwie drum rum? Ich finde das irgendwie unpraktisch. Wäre es nicht möglich einer ganzen Benutzergruppe das Bearbeiten zu ermöglichen?
Um das ganze zu verdeutlichen: In meinem Beispiel wäre es so, dass ein Benutzer die Alben anlegt und die Bilder in die Alben einfügt. Ein andere Benutzer soll dann die Bildbeschreibungen ergänzen. Das Bearbeitungsicon ist jedoch ausgegraut.
Viele Grüße,
Arno.
EDIT:
Ok, ich habe gerade herausgefunden, dass ich in meiner dcaconfig.php einfach die Variable
Code:
$GLOBALS['TL_CONFIG']['gc_disable_backend_edit_protection'] = true;
setzen kann und damit den Schutz überbrücken kann. Damit kann ich leben. Danke!
=> Backend-Album-Protection aufheben
Hallo Arno!
Die Einstellung findest du auch im Backend unter Einstellungen->Galery Creator-Einstellungen-> "Backend-Album-Protection aufheben"
Ist einfacher als per Code zu ändern :)
Grüße
Timm