Beiträge von Grille
-
-
Hallo,
Ich möchte in meiner Webseite Videos nutzen und diese in einzelnen Artikeln anlegen, ... also ein Video zu einen Artikel.
Die Videos werden dann zu Kategorienen zusammengefasst und sollen dann auf Übersichtsseiten übersichtlich dargestellt werden.
Habe ich nun zum Beispiel eine Kategorie "Tauchen", und zu dieser Kategorie mehrere Artikel mit jeweils ein Video, so soll auf der Übersichtsseite aber nicht das Video ansich gezeigt werden, sondern ein kleines Bild. Erst wenn der Besucher auf das Bild klickt, soll sich der Artikel mit dem Video öffnen.
Mein Seitentemplate habe ich jetzt so angelegt, dass je nach Artikel-Formatvorlage, das jeweilige Format des Artikels bestimmt wird, und dann die richtige Darstellung für dieses Format ausgewählt wird:
Seitentemplate für Übersicht:
PHP
Alles anzeigen<?php /* Template Name: page of UEbersicht */ ?> <?php get_header(); ?> <div id="content" class="grid_8"> <?php if (query_posts('category_name=tauchen')){ ?> <?php /* Start the Loop */ ?> <?php while ( have_posts() ) : the_post(); if(has_post_format('aside')){ get_template_part( 'content_aside', get_post_format() ); }elseif(has_post_format('gallery')){ get_template_part( 'content_gallery', get_post_format() ); }elseif(has_post_format('link')){ get_template_part( 'content_link', get_post_format() ); }elseif(has_post_format('image')){ get_template_part( 'content_image', get_post_format() ); }elseif(has_post_format('quote')){ get_template_part( 'content_quote', get_post_format() ); }elseif(has_post_format('status')){ get_template_part( 'content_status', get_post_format() ); }elseif(has_post_format('video')){ get_template_part( 'content_video', get_post_format() ); }elseif(has_post_format('audio')){ get_template_part( 'content_audio', get_post_format() ); }elseif(has_post_format('chat')){ get_template_part( 'content_chat', get_post_format() ); } else { get_template_part( 'content', get_post_format() ); } endwhile; ?> <?php } ?> </div> <?php get_footer(); ?>Ich habe jetzt das Problem, dass ich im Artikel mit der Formatvolage "video" welches lediglich ein Video enthält und einen Text, kein Bild gespeichert habe. welches in der Übersicht dargestellt werden kann.
Wie kann ich Bild und Video im Artikel zu speichern, aber in der Übersicht nur das Bild mit der Verlinkung zum Artikel zu nutzen, und im Artikel nur das Video mit dem Player?
Das Video wird zur Zeit in der Übersicht gezeigt (content_video.php):
PHP
Alles anzeigen<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <div class="article"> <?php if ( 'post' == $post->post_type ) : ?> <div class="article-date"> <?php $articledate = get_the_date("y").'<br />'.get_the_date("m").'<br />'.get_the_date("d"); echo ($articledate); ?> </div><!-- .article-date --> <?php endif; ?> <div class="article-container"> <div class="article-title"> <h1> <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'toolbox' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"> <?php the_title(); ?> </a> </h1> </div> <?php if ( is_search() ) : // Only display Excerpts for search pages ?> <div class="article-summary"> <?php the_excerpt(); ?> </div><!-- .article-summary --> <?php else : ?> <div class="article-content"> <?php the_content(); ?> </div><!-- .article-content --> <?php endif; ?> </div> <div style="clear: both"></div> <div class="article-footer"> <span class="cat-links"><?php the_category( ', ' ); ?></span> <span class="sep"> | </span> <?php the_tags( '<span class="tag-links">' . __( 'Tagged ', 'toolbox' ) . '</span>', ', ', '<span class="sep"> | </span>' ); ?> <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'toolbox' ), __( '1 Comment', 'toolbox' ), __( '% Comments', 'toolbox' ) ); ?></span> <?php edit_post_link( __( 'Edit', 'toolbox' ), '<span class="sep">|</span> <span class="edit-link">', '</span>' ); ?> </div><!-- .article-footer --> </div><!-- .article --> </div><!-- #post-<?php the_ID(); ?> -->Als Player benutze ich den JWPlayer als Plugin. Im Artikel habe ich zum Beispiel diesen Aufruf im Text zu stehen:
-
Habe mir jetzt selbst eine Abfrage der Kommentare gebastelt:
PHP
Alles anzeigenpublic function getCommentList(){ $antwort; $i=0; $sql = 'SELECT * FROM `'.$this->table_prefix.'comments` WHERE `comment_post_ID`='.get_the_ID().' ORDER BY `'.$this->table_prefix.'comments`.`comment_date` DESC LIMIT 0 , 30'; $result = mysql_query($sql); if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $query; die($message); } else { while ($row = mysql_fetch_assoc($result)) { $antwort .= '<div class="comment-'.$i++.'">'; $antwort .= '<h4>Autor: '.$row['comment_author'].'</h4>'; $antwort .= '<p>erstellt am: '.$row['comment_date'].'</p>'; $antwort .= '<p>'.$row['comment_content'].'</p>'; $antwort .= '</div>'; } return $antwort; } }Return ist nun ein strin den ich am mein ajax-return übergeben kann.
Jetzt kommt vielleicht der schwierigste Teil: das Eingabe formular mit AJAX-request.
-
Hallo nochmal,
ich bin leider noch nicht viel weiter. Es gelingt mir nicht anhand der Post_id die dementsprechenden bestehenden comments auszulesen und darzustellen und die Kommentareingabe zu realisieren.
wie gesagt funktioniert "comments_template()" ja eigentlich, nur gibt es sofort alles aus und es gelingt mir nicht die ausgabe abzufangen.
Ich habe jetzt herrausgefunden, dass die Funktion "comments_template()" als erstes Argument den Namen einer php-datei übernehmen kann, welches die Templatedatei für die comments darstellt. Als default-wert wird hier die comments.php genutzt.
Ähnlich scheint auch die Funktion "comment_form()" zu arbeiten. Hier wird aber keine Templatedatei angefordert, (die Ausgabe ist in der Funktion schon enthalten).
unklar ist mir noch was "do_action()" eigentlich macht.
-
Hallo.
Ich habe verschiedene Kategorien angelegt und mein Template so umgeschrieben, dass die einzelnen Artikel der Kategorie auf einer Übersichtsseite als Thumbnails aufgelistet werden.
Auf der Übersichtsseite wird gleichzeitig auch der angeklickte Artikel ausgegeben -> per Ajax werden die Daten abgefragt und wieder angezeigt.
Nun soll bei jedem dieser Artikel eine Komentarfunktion möglich sein.
Das Problem ist, dass die Funktion "comments_template( '', true )" sofort k visualisiert, und nicht der Ajaxfunktionalität übergibt, so dass diese die Komentare in der Seite plazieren kann:
Diese ist meine Templateerstellung:
PHP$request1 .= '<div id="post-'.get_the_ID().'">'; $request1 .= '<h1>'.get_the_title().'</h1>'; $request1 .= '<div class="entry-content">'.get_the_content().'</div><!-- .entry-content -->'; $request1 .= '<div class="comment">'.comments_template( '', true ).'</div><!-- comment -->'; $request1 .= '</div><!-- #post-## -->';Und das ist die HTML-Ausgabe:
HTML<div id="comments"> <!-- hier ist der Kommentarbereich --> </div><!-- comments --> <div id="post-49"> <!-- hier ist der eigentliche Artikelinhalt --> <div class="comment"> <!-- Hier sollte der Kommentarbereich eigentlich ausgegeben werden --> </div><!-- comment --> </div><!-- post -->Was ich bräuchte ist eine art "get_comments_template( '', true )" -Funktion. Oder eine Möglichkeit die Ausgabe rechtzeitig abzufangen und in einer Variablen abzuspeichern.
Habt ihr eine Idee?
-
Das Ergebnis
Habe es selbst geschafft:
PHP
Alles anzeigen<?php /* Template Name: cat-technik */ $categoriename='technik'; ?> <?php get_header(); ?> <div class="container_16"> <div id="contentarea" class="grid_16"><!-- #contentarea START --> <div class="hadline_underline"> <?php get_template_part( 'loop', 'index' ); ?> </div> <ul class="video_list"> <?php $i = 0; query_posts('category_name='.$categoriename); if (have_posts()) : while (have_posts()) : the_post(); // alle Artikel einer Kategorie $postCount = $wp_query->post_count; $i++; // CSS-Klassenname der Liste if ($i == 1) { // der Erste der Liste von Artikeln $postclass = 'first_videolist_post'; } elseif ($i == $postCount){ // der Letzte der Liste von Artikeln $postclass = 'last_videolist_post'; } else { // alle anderen Artikeln $postclass = 'videolist_post'; } // Datenbankabfrage des Feldes "post_content" in der Tabelle "posts" für den in der Schleife aktuellen Artikel $sql = "SELECT `post_content` FROM `{$table_prefix}posts` WHERE `ID`=".get_the_ID(); $result = mysql_query($sql); if (!mysql_num_rows($result)){ // gibt es keinen Inhalt, soll die Schleife unterbrochen werden und der Artikel nicht ausgegeben werden } else { // Fortsetzen der Auswertung der "post_content"-Abfrage $row = mysql_fetch_assoc($result); // Den Inhalt von "post_content" nach [media - Inhalten und id= - Inhalten durchsuchen $SearchString = $row['post_content']; $SearchString_media = '[media'; $StringPos_media = strpos($SearchString, $SearchString_media); // Durchsuche den String nach einer Zahl hinter "id=" und speichere diese in der Variablen "$number_id" preg_match('#(?<=id=)\d+#', $SearchString, $number_id); if ($StringPos_media === false or !$number_id) { // Wenn es den Inhalt "[media" oder "$number_id" leer ist, - Abbruch } else { // Datenbankabfrage - Hole die Daten des Videos mit der $number_id aus der Wordtube-Tabelle $sql = "SELECT * FROM `{$table_prefix}wordtube` WHERE `vid`=".$number_id[0]; $mediadata = mysql_query($sql); // Prüfen ob die Datenbankabfrage von "$mediadata" erfolgreich war if(mysql_num_rows($mediadata)){ $mediadatarow = mysql_fetch_assoc($mediadata); if(!$mediadatarow['file']){ } else { // Starte Listeneintrag für diesen Artikel echo "<li class=".$postclass." clearfix\">"; //HTMLausgabe der Videobuttons echo '<a href="'.$_SERVER['SERVER_NAME']."/?p=".get_the_ID().'">'; echo '<img width="125" height="125" border="0" title="'.$mediadatarow['name'].'" alt="'.$mediadatarow['name'].'" src="'.$mediadatarow['image'].'">'; echo '</a><br/><br/>'; //Testausgabe weiterer Daten /* echo $mediadatarow['vid']."<br/>"; echo $mediadatarow['name']."<br/>"; echo $mediadatarow['creator']."<br/>"; echo $mediadatarow['description']."<br/>"; echo $mediadatarow['file']."<br/>"; echo $mediadatarow['image']."<br/>"; */ // Ende des Listeneintrags für diesen Artikel echo "</li>"; } }else{ } } } endwhile; endif; ?> </ul> </div> </div><div class="clear"></div> <div class="container_16"> <?php get_footer(); ?> -
Ist es möglich den Inhalt von "post_content" abzufragen, ohne den Inhalt von WP interpretieren zu lassen?
-
Hallo,
seit einigen Tagen versuche ich verzweifelt ein Template umzusetzen, in dem man einen Videoplayer sieht, und eine Auflistung von bilderchen die mit weiteren Videos verlinkt sind.
Ich habe mir das Plugin "Wordtube" installiert. Dieses legt 3 Tabellen in der Datenbank an und speichert dort einmal die Videoinformationen zu jedem Video, in der nächsten Tabelle werden in Wordtube angelegte VideoKategorien gespeichert. Un in der dritten Tabelle werden die einzelnen Videos mit den VideoKategorien in Beziehung gesetzt.
Leider hat Wordtube aber ein Ausgabe, in der sich in einem Flash-Objekt das aktuell abzuspielende Video befindet, und direkt an den Player geklatscht eine Playlist. hier zu sehen: http://alexrabe.de/wordpress-plugins/wordtube
Mir schebt mehr etwas so vor wie auf http://www.youtube.com . Eine Auflistung einiger Videos in ihren jeweiligen Kategorien ... darüber ein Player.
TOLL wäre es noch, wenn man dann auf ein Videobotton klickt und dieses dann per AJAX in den Player geladen würde.
Das habe ich bis jetzt versucht:
Ich habe eine Kategorie "technik" angelegt. Hier sollten einzelne Artikel landen mit jeweils einem Video. Um das Video in dem Artikel einzubetten, muss man z.B. [media id=1 width=700 height=400] als Textblock einfügen. Dies zeigt dann das Video mit der ID1 an ohne Playlist zu zeigen.Auf der Seite "Technik" mit dem Template "cat-technik" versuche ich nun die Kategorie auszulesen mit:
PHP
Alles anzeigen<ul class="video_list"> <?php define('categoriename','technik'); $i = 0; query_posts('category_name='.categoriename); if (have_posts()) : while (have_posts()) : the_post(); $postCount = $wp_query->post_count; $i++; $postclass = 'videolist_post'; if ($i == $postCount) { $postclass = 'last_videolist_post'; } ?> <li class="<?php echo $postclass; ?> clearfix"> <?php the_title(); ?> </li> <?php endwhile; endif; ?> </ul>Wenn ich "<?php the_title(); ?>" mit "<?php the_content(); ?>" auswechsel, dann wird mir für jeden Artikel ein Player auf der Seite ausgegeben. Ich möchte aber nur das Vorschaubild und die Beschreibung haben.
mit diesem Code statt dem "<?php the_title(); ?>"
PHP
Alles anzeigen<?php // Datensätze aus einer Tabelle auslesen und einer Variable zuweisen global $wpdb; $result = $wpdb->get_results("SELECT vid, name, description, file, image FROM {$table_prefix}wordtube ORDER BY vid"); // Ver- oder Bearbeiten der Datensätze (Beispiel) foreach($result as $post) : echo $post->name; endforeach; ?>gibt er mir eine gesamte Liste alle VideoNamen aus. Ich bekomme es aber nicht hin, nur die Informationen des jeweiligen Videos auszulesen, welches im Artikel mit [media id=1 width=700 height=400] aufgerufen wird.
Muss ich den Artikeltext durchsuchen, ob im Text eine Konstruktion [media id=???] befindet, diese ID dann auslesen und dann allein die Daten dieses einen Videos aus der Datenbank abfragen? Gibt es eine andere Lösung?
Gibt es vielleicht schon eine gut fuktionierende Videoverwaltung für WP als Plugin?
-
Fehler behoben .. es lag am Server!
Die Plugins die von Wordpress installiert wurden, wurden als Besitzer auf "nobody" gesetzt als sie von WP auf den Server geschrieben wirden.
Eine Benutzerrechte-Veränderung im Adminbereich meines Webpacketes konnte das Problem lösen.
-
Hallo
Ich nutze verschiedene Plugins für mein WP-Projekt. Bei den meisten Plugins die ich gerne anpassen und verändern will, habe ich das Problem, dass ich keine Dateien auf dem Server finde:
z.B. das Plugin "jquery-collapse-o-matic" oder auch "contact-form-7"
Deren Verzeichnisse unter wp-content/plugins/ sind zwar angelegt, aber sie sind leer. In der Datenbank habe ich auch keine Dateien gefunden.Kann es sein, dass die Dateien mit einem "." anfangen wie die ".htaccess" ... Mein Serverpacket von hosteurope (Webpack M) scheint diese auszublenden.
Will ich nun das Plugin über die Admin-Oberfäche von WP verändern, so komme ich nur an eine einzelne Datei herran hinter der (aktiv) steht. Diese kann ich verändern und somit das Plugin beeinflussen. Will ich aber eine andere Datei verändern die dem Plugin angehört und auf der rechten Seite aufgelistet sind, so wird mir zwar der Inhalt der Datei angezeigt, aber dahinter steht (inaktiv) ... ich kann da zwar was ändern, die Änderung wird auch gespeichert, ... aber sie beeinfluss nicht die Ausgabe.
Bin für jeden helfenden Tip dankbar...
Gruß,
Grille -
Hallo .. Jan .. habe ich .. also dieser Code
... der zeigt mein Menü welches ich im Backend unter dem Namen "mainmenu" angelegt habe. Dort habe ich verschiedene Unterseiten angelegt (Zum Beispiel für die PageID 10) .. aber ich kann die nicht ausgeben ...
so ist der Menübaum im Backend:
Die Menüansicht wenn ich 'page 1' geladen habe soll so sein:
Die Menüansicht wenn ich auf 'page 2' klicke und die Seite geladen ist soll dann so sein:
Ich glaube zwar su verstehen, wie das menü umgesetzt werden müsste, aber es klappt nicht:
ich brauche eine Abfrage welche prüft: hat meine aktuell geladene Seite unterseiten? Wenn ja -> Zeige die Unterseien an ...
-
Hallo,
nach langem Suchen und Probieren muss ich aufgeben und euch um Hilfe bitten.
Ich habe ein menu angelegt, welches ich so erfolgreich anzeigen kann:
Die weiteren Verzweigungen im Menü sollen aber nicht angezeit werden, wenn man nicht auf eine Seite mit Untermenüs wechselt.
PHP
Alles anzeigen<?php $args_main = array( 'depth' => 1, 'menu' => 'mainmenu', ); wp_nav_menu($args_main); $args_sub = array( 'depth' => 1, 'menu' => 'mainmenu', 'child_of' => $page->ID, ); wp_nav_menu($args_sub); ?>Meine Versuche die Untermenüs der aktuellen Seite wenigstens sichtbar zu machen blieben leider erfolglos.
-
So .. ich glaube jetzt ist es fertig!
mit diesem Eintrag in der page.php im Contentbereich, werden alle Artikel der Kategorie angezeigt die den gleichen Namen hat wie die Seite!
PHP
Alles anzeigen<?php $anfrage = new WP_Query('category_name='.get_the_title()); while ($anfrage->have_posts()) : $anfrage->the_post(); ?> <div class="post" id="post-<?php the_ID(); ?>"> <h4><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h4> <div class="contentarea"> <p class="details"><span class="user"><?php the_author_posts_link() ?></span> <span class="date"><?php the_time('j. F Y') ?></span> <?php edit_post_link('Bearbeiten'); ?></p> <?php the_content('Den ganzen Beitrag lesen »'); ?> <?php $sub_pages = wp_list_pages( 'sort_column=menu_order&depth=1&title_li=&echo=0&child_of=' . $id );?> <?php if ($sub_pages <> "" ){?> <p>Diese Seite hat folgende Unterseiten:</p> <ul><?php echo $sub_pages; ?></ul> <?php }?> </div> </div> <?php endwhile; ?>Mit $anfrage = new WP_Query('category_name='.get_the_title()); werden alle Artikel welche in der Kategorie stehen die den gleichen Namen der Seite hat, in der Variablen $anfrage gespeichert (wahrscheinlich ein array).
In der while-Schleife wird dann jeder Artikel der in der Variable $anfrage gespeichert ist abgearbeitet. Innerhalb der Schleife erfolgt dann die Darstellung der einzelnen Artikelelemente (Titel .. Autor .. Text .. usw.)Dank an marX, der, obwohl er bestimmt genau wusste was ich wollte aber nie mit der vollen Antwort herausgekommen ist, mich letztendlich doch noch mit seinen Hinweisen auf die richtige Spur gebracht hat.
-
habe jetzt das gefunden:
Zitat
<?php $anfrage = new WP_Query('category_name=service-nachrichten'); ?>
<?php while ($anfrage->have_posts()) : $anfrage->the_post(); ?>
Ausgabe
<?php endwhile; ?>Scheint zu funktionieren
-
Hej!
<?php
if (is_page('Home')) {
query_posts("cat=8");
}
?>Hallo,
Also ich habe alles ausprobiert: ich habe in der page.php diesen Code eingetragen (mit sämtlichen IDs) genauso wie in meinen anderen Templatedateien
genauso wie die Nutzung des cat-namens:
... und es passiert einfach garnichts.
Mich wundert auch, dass in der MySQL-Tabelle _posts in der Spalte post-category alles auf null steht.
Leider wird auch in den Dokumentationen nie das Wort Artikel genutzt! Vielleicht liegt hier auch eine Verwechslung vor ... also ich will, dass alle Artikel die ich einer Kategorie zugeordnet habe ... ausgegeben. So wie es in der Dokumentation behauptet wird, gehts bei mir nicht:
Zitat
Zeige eine Kategorie anhand des Kategorienamens
Display posts from only one category by name:
query_posts('category_name=Lifestyle');Gruß,
Grille -
ok .. wenn ich in die page.php das reinschreibe
dann wird auch die intro.php eingefügt ... jetzt erstelle ich erstmal für jede Seite eine Unterseite ... ich melde mich dann wieder bei Problemen .. danke marx! :)
[Blockierte Grafik: http://downloads.schauart.de/marX.jpg]
-
komisch .. da steht
Zitat
is_page()
When any Page is being displayed.Jetzt habe ich in der Index.php vom Template dies eingetragen:
Zitat
if (is_page()){
include_once(TEMPLATEPATH.'/intro.php');
}und es passiert nichts .. nach meinem Verständnis müsste er doch jetzt auf jeder Seite die intro.php includen
-
Ich nochmal ...
in der index.php meines Templates wird oben mit:
geguckt (glaube ich) .. ob eine Seite angefordert wurde, oder ob es die "nackte" index-Seite ist. ... Wenn keine Seite angefordert wurde, wird die intro.php eingebettet.
Ich möchte gerne diese if-Abfrage erweitern mit:
PHP<?php if (!is_paged()){ include_once(TEMPLATEPATH.'/intro.php'); } if ($page_name == "Veranstaltungen"){ include_once(TEMPLATEPATH.'/veranstaltungen.php'); } ?>Und hier ist genau das Problem:
wie kann ich herausfinden, welche Seite gerade aufgerufen wurde (Name der Seite) um dann eine Fallunterscheidung machen zu können? -
Hallo .. gibt es irgendwo eine Liste aller WP-eigenen funktionen mit deren Beschreibung ... also sowas wie:
the_author_firstname()
Beispiel: <p>Dieser Beitrag wurde geschrieben von <?php the_author_firstname(); ?></p>
Beschreibung: Zeigt den Vornamen des Autors eines Beitrags an;...
...[edit]
ok .. habs gefunden: -
Habe den Fehler gefunden:
WP benutzt im Adminmodus auch Javascript-cookies. daher schreibt er in das cookie welches die Schriftgröße speichern soll noch andere Sachen.
An erster Position steht aber immer noch die Schriftgrößeneinstellung ... daher liest das JS jetzt die erste Stelle des Cookies aus .. mit "charAt(0);"
PHP
Alles anzeigen</head> <body> <script type="text/javascript"> var url='<?php bloginfo('stylesheet_url')?>'; var styles = 4; if (document.cookie) { var iihhi = document.cookie; iihhi = iihhi.charAt(0); setstyle(); }else{ var iihhi = 1; setstyle(); } function fontbigger(){ if (iihhi < styles){ iihhi++; } setstyle(); } function fontsmaler(){ if (iihhi > 1){ iihhi--; } setstyle(); } function setstyle(){ var linkElems = document.getElementsByTagName("link"); for (var ka=0; ka<linkElems.length; ka++) { if (linkElems[ka].rel == "stylesheet") { linkElems[ka].href = url.replace(".css", "_"+iihhi+".css"); document.cookie = iihhi; break; } } } </script> <div id="outer"> <div id="styleswitch"> <div id="aa" onclick="fontbigger();"> </div> <div id="a" onclick="fontsmaler();"> </div> </div>