Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

RSS-Feed eigene Variblen defenieren

Eingetragen von alex1981 (57)
am 05.12.2012 - 10:33 Uhr in
  • Themes & Theming
  • Drupal 7.x

Hallo,

ich habe noch eine Problem mit den generieren der RSS-Feeds.

Dieses Problem ist uns erst ab der Version 7.16 auf. In früheren hat es Problemlos geklappt

In den RSS-Feeds-Templates sind eigene Variablen definiert. Um die Variablen mit Werten zu füllen wurden die Funktionen „template_preprocess_views_view_rss(&$vars)“ und „template _preprocess_views_view_row_rss(&$vars)“ überschrieben.

Die RSS-Feeds werden in zwei schritten generiert.
Zu erst die „row’s“ geniert. Hier klappt es mit den eigenen definierten Feldern problemlos.
Im zweiten Schritt wird der äußere Bereich geniert. In diesem werden die eigenen Variablen nicht rein gerändert. Von Drupal vorgegebene Variablen können problemlos überschreiben werden.

Hier ein Codebeispiel wie ich die Variablen in der „template.php“ setzte:


$vars['copyright'] = “Test AG”

In dem Template werden sie wie folgt rein geschrieben


<copyright><?php print $copyright; ?></copyright>

Über Hilfe für die Lösung des Problems würde ich mich freuen.

Mit freundlichen Grüßen
Alex

‹ [gelöst]Aufklappbare Blöcke verschieben sich Austauschen von Bilder bei erreichen eines Viewports ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hat jemand eine Idee?

Eingetragen von alex1981 (57)
am 23.01.2013 - 13:08 Uhr

Hallo,

ich hatte vor einiger Zeit die Frage gestellt: „RSS-Feed eigene Variblen defenieren“.

Leider bisher keine antwort erhalten.

Hat niemand eine Idee?

Mit freundlichen Grüßen
Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was ist genau dein Problem.

Eingetragen von pebosi (2645)
am 23.01.2013 - 13:11 Uhr

Was ist genau dein Problem. Welche RSS Feeds meinst du? Hast du einen Feed per Views erstellt?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die "richtigen" RSS

Eingetragen von alex1981 (57)
am 23.01.2013 - 13:21 Uhr

Hallo,

ich meine die "richtigen" RSS, die am ende "*.rss" haben. Die, die auch in den RSS-Readern abonniert werden.

MfG
Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja ok aber wo ist das

Eingetragen von pebosi (2645)
am 23.01.2013 - 13:24 Uhr

Ja ok aber wo ist das Problem?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Selbst definierte Variablen sind das Problem

Eingetragen von alex1981 (57)
am 23.01.2013 - 13:32 Uhr

Hallo,

das Problem liegt darin, das selbst definierte Variablen nicht in dem „äußere Bereich“ rein gerändert werden.

Ich denke, ich habe es oben gut beschrieben.

Mit freundlichen Grüßen
Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Problem besteht immer noch

Eingetragen von alex1981 (57)
am 22.08.2014 - 08:36 Uhr

Hallo,

ich nach einiger Zeit nochmal versucht das Problem zu lösen, aber bisher keine Möglichkeit gefunden es zu lösen.

Das Problem beschränkt sich auf die „template_preprocess_views_view_rss(&$vars)“ und der „views-view-rss--xxx.tpl.php“ Datei.

Über hinweise würde ich mich freien.

Mit freundlichen Grüßen
Alex

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie wärs, wenn Du mal den

Eingetragen von tobi-berlin (857)
am 22.08.2014 - 08:53 Uhr

Wie wärs, wenn Du mal den Quellcode postest? Bist du denn sicher, dass die views-view-rss--xxx.tpl.php auch genutzt wird, wenn der RSS feed gerendert wird?

  • Anmelden oder Registrieren um Kommentare zu schreiben

OK, hier mal der ganz Code

Eingetragen von alex1981 (57)
am 22.08.2014 - 09:16 Uhr

OK, hier mal der ganz Code und die Templatedate.

Hier der Code der Funktion:

<?php
   
function own_preprocess_views_view_rss(&$vars) {
        global
$base_url;
        global
$language;
   
       
$view     = &$vars['view'];
       
$options  = &$vars['options'];
       
$items    = &$vars['rows'];
   
       
$style    = &$view->style_plugin;

       
// The RSS 2.0 "spec" doesn't indicate HTML can be used in the description.
        // We strip all HTML tags, but need to prevent double encoding from properly
        // escaped source data (such as &amp becoming &amp;amp;).
       
$vars['description'] = check_plain(decode_entities(strip_tags($options['description'])));
       
$vars['last_build_date'] = "";
       
$vars['lastbuilddate'] = "";
   
        if (
$view->display_handler->get_option('sitename_title')) {
           
$title = variable_get('site_name', 'Drupal');
            if (
$slogan = variable_get('site_slogan', '')) {
               
$title .= ' - ' . $slogan;
            }
        }
        else {
           
$title = $view->get_title();
        }
   
       
// Figure out which display which has a path we're using for this feed. If there isn't
        // one, use the global $base_url
       
$link_display_id = $view->display_handler->get_link_display();
        if (
$link_display_id && !empty($view->display[$link_display_id])) {
           
$path = $view->display[$link_display_id]->handler->get_path();
        }
   
        if (
$path) {
           
$path = $view->get_url(NULL, $path);
           
$url_options = array('absolute' => TRUE);
            if (!empty(
$view->exposed_raw_input)) {
               
$url_options['query'] = $view->exposed_raw_input;
            }
   
           
// Compare the link to the default home page; if it's the default home page, just use $base_url.
           
if ($path == variable_get('site_frontpage', 'node')) {
               
$path = '';
            }
           
$vars['link'] = check_url(url($path, $url_options));
        }
   
       
/* create last Build Date, hier create date. Is not good but the best wath i fond */
       
$tmpResult = $view->result;
       
       
$tmpMaxDate =null;
        for(
$i=0; $i<count($tmpResult); $i++){
            if(empty(
$tmpMaxDate)){
               
$tmpMaxDate = $tmpResult[$i]->node_created;
            } else if(
$tmpMaxDate < $tmpResult[$i]->node_created){
               
$tmpMaxDate = $tmpResult[$i]->node_created;
            }
        }

        if(!empty(
$tmpMaxDate)){
           
$vars['last_build_date'] = check_plain($this->createRssDate($tmpMaxDate));
        }

       
$vars['title'] = check_plain($title);
       
$vars['langcode'] = check_plain($language->language);
       
$vars['namespaces'] = drupal_attributes($style->namespaces);
       
$vars['items'] = $items;
       
$vars['description'] = check_plain($view->description);
       
       
// During live preview we don't want to output the header since the contents
        // of the feed are being displayed inside a normal HTML page.
       
if (empty($vars['view']->live_preview)) {
           
drupal_add_http_header('Content-Type', 'application/rss+xml; charset=utf-8');
        }

        return
$vars;
    }
?>

Hier der Template code

<?php
/**
* @file views-view-rss.tpl.php
* Default template for feed displays that use the RSS style.
*
* @ingroup views_templates
*/


?>

<?php print "<?xml"; ?> version="1.0" encoding="utf-8" <?php print "?> \n"; ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title><?php print $title; ?></title>
    <link><?php print $link; ?></link>
    <description><?php print $description; ?></description>
    <language><?php print $langcode; ?></language>
    <lastBuildDate><?php print $last_build_date; ?></lastBuildDate>
    <copyright>XXXXXXX</copyright>
    <?php print $channel_elements; ?>
    <?php print $items; ?>
  </channel>
</rss>  

  • Anmelden oder Registrieren um Kommentare zu schreiben

return $vars; ist schon mal

Eingetragen von tobi-berlin (857)
am 22.08.2014 - 09:25 Uhr

return $vars; ist schon mal nicht nötig in der template-Funktion. Und wo wird jetzt copyright definiert? Und bei Copyright steht XXXX in der template-datei???

  • Anmelden oder Registrieren um Kommentare zu schreiben

Copyright wird direkt rein geschrieben

Eingetragen von alex1981 (57)
am 22.08.2014 - 09:35 Uhr

Das Copyright wird nicht rein gerändert, es steht direkt da drinnen. Es ist der Name der Firma.

Das "return" war ein Versuch gewesen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mal ehrlich - Deine Frage

Eingetragen von tobi-berlin (857)
am 22.08.2014 - 10:00 Uhr

Mal ehrlich - Deine Frage war, wieso die Variablen nicht gerendert werden - und in Deiner Template-Datei stehen gar keine Variablen und in der preprocess-Funktion werden keine eigenen Variablen definiert. Was bitte ist jetzt Dein Problem?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was währe ein andere Weg?

Eingetragen von alex1981 (57)
am 22.08.2014 - 10:30 Uhr

Das Problem ist, das ich in dieser Template das Datum brauche, es aber nicht als Variable vordefiniert ist und ich keine andere Möglichkeit gefunden habe es zu setzten.
Ein weiter Grund warum ich diese Funktion genommen habe, das sie ein "template_" (ist in: sites/all/modules/views/theme/theme.inc) davor stehen hat. Wenn mich nicht alles täuscht, heißt es doch das ich sie überschreiben kann. Oder habe ich da was falsch verstanden?

Was gibt es noch für Möglichkeiten sie rein zu bekommen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also geht es jetzt nicht mehr

Eingetragen von tobi-berlin (857)
am 22.08.2014 - 10:35 Uhr

Also geht es jetzt nicht mehr um eine copyright-Variable, sondern um die $last_build_date??? Ich kann Dir schlecht sagen, was ein anderer Weg wäre, wenn ich nicht weiß, was Dein Problem ist!

Auch diese Variable ist zwar definiert, hat aber nirgendwo ein Datum bekommen?!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Der Variablenname ist egal, das Problem ist gleich

Eingetragen von alex1981 (57)
am 22.08.2014 - 10:44 Uhr

Was in der Variable drinnen steht ist egal. Das mit dem Copyright habe ich anders gelöst, in dem ich es direkt rein geschrieben haben. Da ist es mir zum ersten mal aufgefallen.

Damit die RSS richtig validiert werden kann, muss ein Datum rein. Das steht in dem Standard von Drupal, wie es ausgeliefert wird, nicht drinnen. Jetzt wollte ich zu erst das "copyright" Dynamisch hinzufügen, habe mich dann aber anders entschieden.
Nach dem ich es rein geschrieben habe, ist es mit dem Datum mir aufgefallen.

Die Variable bekomme ein Datum. Die Funktion, die es macht habe ich raus genommen, da es sonst soviel code wäre.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also wenn Du alles lieferst,

Eingetragen von tobi-berlin (857)
am 22.08.2014 - 11:03 Uhr

Also wenn Du alles lieferst, außer das, was relevant ist, kann man Dir auch nicht helfen. Ich klinke mich hier dann mal aus.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 4 Tagen 3 Stunden
  • Hey danke
    vor 4 Tagen 21 Stunden
  • Update: jetzt gibt's ein
    vor 5 Tagen 15 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 3 Tagen
  • Da scheint die Terminologie
    vor 1 Woche 3 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 10 Stunden
  • In der entsprechenden View
    vor 2 Wochen 10 Stunden
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 10 Stunden
  • gelöst
    vor 4 Wochen 4 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 12 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association