WordPress.org

Ready to get started?Download WordPress

Forums

The Loop and my default theme (31 posts)

  1. jamesisin
    Member
    Posted 5 years ago #

    Ok, I would like to allow visitors to suggest tags for my posts. I have found this plugin which purports to do just that:

    http://wordpress.org/extend/plugins/community-tags/installation/

    As you can see from this install page, the directions are simple and to the point. Only problem is I don't know a thing about the post loop.

    I was able to find a little bit more information about adding items to the loop:

    http://codex.wordpress.org/The_Loop

    However, I have not been able to find a single index.php file which contains the lines which the above link claim begin and end the post loop.

    I am using the default theme and I would like to know where the single line of code for the above mentioned plugin should be placed. If I have to create my own post loop somewhere, I'm going to need more assistance.

  2. t31os
    Member
    Posted 5 years ago #

    wp-content/themes/YOURTHEME/index.php
    or
    wp-content/themes/default/index.php

    And a few other files also use the loop...

  3. jamesisin
    Member
    Posted 5 years ago #

    Um, yeah, got that. The page called The_Loop which I link to above claims that, for instance, the loop begins with:

    <?php if ( have_posts()

    And my index.php file, which is located in themes/deafult, does not contain that associated line of code. You see the problem? I can't find the loop.

  4. t31os
    Member
    Posted 5 years ago #

    The default theme most certainly does..

    index.php
    archive.php
    single.php

    The list goes on, the loop code most definately is in those files.

  5. jamesisin
    Member
    Posted 5 years ago #

    Odd, I can see the opening line. Not sure why it didn't show up when I did a find in page (in WordPad). We'll blame that one on MS.

    Ok, so now I see the Loop in my index.php file. Where, within that loop, do I place the code? Does its placement matter? At the end?

  6. t31os
    Member
    Posted 5 years ago #

    Anywhere between..

    <?php while (have_posts()) : the_post(); ?>

    and

    <?php endwhile; ?>

  7. jamesisin
    Member
    Posted 5 years ago #

    Well, I added the requisite line of code immediately before the <?php endwhile; ?> statement and that caused all kinds of havoc. My blog stopped loading or loaded blank. I have commented that line out but my main blog page still fails to respond (times out), though all sub-pages seem to be responding.

    A little help?

    http://SoundUnReason.com/InkWell (this won't work, likely)

    http://www.soundunreason.com/InkWell/?page_id=321 (any of the sub-InkWell links seem to be working)

  8. jamesisin
    Member
    Posted 5 years ago #

    I am greatly confused. I don't seem to be able to functionally comment out lines of code (or comments) in that file. I have tried prepending each line to ignore with // and # and I have tried enclosing the text/code to be ignored with /* */ and in all three cases this code hoses my main page. I have to remove that line (though not my comment line) in order for my site to function. What's up with that?

  9. t31os
    Member
    Posted 5 years ago #

    Whatever file you're editing...

    Post the code from that file here please inside backticks

    `

    I assume you've uploaded the plugin files and activated the plugin via admin, as the instructions say..

  10. jamesisin
    Member
    Posted 5 years ago #

    It's the default theme's index.php file. We all have one. But here you go:

    <?php
    /**
     * @package WordPress
     * @subpackage Default_Theme
     */
    
    get_header(); ?>
    
    	<div id="content" class="narrowcolumn">
    
    	<?php if (have_posts()) : ?>
    
    		<?php while (have_posts()) : the_post(); ?>
    
    			<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
    				<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
    				<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>
    
    				<div class="entry">
    					<?php the_content('Read the rest of this entry &raquo;'); ?>
    				</div>
    
    				<p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>  <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
    			</div>
    
    #  Line of code added from:     wordpress.org/extend/plugins/community-tags/installation/
    
    #  <?php $post_id = the_ID(); <div id="tagthis-$post_id" class="tagthis" style="display:none"></div> ?>
    
    		<?php endwhile; ?>
    
    		<div class="navigation">
    			<div class="alignleft"><?php next_posts_link('&laquo; Older Entries') ?></div>
    			<div class="alignright"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
    		</div>
    
    	<?php else : ?>
    
    		<h2 class="center">Not Found</h2>
    		<p class="center">Sorry, but you are looking for something that isn't here.</p>
    		<?php get_search_form(); ?>
    
    	<?php endif; ?>
    
    	</div>
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>

    You can see the two lines I'm working with (prepended by #) about in the middle. I don't have that second line present in the live version because it hoses my site; I'm including it here so you can see it in the version with both lines commented out and still hosing things.

  11. jamesisin
    Member
    Posted 5 years ago #

    And, sorry, yes, the plug in is loaded and activated.

  12. jamesisin
    Member
    Posted 5 years ago #

    You know, I'm wondering if this is in fact the best location for this line of code anyway. I'll explain.

    It seems that this particular file effects the main page which lists all the posts in a long list (broken into pages of 15 posts I think). It would make more sense to put this tag adding code on the individual posts (with the comment boxes, say). Should I work on adding this code to a different file which would do that instead of adding to this one? Does that make sense?

  13. t31os
    Member
    Posted 5 years ago #

    Think i see the issue.... the plugin instructions say to add this...

    <?php $post_id = the_ID(); <div id="tagthis-$post_id" class="tagthis" style="display:none"></div> ?>

    This code is just incorrect and non-funcitonal... the HTML and PHP is incorrectly nested..

    This however should work...
    <div id="tagthis-<?php the_ID();?>" class="tagthis" style="display:none"></div>

  14. t31os
    Member
    Posted 5 years ago #

    And yes you're also right about the file, place the above code into single.php and you'll see the input form for submitting tags.....

    admin.php?page=ct-manage-tags

    To manage the tags... or bottom-left menu item..

    Also caused a PHP on the first tag, seems to have disappeared now i have made a few tags...

  15. t31os
    Member
    Posted 5 years ago #

    Also you may wish to change these lines in... category-tags-add.php

    // wp_redirect(get_permalink($post_id) );
    echo $post_id.',success';

    to

    wp_redirect(get_permalink($post_id) );
    // echo $post_id.',success';

    So when a tag has been added it re-directs back to the post..

  16. jamesisin
    Member
    Posted 5 years ago #

    Ok, I think we are getting very close. I made the redirect change--I think that was a good idea.

    I know the code I entered into single.php is effecting the correct page(s) on my site, because initially I was using php comments and not html comments so my comment line appeared (on the bottom of individual posts). However, I am not getting any a tag-adding fields or such similar. Here is my single.php:

    <?php
    /**
     * @package WordPress
     * @subpackage Default_Theme
     */
    
    get_header();
    ?>
    
    	<div id="content" class="widecolumn">
    
    	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    		<div class="navigation">
    			<div class="alignleft"><?php previous_post_link('&laquo; %link') ?></div>
    			<div class="alignright"><?php next_post_link('%link &raquo;') ?></div>
    		</div>
    
    		<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
    			<h2><?php the_title(); ?></h2>
    
    			<div class="entry">
    				<?php the_content('<p class="serif">Read the rest of this entry &raquo;</p>'); ?>
    
    				<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
    				<?php the_tags( '<p>Tags: ', ', ', '</p>'); ?>
    
    				<p class="postmetadata alt">
    					<small>
    						This entry was posted
    						<?php /* This is commented, because it requires a little adjusting sometimes.
    							You'll need to download this plugin, and follow the instructions:
    							http://binarybonsai.com/archives/2004/08/17/time-since-plugin/ */
    							/* $entry_datetime = abs(strtotime($post->post_date) - (60*120)); echo time_since($entry_datetime); echo ' ago'; */ ?>
    						on <?php the_time('l, F jS, Y') ?> at <?php the_time() ?>
    						and is filed under <?php the_category(', ') ?>.
    						You can follow any responses to this entry through the <?php post_comments_feed_link('RSS 2.0'); ?> feed.
    
    						<?php if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
    							// Both Comments and Pings are open ?>
    							You can <a href="#respond">leave a response</a>, or <a href="<?php trackback_url(); ?>" rel="trackback">trackback</a> from your own site.
    
    						<?php } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
    							// Only Pings are Open ?>
    							Responses are currently closed, but you can <a href="<?php trackback_url(); ?> " rel="trackback">trackback</a> from your own site.
    
    						<?php } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
    							// Comments are open, Pings are not ?>
    							You can skip to the end and leave a response. Pinging is currently not allowed.
    
    						<?php } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
    							// Neither Comments, nor Pings are open ?>
    							Both comments and pings are currently closed.
    
    						<?php } edit_post_link('Edit this entry','','.'); ?>
    
    					</small>
    				</p>
    
    			</div>
    		</div>
    
    <!--  User-tagging code from: http://wordpress.org/support/topic/255106  -->
    
    <div id="tagthis-<?php the_ID();?>" class="tagthis" style="display:none"></div>
    
    	<?php comments_template(); ?>
    
    	<?php endwhile; else: ?>
    
    		<p>Sorry, no posts matched your criteria.</p>
    
    <?php endif; ?>
    
    	</div>
    
    <?php get_footer(); ?>

    I am placing it incorrectly? Thoughts?

  17. jamesisin
    Member
    Posted 5 years ago #

    Ok, so I used Opera's JS error console and came up with this:

    JavaScript - http://www.soundunreason.com/InkWell/?p=857
    Event thread: load
    Error:
    name: TypeError
    message: Statement on line 22: Type mismatch (usually non-object value supplied where object required)
    Backtrace:
      Line 22 of inline#1 script in http://www.soundunreason.com/InkWell/?p=857
        			$j("#tagthisform-"+index).ajaxForm(options);
      ...  Line 1 of eval script
        function(d,a,c){var e,i=0,length=d.length;if(c){if(length==undefined){for(e in d)if(a.apply(d[e],c)===false)break}else for(;i<length;)if(a.apply(d[i++],c)===false)break}else{if(length==undefined){for(e in d)if(a.call(d[e],e,d[e])===false)break}else for(var b=d[0];i<length&&a.call(b,i,b)!==false;b=d[++i]){}}return d}
      Line 1 of eval script
        function(a,b){return D.each(this,a,b)}
      Line 7 of inline#1 script in http://www.soundunreason.com/InkWell/?p=857
        		$j(".tagthis").each(function(index,obj){
      ...  Line 1 of eval script
        function(){return a.call(this,D)}
      ...  Line 1 of eval script
        function(){this.call(document)}
      ...  Line 1 of eval script
        function(d,a,c){var e,i=0,length=d.length;if(c){if(length==undefined){for(e in d)if(a.apply(d[e],c)===false)break}else for(;i<length;)if(a.apply(d[i++],c)===false)break}else{if(length==undefined){for(e in d)if(a.call(d[e],e,d[e])===false)break}else for(var b=d[0];i<length&&a.call(b,i,b)!==false;b=d[++i]){}}return d}
      Line 1 of eval script
        function(){if(!D.isReady){D.isReady=true;if(D.readyList){D.each(D.readyList,function(){this.call(document)});D.readyList=null}D(document).triggerHandler("ready")}}
      ...  Line 1 of eval script
        function(b){var a,ret,namespace,all,handlers;b=arguments[0]=D.event.fix(b||window.event);namespace=b.type.split(".");b.type=namespace[0];namespace=namespace[1];all=!namespace&&!b.exclusive;handlers=(D.data(this,"events")||{})[b.type];for(var j in handlers){var c=handlers[j];if(all||c.type==namespace){b.handler=c;b.data=c.data;ret=c.apply(this,arguments);if(a!==false)a=ret;if(ret===false){b.preventDefault();b.stopPropagation()}}}return a}
      ...  Line 1 of eval script
        function(){if(typeof D!="undefined"&&!D.event.triggered)return D.event.handle.apply(arguments.callee.elem,arguments)}
      ...
    stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'

    Maybe this is helpful. Looks definitely related. Are we using the wrong object type?

  18. jamesisin
    Member
    Posted 5 years ago #

    If I use this line of code:

    <div <?php post_class() ?> id="tagthis-<?php the_ID(); ?>" class="tagthis" style="display:none"></div>

    I no longer get the type error. It doesn't work, but the type error goes away. Instead I get:

    JavaScript - http://www.soundunreason.com/InkWell/wp-content/plugins/community-tags/inc/js/jquery.form.js?ver=2.7.1
    
    Linked script not loaded
    JavaScript - http://www.soundunreason.com/InkWell/wp-content/plugins/community-tags/inc/js/jquery.timers.js?ver=2.7.1
    
    Linked script not loaded
    JavaScript - http://www.soundunreason.com/InkWell/wp-content/plugins/community-tags/inc/js/jquery.suggest.js?ver=2.7.1
    
    Linked script not loaded
  19. t31os
    Member
    Posted 5 years ago #

    Well i'm using the same plugin you linked to, all i did was follow the instructions with the one change mentioned in single.php and it works..

    According to the messages above those files don't exist, if you click on the links it clearly says the page can be found...

    So either there's some permissions preventing them being accessed, or indeed they do not exist at the location...

    There's a community-tags folder in your plugins folder correct?

    wp-content/plugins/community-tags

  20. jamesisin
    Member
    Posted 5 years ago #

    If I click which links "it clearly says the page can be found"?

    These from the second error (using the code I changed)? Ie:

    http://www.soundunreason.com/InkWell/wp-content/plugins/community-tags/inc/js/jquery.form.js?ver=2.7.1

    Because that doesn't work for me. None of those three do.

    I have reverted my single.php file to match the one posted above. Did I perhaps place the line of code in a bad location?

    </div>
    
    <!--  User-tagging code from: http://wordpress.org/support/topic/255106  -->
    
    <div id="tagthis-<?php the_ID();?>" class="tagthis" style="display:none"></div>
    
    	<?php comments_template(); ?>
    
    	<?php endwhile; else: ?>
  21. jamesisin
    Member
    Posted 5 years ago #

    Ok, so we have all our ducks in a row...

    I am using the line of code you offer above. I have placed it in two locations on my single.php file surrounded by markers so it is obvious where it supposed to be displaying on the page (-- and ==). Here is my single.php file:

    <?php
    /**
     * @package WordPress
     * @subpackage Default_Theme
     */
    
    get_header();
    ?>
    
    	<div id="content" class="widecolumn">
    
    	<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    		<div class="navigation">
    			<div class="alignleft"><?php previous_post_link('&laquo; %link') ?></div>
    			<div class="alignright"><?php next_post_link('%link &raquo;') ?></div>
    		</div>
    
    		<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
    			<h2><?php the_title(); ?></h2>
    
    			<div class="entry">
    				<?php the_content('<p class="serif">Read the rest of this entry &raquo;
    '); ?>
    
    				<?php wp_link_pages(array('before' => '<strong>Pages:</strong> ', 'after' => '
    ', 'next_or_number' => 'number')); ?>
    				<?php the_tags( 'Tags: ', ', ', '
    '); ?>
    
    <!--  User-tagging code from: http://wordpress.org/support/topic/255106  -->
    
    --
    
    <div id="tagthis-<?php the_ID();?>" class="tagthis" style="display:none"></div>
    
    ==
    
    				<p class="postmetadata alt">
    					<small>
    						This entry was posted
    						<?php /* This is commented, because it requires a little adjusting sometimes.
    							You'll need to download this plugin, and follow the instructions:
    							http://binarybonsai.com/archives/2004/08/17/time-since-plugin/ */
    							/* $entry_datetime = abs(strtotime($post->post_date) - (60*120)); echo time_since($entry_datetime); echo ' ago'; */ ?>
    						on <?php the_time('l, F jS, Y') ?> at <?php the_time() ?>
    						and is filed under <?php the_category(', ') ?>.
    						You can follow any responses to this entry through the <?php post_comments_feed_link('RSS 2.0'); ?> feed.
    
    						<?php if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
    							// Both Comments and Pings are open ?>
    							You can <a href="#respond">leave a response</a>, or <a href="<?php trackback_url(); ?>" rel="trackback">trackback</a> from your own site.
    
    						<?php } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
    							// Only Pings are Open ?>
    							Responses are currently closed, but you can <a href="<?php trackback_url(); ?> " rel="trackback">trackback</a> from your own site.
    
    						<?php } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
    							// Comments are open, Pings are not ?>
    							You can skip to the end and leave a response. Pinging is currently not allowed.
    
    						<?php } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
    							// Neither Comments, nor Pings are open ?>
    							Both comments and pings are currently closed.
    
    						<?php } edit_post_link('Edit this entry','','.'); ?>
    
    					</small>
    
    			</div>
    		</div>
    
    <!--  User-tagging code from: http://wordpress.org/support/topic/255106  -->
    
    --
    
    <div id="tagthis-<?php the_ID();?>" class="tagthis" style="display:none"></div>
    
    ==
    
    	<?php comments_template(); ?>
    
    	<?php endwhile; else: ?>
    
    		Sorry, no posts matched your criteria.
    
    <?php endif; ?>
    
    	</div>
    
    <?php get_footer(); ?>

    And here is the errors I am getting when I load that page (JS errors only, I am not bothering with the CSS errors which are unrelated):

    JavaScript - http://www.soundunreason.com/InkWell/wp-content/plugins/community-tags/inc/js/jquery.form.js?ver=2.7.1
    
    Linked script not loaded
    JavaScript - http://www.soundunreason.com/InkWell/wp-content/plugins/community-tags/inc/js/jquery.timers.js?ver=2.7.1
    
    Linked script not loaded
    JavaScript - http://www.soundunreason.com/InkWell/wp-content/plugins/community-tags/inc/js/jquery.suggest.js?ver=2.7.1
    
    Linked script not loaded
    JavaScript - http://www.soundunreason.com/InkWell/?p=857
    Event thread: load
    Error:
    name: TypeError
    message: Statement on line 22: Type mismatch (usually non-object value supplied where object required)
    Backtrace:
      Line 22 of inline#1 script in http://www.soundunreason.com/InkWell/?p=857
        			$j("#tagthisform-"+index).ajaxForm(options);
      ...  Line 1 of eval script
        function(d,a,c){var e,i=0,length=d.length;if(c){if(length==undefined){for(e in d)if(a.apply(d[e],c)===false)break}else for(;i<length;)if(a.apply(d[i++],c)===false)break}else{if(length==undefined){for(e in d)if(a.call(d[e],e,d[e])===false)break}else for(var b=d[0];i<length&&a.call(b,i,b)!==false;b=d[++i]){}}return d}
      Line 1 of eval script
        function(a,b){return D.each(this,a,b)}
      Line 7 of inline#1 script in http://www.soundunreason.com/InkWell/?p=857
        		$j(".tagthis").each(function(index,obj){
      ...  Line 1 of eval script
        function(){return a.call(this,D)}
      ...  Line 1 of eval script
        function(){this.call(document)}
      ...  Line 1 of eval script
        function(d,a,c){var e,i=0,length=d.length;if(c){if(length==undefined){for(e in d)if(a.apply(d[e],c)===false)break}else for(;i<length;)if(a.apply(d[i++],c)===false)break}else{if(length==undefined){for(e in d)if(a.call(d[e],e,d[e])===false)break}else for(var b=d[0];i<length&&a.call(b,i,b)!==false;b=d[++i]){}}return d}
      Line 1 of eval script
        function(){if(!D.isReady){D.isReady=true;if(D.readyList){D.each(D.readyList,function(){this.call(document)});D.readyList=null}D(document).triggerHandler("ready")}}
      ...  Line 1 of eval script
        function(b){var a,ret,namespace,all,handlers;b=arguments[0]=D.event.fix(b||window.event);namespace=b.type.split(".");b.type=namespace[0];namespace=namespace[1];all=!namespace&&!b.exclusive;handlers=(D.data(this,"events")||{})[b.type];for(var j in handlers){var c=handlers[j];if(all||c.type==namespace){b.handler=c;b.data=c.data;ret=c.apply(this,arguments);if(a!==false)a=ret;if(ret===false){b.preventDefault();b.stopPropagation()}}}return a}
      ...  Line 1 of eval script
        function(){if(typeof D!="undefined"&&!D.event.triggered)return D.event.handle.apply(arguments.callee.elem,arguments)}
      ...
    stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'

    Finally, here is the page I am referencing as I test this:

    http://www.soundunreason.com/InkWell/?p=857

    Help?

  22. t31os
    Member
    Posted 5 years ago #

    Trying to view the directories for those files returns a directory lsitings message.

    I'd assume you have some form of .htaccess rules in place...

    Perhaps a htacess rule is being enforced and prevents the plugin JS being loaded...

    If the files exist at that location then it could possibly be a permission rule in place preventing the execution or inclusion of the js scripts....

  23. jamesisin
    Member
    Posted 5 years ago #

    I'm a little confused. I do get a directory listing denied at http://www.soundunreason.com/InkWell/wp-content/plugins/community-tags/ which stands to reason since I deny directory browsing on my server. None of the subs to that directory actually exist on the server. I'm not sure how they relate.

    I am running IIS so I don't have htaccess at all. But, according to you, my code as posted above is correct?

    Can you offer me a link to one of your posts which is displaying this tagging code correctly?

  24. t31os
    Member
    Posted 5 years ago #

    I installed it on my localhost install, so not possible, i don't want the plugin on my main site...

    I keep things the same between local and live though, with exception to plugins or code being tested which remain local.

    Perhaps you might wish to try the same with a local install of IIS and WP... You'll need to look that up (i always use php/apache installs).

  25. jamesisin
    Member
    Posted 5 years ago #

    I have tried to write the author:

    http://robksawyer.com/scribble/about-me/

    Maybe he can offer some insight, only I can't find a good e-mail address (tried rob@ and admin@ but both bounced--<soundunreason.com #5.5.0 smtp;550 No Such User Here>).

    I also found another post where this was asked about:

    http://wordpress.org/support/topic/251384

    And linked to this one asking if that user had any better luck.

  26. jamesisin
    Member
    Posted 5 years ago #

    My friend tells me that the "(usually non-object value supplied where object required)" is saying that the value returned is null. So it looks like it might be an empty variable. Does this help us along any?

  27. t31os
    Member
    Posted 5 years ago #

    I've no idea of the coding differences between linux/apache driven servers and IIS, so i can't really form an opinion that will be of any use to you.

    I'd love to help, honestly though it's outside my experience...

    Not sure i'd recommend the plugin anyway, it's a little on the unfinished side if i'm to be honest...

    If you have dire need for something like this then the only real option left is to post a request in the jobs section and employ someone to custom make something for you, or hope someone makes one.... i say that in the hope someone feels the need to when reading this.... :) ... hehe

  28. jamesisin
    Member
    Posted 5 years ago #

    PHP should remain indifferent to the application used to serve the pages. Wouldn't be a very useful language if that were not the case.

    Could you post your code so I can compare it to mine? If you are apprehensive to post your code, you could send it to me directly through my domain.

  29. t31os
    Member
    Posted 5 years ago #

    The plugin has been removed now (had a clear out), all i did was put the files from the download in the plugin folder (activated the plugin), then the line previously mentioned into my theme single.php

    That's it...

  30. jamesisin
    Member
    Posted 5 years ago #

    And where within single.php did you place that line of code?

    This was in the default theme's single.php file?

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags

No tags yet.