Ondersteuning » Algemeen WordPress » 3 verschillende comment-templates gebruiken?

  • Hmm ik hoop dat iemand mij hier kan helpen eens proberen..

    Ik heb een WordPress site gemaakt met drie verschillende layouts p/categorie.
    Dus het lijkt alsof het drie verschillende websites zijn per categorie maar alles is gedaan door het aanmaken van templates.

    Dus drie verschillende single.php , category.php, sidebar.php, footer.php en category-loop.php ‘s.

    Dit alles werkt perfect en ik heb nu dus netjes drie verschillende layouts (per categorie)
    Alleen waar ik niet bij stil heb gestaan is het comment + comment-form gebeuren.
    Nu ik dit wil gaan aanpassen sta ik er eigenlijk van te kijken hoe ingewikkeld dit eigenlijk in elkaar zit.
    Normaal heb je volledige controle over je WordPress site door het aanpassen van bestanden binnen je theme folder maar nu blijkt dat voor de comments je ineens in de core bestanden moet zijn.

    Nu heb ik dus in de include folder in het bestand wp-includes/ comment-template.php een aantal aanpassingen gedaan, daarna zag ik dat in dit bestand gelinkt wordt naar de theme folder en het bestand comments.php ook hier heb ik wat aanpassingen gedaan en in de functions.php (afdeling comments) ook omdat vanuit de comments.php deze weer wordt aangeroepen.
    (ik heb wel back-ups gemaakt)

    Je voelt hem al aankomen.
    Op dit moment hebben alle drie de verschillende layouts (per categorie) dezelfde stijlen en uitstraling voor de comments + het formulier.
    En omdat het comments gebeuren aanpassen juist het leukste is van WordPress omdat je hier echt een uniek gevoel kan meegeven aan je thema wil ik ook graag deze comments-list uniek maken per categorie -(pagina).

    Oke dacht ik, even die comment-template (back-up versie) in 3-en verdelen zoals ik dat ook met de rest van de templates gedaan hebt maar dit blijkt niet te werken.

    Na zoeken op Google..
    Is er maar ‘weinig’ geschreven over dit soort aanpassingen en als er al iets staat is het vaker jaren oud en vraag ik me af of het nog wel up to date is.
    voorbeeld op de site van WordPress zelf:
    http://codex.wordpress.org/Function_Reference/comments_template
    Hier staat dit als standaard:
    <?php comments_template(); ?>

    Terwijl dit de werkelijke code is op vandaag:
    <?php comments_template( '', true ); ?>

    Nu ben ik geen kei in .PHP maar volgens mij roept bovenstaande code het comment-template.php bestand aan in de wp-includes folder.

    Een logische gedachte is dan om stap voor stap het bestand en de codes erin proberen te volgen.
    Nu ga ik de back-up versie van comment-template.php dus het origineel hernoemen naar comment-template-newsfeed.php en plaats deze naast de andere in de wp-includes folder.

    Dan roep ik het bestand aan op de volgende manier vanuit de single-newsfeed.php
    <?php comments_template( '/comment-template-newsfeed.php', true ); ?>

    Maar op een of andere reden slikt WordPress dit niet.
    Ik controleer altijd voordat ik verder ga of het juiste bestand ingelezen wordt door WordPress, dit doe ik door iets in de code aan te passen in de vorm van tekst of een class.
    Omdat ik het bestand comment-template.php al gebruikt hebt voor de categorie-web weet ik dat als je hierin iets aanpast je dit terug zult zien op het scherm.
    Zo staat op regel 1553 (van het origineel -/back-up versie) deze div respond Dit heb ik dus op dit moment vervangen door respondddddd maar als ik nu dus comment-template-newsfeed.php ga aanroepen vanuit die eigen single-newsfeed.php dan zou je toch denken dat je respondddddd ergens in de broncode zou moeten tegenkomen maar dat is niet het geval.

    Hierdoor weet ik bijna zeker dat mijn code om van comment-template.php te switchen naar comment-template-newsfeed.php niet werkt.

    Iemand een idee wat ik fout doe?

13 reacties aan het bekijken - 1 tot 13 (van in totaal 13)
  • <?php comments_template(); ?>
    Roept gewoon je comment.php uit je thema op.
    Of dus:

    <?php include (‘comments.php’); ?>
    Roept je comments.php op

    Doe je standaart bij je 1e met zijn eigen stijl.

    In je theme maak je dan gewoon 3 comments.php
    Comments1.php
    comments2.php
    Met elke zijn eigen style taggs in je css πŸ™‚

    Dus voor bijvoorbeeld je page.php

    <php include (‘comments1.php’); ?>

    (even stukje van twenty ten gedoe).
    Maka je dus gewoon al je divjes appart per comment pagina die je wil

    <?php
    /**
     * The template for displaying Comments.
     *
     * The area of the page that contains both current comments
     * and the comment form.  The actual display of comments is
     * handled by a callback to twentyten_comment which is
     * located in the functions.php file.
     *
     * @package WordPress
     * @subpackage Twenty_Ten
     * @since Twenty Ten 1.0
     */
    ?>
    
    			<div id="comments1">
    <?php if ( post_password_required() ) : ?>
    				<p class="nopassword"><?php _e( 'This post is password protected. Enter the password to view any comments.', 'twentyten' ); ?></p>
    			</div><!-- #comments -->

    <?php comments_template(); ?> en <php include (‘comments1.php’); ?>
    Doen dus eigenlijk hetz elfde alleen de 1e met ALLEEN comments.php en de 2e met wat je zelf neerzet πŸ˜‰

    (de versie met true erin kan ook hoor. als je de 2e maar zo doet).

    Hopelijk helpt dit je wat op weg

    Thread starter Jaja..

    (@jaja-1)

    Weet je dat zeker?

    LOL, dat zou gewoon echt bagger slecht zijn van mij als dat waar is..
    Want dan is het dus ongeveer net zo eenvoudig als alle andere templates welke ik heb aangepast.

    Waar staat dat true eigenlijk voor?

    Ik ga even proberen.

    <?php comments_template( ”, true ); ?>

    de true staat voor dit:

    $separate_comments
    (boolean) (optional) Whether to separate the comments by comment type.
    Default: false

    <?php comments_template( $file, $separate_comments ); ?>

    $file is standaard comments.php uit je theme, dus kan je ook zo doen.

    $file
    (string) (optional) The file to load
    Default: /comments.php

    <?php comments_template( ‘comments1.php’, true ); ?>

    kan ook als het goed is πŸ™‚

    http://codex.wordpress.org/Function_Reference/comments_template

    The Template include tags are used within one Template end it is een template tagg πŸ™‚

    Thread starter Jaja..

    (@jaja-1)

    Je hebt wel gelijk ja..

    Dat comments1, comments2 en comments3 verhaal klopt..

    Alleen op een of andere reden laat WordPress de comments niet zien.
    Wel kan ik zien dat de comments2.php wordt geladen want daar heb ik even een aanpassing in gemaakt.

    <?php
    /**
     * The template for displaying Comments.
     *
     * The area of the page that contains both current comments
     * and the comment form.  The actual display of comments is
     * handled by a callback to twentyten_comment which is
     * located in the functions.php file.
     *
     * @package WordPress
     * @subpackage Twenty_Ten
     * @since Twenty Ten 1.0
     */
    ?>
    
    			<div id="comments-newsfeed">
    <?php if ( post_password_required() ) : ?>
    				<p class="nopassword"><?php _e( 'This post is password protected. Enter the password to view any comments.', 'twentyten' ); ?></p>
    			</div><!-- end comments-newsfeed -->
    <?php
    		/* Stop the rest of comments.php from being processed,
    		 * but don't kill the script entirely -- we still have
    		 * to fully load the template.
    		 */
    		return;
    	endif;
    ?>

    In de broncode zie ik alleen dit:
    <div id=”comments-newsfeed”>
    </div><!– end comments-newsfeed –>

    Het lijkt alsof het script daar breekt en het komt niet tot de comments-list want vandaar gaat het naar de functions.php en via deze:

    wp_list_comments( array( 'callback' => 'twentyten_comment' ) );

    Dit is wel raar..

    Thread starter Jaja..

    (@jaja-1)

    Ik was er op aan het zoeken en kwam dit tegen..

    http://wordpress.org/support/topic/2-comments-templates-1?replies=3

    Jammer dat iemand zo’n lekker antwoord geeft op het laatste.

    Ik zit even te denken.. en twenty ten uit te pluizen πŸ˜› (aangezien ik mn eigen theme als base gebruik ooit verder gegaan op een ander theme).
    Als ik het dnek te weten hoor je het, ik snap wel wat die gast bedoeld maar dat is een lastig idee πŸ™‚

    should be more simple πŸ˜›

    wp_list_comments( array( ‘callback’ => ’twentyten_comment’ ) );

    –>

    wp_list_comments( );

    als je dat zo maakt roept hij functions niet meer aan

    (hoeft dus alleen bij je comments1,2 etc)

    BIj mij blijft hij dan gewoon werken alleen is dat deel weg πŸ˜‰

    maar reacties blijven wel staan etc

    Thread starter Jaja..

    (@jaja-1)

    Nee door die functions moet hij 100% zeker heen gaan want daarin staan juist de div die je nodig hebt Post – Trackbacks – Pingbacks , Avatars enz enz.

    Ik ga ook eens even zoeken..

    die pakt hij dan ook nog steeds zover ik weet en zie op mijn twenty ten, metd ie zin aangepast heb je gewoon avatars etc πŸ™‚

    en anders pak je of dat dele van functions in je comments1.php mee of je pakt ene comment die al die features heeft.. en gebruikt die

    Thread starter Jaja..

    (@jaja-1)

    Ik ben er denk ik achter dat als je hem breekt of ergens stopt dat hij dan terug valt op een basis van comment-list die niet uit de functions.php komt maar uit het volgende path.
    wp-includes > theme-compat > comments.php

    En nu gaat mijn eerste verhaal denk ik ook beter op.

    <?php comments_template( '', true ); ?>

    Deze stuurt wel comments.php aan maar op bovenstaande manier doet deze dat niet zomaar.
    Daarvoor moet het toch echt eerst comment-template.php inladen in de wp-includes folder.

    Dus: <?php comments_template –> gaat naar comment-template.php en vandaar uit wordt comments.php gelezen.
    En zet je hier iets tussen: ( ”, true ); dan overschrijft dat het gedeelte dat comments.php gaat inladen in de comment-template.php en dan zeg je eigenlijk niet comments.php inladen maar bijv. comments2.php

    Dit komt uit de comment-template.php

    function comments_template( $file = '/comments.php', $separate_comments = false ) {
    	global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_ID, $user_identity, $overridden_cpage;
    
    	if ( !(is_single() || is_page() || $withcomments) || empty($post) )
    		return;
    
    	if ( empty($file) )
    		$file = '/comments.php';
    
    	$req = get_option('require_name_email');

    Klinkt allemaal logisch alleen er staat natuurlijk meer in dat bestand comment-template.php dat miss. ook nodig is.
    Nu was ik aan het kijken en zie ik helemaal onderaan ook regels code staan die het comment-formulier inladen (dus het gedeelte om te posten) Stel ik maak verbinden via mijn single-3.php met comments2.php en ik doe dat op de include manier dan zou je denken dat dit ook goed is want je wilt niet comments.php inladen maar comments2.php alleen dan heb je nog niets van andere codes uit het comment-template.php dus nog geen post-formulier.
    Geen probleem want er zal vast en zeker wel door WP ergens een regel zijn dat dit comment-formulier gaat opvragen en dat doet het ook onderaan de comments.php + comments2.php via deze code (denk ik)

    <?php comment_form(); ?>

    En wat als deze code nu ook verbinding maakt met comment-template.php in de wp-includes folder?

    Dan heb je dus best gedaan om comments.php niet in te laden via die template door de include functie te gebruiken. Maar even later maakt WP er dan toch verbinding mee via het comment_form (); en op dat moment ziet WP wel comments.php en breekt het script omda je dan vraagt voor comments2.php en even later voor comments.php.

    Kijk en dit stukje code zorgt er volgens mij voor dat als iets breekt dat het dan terug valt op dit comments.php bestand.
    Ik heb even gekeken en dit is gewoon de oude comments.php template vanuit oude versies van WP.

    if ( !defined('COMMENTS_TEMPLATE') || !COMMENTS_TEMPLATE)
    		define('COMMENTS_TEMPLATE', true);
    
    	$include = apply_filters('comments_template', STYLESHEETPATH . $file );
    	if ( file_exists( $include ) )
    		require( $include );
    	elseif ( file_exists( TEMPLATEPATH . $file ) )
    		require( TEMPLATEPATH .  $file );
    	else // Backward compat code will be removed in a future release
    		require( ABSPATH . WPINC . '/theme-compat/comments.php');
    }

    Maak dan dit bestand maar eens open en zet je bijv. 888 achter elke div ID en class. En dan zal je zien in je broncode dat het hieruit komt als je geen verbinding maakt met comments.php of als je het script bijv. breekt.

    Dit is gewoon mij als leek die stap voor stap de code probeert te volgen ik weet niet als het waar is.
    Ik heb nog steeds geen verstand van .php πŸ™‚

    Wat wel een oplossing zou kunnen zijn maar ik heb geen idee hoe ik dat doe.
    Is het template bestand comment-template.php in de wp-includes folder te dupliceren en daar comment-template-1.php, comment-template-2.php en comment-template-3.php van maken.
    Maar dan moet je ook een manier vinden om daar verbinding mee te maken vanuit je single-3.php.

    Dus:

    <?php comments_template( '', true ); ?>
    
    zou eigenlijk:
    
    <?php comments_template_3( '', true ); ?>

    Moeten worden dan los je volgens mij alles op.

    Dan moet je daar wel weer een functie voor schrijven ook vermoed ik πŸ˜‰

    <?php comments_template_3( ”, true ); ?>

    kan je niet zomaar gebruiken op die manier ozver ik weet wnat egrens in de wordpress “core” word die manier van includen aangemaakt (geen idee waar omzeil wordpress core altijd πŸ™‚ )

    Kan je niet van een ander thema een commentform gebruikend ie NIET via een functions.php gaat dan?
    En die dan net zo bouwen als jij iwl πŸ™‚
    Bedoel eenavatar plaatsen erin etc is niet het moeilijkste πŸ˜‰

    lijkt mij makkelijker dan de core aanpassen πŸ™‚

    Thread starter Jaja..

    (@jaja-1)

    Nee daar ben ik ook al te ver voor.

    Als je 3 categorieΓ«n hebt aangepast in allemaal hun eigen layout van top tot teen dan heb je eigenlijk 3 complete sites gemaakt. En ben daar ongeveer 6 tot 7 weken mee bezig geweest.
    Ik zit nu even vast op dit comment gedeelte als ik daar door ben is het nog 2 of 3 dagen en dan is alles klaar en kan ik de website live zetten en vullen met content.

    Dus ik zoek liever een week naar een oplossing hiervoor dan alles opnieuw doen.

    Ik denk dat als ik een include tag heb die vanuit een andere map bestanden kan inlezen dat ik er ben.
    dus:

    <?php include ('comment-template-3.php'); ?>

    Zal niet werken maar als ik het voor elkaar krijg om bijv iets als

    <?php get_file ('root > wp-includes > comment-template-3.php'); ?>

    Dan moet ik er denk ik wel zijn.

    <?php include ‘…/wp-includes/comment-template-3.php’; ?>

    (als het goed is zijn er voldoende puntjes om naar je root te komen vanan je thema map gezien)

    root/wp-content/themes/joutheme/

    is 3 stappen terug en dan wp-includes in.

    *edit dit gaat beter werken :p
    <?php include($_SERVER['DOCUMENT_ROOT']."/wp-includes/comment-template-3.php.php"); ?>

13 reacties aan het bekijken - 1 tot 13 (van in totaal 13)
  • Het onderwerp ‘3 verschillende comment-templates gebruiken?’ is gesloten voor nieuwe reacties.