Download Sektion über News Modul

Gesperrt
MartinB
Beiträge: 7
Registriert: Mo 9. Mai 2011, 09:44
Kontaktdaten:

Download Sektion über News Modul

Beitrag von MartinB »

Hallo,

Ich bin dabei eine Download Section auf einer Seite einzurichten und bin auf ein Problem gestoßen. Die Download Sektion soll auf dem News Modul basieren, d.h. es gibt eine Kategorie in der für jeden Download ein Artikel mit Beschreibung, link, etc erstellt wird. Das News Modul soll dann eine Übersicht über die vorhandenen Download items erstellen.

Der Dateiname für den Download, sowie Dateigröße und Accessbeschränkung werden dabei in jedem Artikel in über extra Modul Download_Item gespeichert:

Input:

Code: Alles auswählen

?><?php

echo '<table>
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("filename").':</td>
          <td style="padding:5px;"><input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]"></td>
        </tr>';
echo '
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("filesize").':</td>
          <td style="padding:5px;"><input type="text" name="CMS_VAR[2]" value="CMS_VALUE[2]"></td>
        </tr>';
echo '
        <tr>
            <td class="text_medium" style="padding:5px;">'.mi18n("public access").':</td>
            <td style="padding:5px;">
                <select name="CMS_VAR[3]">
                <option value="public">yes</option>
                <option value="internal">no</option>
                </select></td>
        </tr>';
echo '</table>';

?><?php
Output:

Code: Alles auswählen

<?php
if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}

$tpl->reset();
$tpl->set('s', 'FILENAME', "CMS_VALUE[1]");
$tpl->set('s', 'FILESIZE', "CMS_VALUE[2]");
$tpl->set('s', 'ACCESS', "CMS_VALUE[3]");

$tpl->generate('templates/download_item.html');
?>
Soweit so gut, funktioniert alles wunderbar. Wenn ich aber jetzt die Übersicht mit dem News Modul erstellen möchte, dann würde ich gerne die 3 CMS_VALUES auslesen, damit ich auch in der Übersicht schon den Dateinamen und -größe sowie einen Link zum Download anzeigen kann. Meiner Meinung nach sollte das funktionieren in dem ich einfach einen Part im News Modul abändere:

Code: Alles auswählen

            $tpl->set('d', 'HEADLINE', $teaserheadline);
            $tpl->set('d', 'TEXT', $teasertext);
            $tpl->set('d', 'HREF', $href);
            $tpl->set('d', 'IMG', $teaser_img);
            $tpl->set('d', 'MORE', mi18n("more"));
zu:

Code: Alles auswählen

            $filename=$article->getContent('CMS_VALUE', 1);
            $filesize=$article->getContent('CMS_VALUE', 2);
            $fileaccess=$article->getContent('CMS_VALUE', 3);
            $tpl->set('d', 'HEADLINE', $teaserheadline);
            $tpl->set('d', 'TEXT', $teasertext);
            $tpl->set('d', 'HREF', $href);
            $tpl->set('d', 'IMG', $teaser_img);
            $tpl->set('d', 'MORE', mi18n("more"));
            $tpl->set('d', 'FILENAME', $filename);
            $tpl->set('d', 'FILESIZE', $filesize);                        
            $tpl->set('d', 'ACCESS', $fileaccess);   
und das template halt entsprechend ergänze. Leider liefert $article->getContent('CM_VALUE',X) aber immer nur leere strings zurück.

Nun frag ich mich was ich daran falsch mache, oder ob es grundsätzlich nicht möglich ist die CMS_VALUE auf diese Weise auszulesen?!

Gruß
Martin
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von Oldperl »

Hallo Martin,

zuerst einmal willkommen im Contenido Forum. :-)

"CMS_VALUE[x]" und "CMS_VAR[x]" sind keine richtigen PHP-Variablen, sondern Platzhalter, die durch Contenido beim Parsen der Module entsprechend ersetzt werden. Daher kann man sie auch nicht wie normale PHP-Variable behandeln, bzw. verwenden.
Du kannst Sie aber einer eigenen Variablen zuweisen, beispielsweise (das x durch die entsprechende Nummer ersetzen)

Code: Alles auswählen

$MeineVariable = "CMS_VALUE[x]"
Mit dieser Variablen ($MeineVariable) kannst du nun ganz normal in PHP weiterarbeiten.

Btw., warum benutzt du nicht das hier im Forum vorhandene Downloadmodul als Grundlage für dein Modul. :arrow: http://forum.contenido.org/viewtopic.ph ... 89&start=0

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
MartinB
Beiträge: 7
Registriert: Mo 9. Mai 2011, 09:44
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von MartinB »

[Moderation: Fullquote entfernt]

Hi,

Ich hab mich gegen das Download Modul entschieden, weil es für mich einfach zu umfangreich ist, auf der Seite soll letztendlich nur eine Übersicht wie bei den Newsartikeln sein, aber mit einem Downloadlink versehen. Das ist vollkommen ausreichend. Upload/ Verwaltung etc darf sowieso nur von Backend/ Webserver Admins gemacht werden. Des weiteren hab ich die News Übersicht schon per css in meine Seite eingepasst, ich dachte ich könnte so meinen Arbeitsaufwand minimieren.

Was die CMS_VALUES angeht ist mir schon klar gewesen dass es keine richtigen php variablen sind. Deshalb hatte ich ja gehofft es über

Code: Alles auswählen

$article->getContent('CMS_VALUE', X)
abzurufen, wobei $article halt eine Instanz eines Artikels ist.

Contenido muss ja die Werte schließlich irgendwo in dieser Klasse speichern um sie später bei aufruf der Seite darstellen zu können. Im News Modul funktioniert das schließlich für die Überschrift eines Artikels mit:

Code: Alles auswählen

$headline = strip_tags($article->getContent('CMS_HTMLHEAD', 1));
Deshalb erschien das für mich der richtige Weg. Bleibt halt die Frage ob das für CMS_VALUE auch so überhaupt vorgesehen und möglich ist.
Zuletzt geändert von Oldperl am Mo 9. Mai 2011, 17:14, insgesamt 1-mal geändert.
Grund: Moderation: Fullquote entfernt
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von Oldperl »

Also das geht so definitiv nicht, CMS_VAR und CMS_VALUE sind ja doch Modulbezogene Werte und keine CMS_TYPES in dem Sinne wie CMS_HTML oder die anderen CMS_TYPES.
Die Klasse Article und ArticleCollection können nur auf Werte die zum Artikel gehören zugreifen, nicht direkt auf Modul(einstell)werte.

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
MartinB
Beiträge: 7
Registriert: Mo 9. Mai 2011, 09:44
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von MartinB »

[Moderation: Fullquote entfernt]

Ok, das beantwortet dann meine Frage. Ich denke ich werd doch mal einen genaueren Blick auf das Up-Download Modul werfen.

Danke!
Martin
Zuletzt geändert von Oldperl am Di 10. Mai 2011, 08:24, insgesamt 1-mal geändert.
Grund: Moderation: Fullquote entfernt
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von Oldperl »

:!: Bitte keine Fullquotes verwendet, schon garnicht wenn der gequotete Post direkt davor steht. Danke. (siehe Forenregeln :arrow: http://forum.contenido.org/viewtopic.php?f=25&t=30173 )

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
MartinB
Beiträge: 7
Registriert: Mo 9. Mai 2011, 09:44
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von MartinB »

Hi,

ich bin nochmal ein bisschen durch den Contenido Code gesurft und bin in class.article.php auf das gestoßen was ich suche:

Code: Alles auswählen

 * You can now read the article properties with
 * $obj->getField(property);
 * 
 * List of article properties:
 * 
 * idartlang             - Language dependant article id
 * idart                         - Language indepenant article id
 * idclient                      - Id of the client
 * idtplcfg              - Template configuration id
 * title                         - Internal Title
 * pagetitle             - HTML Title
 * summary                       - Article summary
 * created                       - Date created
 * lastmodified          - Date lastmodiefied
 * author                        - Article author (username)
 * online                        - On-/offline
 * redirect              - Redirect
 * redirect_url          - Redirect URL
 * artsort                       - Article sort key
 * timemgmt                      - Time management
 * datestart             - Time management start date
 * dateend                       - Time management end date
 * status                        - Article status
 * free_use_01           - Free to use
 * free_use_02           - Free to use
 * free_use_03           - Free to use
 * time_move_cat         - Move category after time management
 * time_target_cat   - Move category to this cat after time management
 * time_online_move  - Set article online after move
 * external_redirect - Open article in new window
 * locked            - Article is locked for editing
 *
Die free_use_X sind genau das was ich brauche, da würde ich dann den Dateinamen von meinem Download speichern und könnte ihn später im News Modul abrufen. Allerdings steht dort nur beschrieben wie ich an die Daten heran komme, aber nicht wie ich sie ändern kann.

Gibt es eine Möglichkeit wo man diese Variablen im Backend setzten kann?

Falls nicht, gibt es eine Möglichkeit im Input eines Moduls eine Referenz auf den aktuellen Artikel zu bekommen und die Variable darüber dann zu setzen? Ich stelle mir in etwa sowas vor:
Modul Input:

Code: Alles auswählen

$dateiname=CMS_VALUE[X];
$aktuellerArtikel->setField('free_use_X', $dateiname);
und dann später im veränderten News Modul:

Code: Alles auswählen

$dateiname=$article->getField('free_use_X');
wäre sowas möglich?

Gruß
Martin
MartinB
Beiträge: 7
Registriert: Mo 9. Mai 2011, 09:44
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von MartinB »

Hi,

So habe die Lösung auf mein Problem gefunden:

http://www.contenido-wiki.org/wiki/inde ... MS_TYP%27s

Ich werd ein Update auf 4.8.14 machen und dann CMS_FILELIST benutzen. Ist schließlich genau das was ich gesucht hatte ...

Gruß
Martin
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von Halchteranerin »

Du solltest gleich 4.8.15 nehmen!
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!
MartinB
Beiträge: 7
Registriert: Mo 9. Mai 2011, 09:44
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von MartinB »

Danke für den Hinweis. Hatte das auch festgestellt als ich 4.8.14 downloaden wollte, dass es schon die 4.8.15. gibt. Sieht so aus als sollte ich die Updatebenachrichtigung mal aktivieren.

Was die Download Sektion anbetrifft, habe ich es jetzt doch so hinbekommen wie ich es mir anfangs vorgestellt hatte. Ich werde die zugehörigen Module dann später in einem entsprechenden thread posten. Das Download Skript kann nämlich auch nach Berechtigungen für Frontend user prüfen, was evtl. auch für andere ganz nützlich ist.
MartinB
Beiträge: 7
Registriert: Mo 9. Mai 2011, 09:44
Kontaktdaten:

Re: Download Sektion über News Modul

Beitrag von MartinB »

So mein Modul ist einmal fertig soweit es mich betrifft. Da ich jedoch in Sachen Webserver, php und ähnlichem ein ziemlicher Anfänger bin, wäre es gut, wenn jemand der Ahnung von solchen Sachen einmal drüber schauen würde, besonders was Sachen wie Sicherheit etc. angeht.

Was das Modul tun soll:

1. Modul Download_Item:

erstellt einen anhand der Konfiguration einen Download Link für einen gegebenen Dateinamen, Kategorie id und optionalen Download Namen:

Code: Alles auswählen

https://www.mydomain.de/cms/front_content.php?idart=X&f=testfile.txt&access=23&fc=mytestfile.txt
Dieser Link wird in CMS_TEXT[Z] gespeichert, wobei Z in der Modul Konfiguration angegeben wird, so dass er über Article Collections abrufbar ist.

Anm.: Die idart der Seite mit dem Modul Download_Handler ist in diesem Modul fest gecoded, im angehängten Beispiel (idart=60), damit man sie nicht bei jeder Konfiguration eines Artikels neu setzen muss.

2. Modul Download_Handler:

Dieses Modul benötigt für jede Kategorie in der sich Downloads befinden ein eigenes Verzeichnis. Diese sollten mit .htaccess geschützt sein. Im Modul Output wird dann für jede Kategorie id das entsprechende Download Verzeichnis festgelegt (edit array $subdirs). Ausserdem werden die Kategorie ids zu dem array $secure_catids hinzugefügt, welche nur für Frontenduser oder Frontenduser gruppen zugänglich sind.
Anhand letzteren kann das Modul prüfen ob ein Frontend user berechtigt ist die Datei herunter zu laden. Außerdem können Downloads in einem Logfile gespeichert werden.

Das Modul wird einfach in eine bestehende Seite eingefügt.
Dateianhänge
Download_modules.xml.zip
(4.57 KiB) 137-mal heruntergeladen
Gesperrt