RSS/RDF auch für nicht öffentliche module ?

Begonnen von spike, 18 März 2006, 10:11:18

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 2 Gäste betrachten dieses Thema.

spike

hi,
geht es auch, dass der rss feed für nicht öffentliche module eingerichtet wird ? bekomme imme reine fehlermeldung,

JoergK

#1
Zitatgeht es auch, dass der rss feed für nicht öffentliche module eingerichtet wird
Wieso willst Du der annonymen Öffentlichkeit per RSS-Feed Infomationen anbieten, die (Gast)Besucher der Seite nicht sehen können/sollen? Irgendwie wiederspricht sich das.

Zitatbekomme imme reine fehlermeldung,
Öhm ... wieso funzt meine Kristallkugel wieder nich?  :D :D

Da Musicman Dir ja bereits das hier schrieb, werd ich Deine Studien mit nem Tip unterstützen. Schau Dir in der backend.php den folgenden Code an und versuch zu analysieren, was da wohl passiert bzw. passieren soll:
        if ((mxModuleAllowed("News")) && ($modcheck['News'])) {

Kleiner Tip: Die function mxModuleAllowed() findeste in der /includes/mx_api.php  ;)
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

spike

das modul um das es geht ist das videomodul... befreundete seiten wollen gerne die news auf ihreren seiten einbinden um den user zu informieren, was es auf der seite an neuen videos gibt.

das videomodul ist zwar "nichtöffentlich" aber für angemeldete benutzer eben durchaus zu sehen.. von daher machts sinn, und ich will,  das modul nicht einfach so freigeben.

die beiden zeilen habe ich schon entdeckt,

$modules = sql_query("SELECT title, active FROM " . $prefix . "_modules");
while (list($modulename, $modulactive) = sql_fetch_row($modules)) {
    $modcheck[$modulename] = $modulactive;
}

das habe ich schon auskommentiert, bringt aber keinen erfolg :(

if ((mxModuleAllowed("News")) && ($modcheck['News'])) { und die zeile habe ich natürlich auch gesehen, habe aber keine ahnung wie ich sie umbauen müsste, dass der check nicht stattfindet

JoergK

Sorry, warst schneller als ich mit meiner Änderung ... der "erste" Teil ermittelt, ob bzw. welches Modul aktiv ist, drum hab ich den auch wieder auch meinem Beitrag entfernt.

Was könnte "mxModuleAllowed" denn bedeuten? ;)

Hier noch zwei hilfreiche Links:

Kontroll-Strukturen
Operatoren
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

spike

ja da wird wohl ein weiteres mal abgefragt, ob das modul freigegeben ist.. die frage ist halt, wie umgehe ich das ? einfach auskommentieren ? falls ja dann hab ich da n klammerngewirr. deswegen ja die frage, wie ich das dann machen müsste

JoergK

Zitatda wird wohl ein weiteres mal abgefragt, ob das modul freigegeben ist

Zitatif ((mxModuleAllowed("News")) && ($modcheck['News'])) {

Deiner Interpretation zur Folge würde der Code ja bedeuten:

Wenn das Modul(News) aktiv ist UND das Modul(News) aktiv ist, dann .... mache irgendwas

Ergäbe das nen Sinn?? Mitnichten ...

Ergo, den guten "alten" Langenscheidt auspacken und gucken, was allowed (to allow) heißt und nochmal überlegen.  ;)
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

spike

ok es bedeuted dann wohl, obs erlaubt ist... bleibt aber das selbe problem

JoergK

 :D :D :D

Zitatdann hab ich da n klammerngewirr

Nicht wirklich ... jede geöffnete Klammer muss auch wieder geschlossen werden und mit dem Wissen einfach mal (ab)zählen ...

Zitatif ((mxModuleAllowed("News")) && ($modcheck['News'])) {

Folglich sähe der Code so aus, wenn das Newsmodul nur für bestimmte Benutzer freigegeben (erlaubt) wäre, die News/Artikel aber im RSS-Feed erscheinen sollen:
Zitatif (($modcheck['News'])) {

Alles klar?  ;)
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

spike

dann sieht die function nun so aus:

//topmusic
function topmusic ($version)
{
    global $rss, $limit, $prefix, $itemdescriptiontrunk ;
    $result = sql_query("SELECT a.idalbum, a.idartist, a.title, b.name, c.comments from " . $prefix . "_topmusic_album AS a LEFT JOIN " . $prefix . "_topmusic_artist AS b ON a.idartist=b.idartist LEFT JOIN " . $prefix . "_topmusic_album_lang AS c ON a.idalbum=c.idalbum order by idalbum DESC limit " . $limit);
    if (!$result) {
        echo "An error occured";
    } else {
        if (($modcheck['topMusic'])) {
            while ($data_down = sql_fetch_object($result)) {
                if (($version == "RSS1.0")or($version == "RSS2.0")) {
                    $data_down->name = rss_bbencode($data_down->name);
                    $data_down->title = rss_bbencode($data_down->title);
                    $data_down->comments = rss_bbencode($data_down->comments);
                }
                $item = new FeedItem();
                $item->descriptionTruncSize = $itemdescriptiontrunk;
                $item->title = strip_tags(rss_bbencode("".$data_down->name." - ".$data_down->title.""));
                $item->link = MX_HOME_URL . "/modules.php?name=topMusic&op=album&idartist=" . $data_down->idartist . "&idalbum=" . urlencode(trim($data_down->idalbum));
                $item->description = strip_tags(rss_bbencode($data_down->comments));
                $item->source = MX_HOME_URL . "/modules.php?name=topMusic";
                $rss->addItem($item);
            }
        } else {
            moduleerror("topMusic");
        }
    }
    unset ($result, $data_down);
}

aber es kommt immer noch der fehler: fehler im rss feed

und in der xml datei steht :
Das Modul topMusic ist nicht aktiviert oder nicht für anonyme Besucher freigegeben. ...

JoergK

ZitatDas Modul topMusic ist nicht aktiviert ...


  • Sicher, dass das Modul aktiviert ist?
  • Was steht inner DB in der Tabelle {prefix}_modules im Feld active?
  • Stimmt die Schreibweise des Modulnamens (Gross-/Kleinschreibung)?
  • Debug-Modus & SQL-Fehler anzeigen eingeschaltet?
    Gibt es dann weitere Fehlermeldungen, wenn ja, welche?

Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

spike

#10
ja das modul ist aktiviert, nur eben NICHT für anonyme benutzer sondern NUR für angemeldete,

active      int(1)           Nein      0  allerdings ist das modul in der active liste NICHT eingetragen so wie es aussieht, aber aktiv ist es sonst würde es ja nicht angezeigt, oder irre ich mich nun ?

schreibweise stimmt

keine weiteren fehler

spike

hmm kann kein 2tes mal editieren..

hab nochmal nachgeschaut, blöd wenn man net sieht, dass auf seite 2 der db auch noch einträge im modules table sind...

also da steht für das modul folgendes:

55     topMusic     topMusic     1     1     hided

würde dann wohl heissen, dass es aktiv ist

JoergK

Sodele, hab den Fehler gefunden:

Mach in Deiner function topmusic() aus der Zeile
Zitatglobal $rss, $limit, $prefix, $itemdescriptiontrunk ;

mal das
Zitatglobal $rss, $limit, $prefix, $itemdescriptiontrunk, $modcheck;

Dann sollte es funzen.
Beim nächsten Mal bitte besser hingucken, was du kopierst  ;)
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

spike

super jetzt gehts :) danke

aber eine frage hätt ich noch, habe das mit den limits noch nicht ganz verstanden, wie kann ich den feed zb auf die neusten 5 limitieren ?


spike

ok auch das limit hab ich hinbekommen.. hab oben in der auskommentierten zeile rumgeändert.. da konnte es dann ja nicht funktionieren ;)
jetzt klappt alles wie es soll

vielen vielen dank