Recommended Posts

@kongondo Yesss! It worked, but only when I disabled scheduled post and comments. Is there a way to enable them?

Also, would like to carry over the house styles to the blog.  Ignore this!!

Thank you so much.

Share this post


Link to post
Share on other sites

OK, we are getting somewhere. In my previous testing I had one or two issues with comments but was never able to replicate the issue further. I suggest the following:

  1. Do a cleanup (but do no uninstall Blog)
  2. Make sure you have both Comments field and Schedule Pages modules installed
  3. Run Blog install wizard
  4. Enjoy your new Blog...hopefully :)
Edited by kongondo
  • Like 1

Share this post


Link to post
Share on other sites

Hi @kongondo, here I'm again. The blog works fine and I'm able to style it according to my needs, but somehow on the "posts" homepage I'm not getting the summary view of the posts. I get the full post and a link to the next post at the bottom. How do I get summary posts to work? Thanks.

Share this post


Link to post
Share on other sites

Hi @MaryMatlow,

Please read the docs, here (WIP), especially, this section, but for your specific question, this topic :-). Please note that some newer and amended methods have not yet found their way into the docs, e.g. the method renderRelatedPosts(). However, these are all in this (long, I know) thread but probably best to take a peek at MarkupBlog class itself for all render methods before we get the docs up to speed again.

  • Like 1

Share this post


Link to post
Share on other sites

Hi @kongondo,

I've very busy this past week and haven't had the time look at the documentation. Will do it this weekend and try it out and report back. Thank you very much for your help.

Share this post


Link to post
Share on other sites

HI @kongondo,

So here's the progress. I've a summary page with blog posts listed, and have a full-length blog post page. On the blog-post template I've added an image field, and that image is the splash image to go across the top of the post, below which the post would be rendered. See screenshot:

 

Quote

Screen Shot 2017-01-15 at 9.44.16 PM.png

 

 

The thing I want to do is include this image as part of the summary post list, as in here:

 

Quote

Screen Shot 2017-01-15 at 9.47.59 PM.png

 

Any idea how can I achieve it. Thanks for your help.

Share this post


Link to post
Share on other sites

@kongondo I can't seem to get the featured image to work. Ive added image to blog_image field and am calling it on posts template like this:


<?php
    //CALL THE MODULE - MarkupBlog
    $blog = $modules->get("MarkupBlog");
    //main content
    $featured = array('tag'=>'thumb', 'width'=>550, 'position'=>'above');
    $content .= $blog->renderPosts("limit=7", true, $featured);

    //include the main/common markup
    require_once("blog-main.inc");

There are images in the blog_body field also but none of the images are being rendered.

Share this post


Link to post
Share on other sites

@MaryMatlow,

Seems you missed the third link in my post above :). The array indices were changed to 

'post_image_tag' => 'whatever',

etc..Please see the whole list there or within the module code itself

 

Edited by kongondo
  • Like 1

Share this post


Link to post
Share on other sites

Hi @kongondo, Thanks for your great module and you patient help with it. The blog page and summary page work fine. On the summary page with the array options we can turn off the comment count in the headline, how can i do the same on the blog post also. I'm using your default blog-post template to render single post.

Thanks for your help.

Share this post


Link to post
Share on other sites

Hi @MaryMatlow,

Same way, really. renderPosts() takes 3 arguments, the third of which is $options. Since you need to pass in the 3rd argument, in blog-post.php, line #56, you also have to specify the second argument like so:

$options = array('post_comments'=>0);
$content = $blog->renderPosts($page, false, $options) . $blog->postAuthor() . $renderComments . $blog->renderNextPrevPosts($page);

The 'false' is the second argument. The post will be rendered in full since what that says is that $small = false.

  • Like 2

Share this post


Link to post
Share on other sites

Thanks @kongondo, that's perfect. The blog works beautifully. But now I'm getting a fatal error with the BlogPublishDate module:

Compile Error: Cannot redeclare class BlogPublishDate (line 23 of /xx/xxxxxxxxx/html/site/modules/Blog/BlogPublishDate.module) 

Not sure where this has come from.

Share this post


Link to post
Share on other sites

That's coming from ProcessWire's file compiler; it is not a bug on Blog's side. Try clearing your file compiler cache to see if it solves the issue.  

  • Like 2

Share this post


Link to post
Share on other sites

Hi @kongondo i want to render just one category post on homepage but would like to disable pagination with it. Is there an options array to do that? I couldn't find it.

Second, I want to render posts from two categories on separate templates with different options. For example, when a news article is rendered I do not want author, comments etc but for the blog post I want to keep all that. The full single post uses the blog-post.php template by default. How can i make the news item to use let's say news-item.php?

Thanks.

 

Share this post


Link to post
Share on other sites
On 03/02/2017 at 5:05 PM, MaryMatlow said:

i want to render just one category post on homepage but would like to disable pagination with it. Is there an options array to do that? I couldn't find it.

I am not sure I understand this one. Not sure if you want 1 post from 1 category or several posts from 1 category. Irrespective, pagination only kicks in when you grab a limited number of items and the results returned are a PageArray. 

If what you mean is:

1. Render only 1 post from a given category: Here the trick is to return a Page rather than a PageArray. So, we use a get(). findOne() (if you are using PW 3.X) should also work.

$content = '';
// render a single blog post on Blog Home Page
//$singlePost = $pages->get(11335);// grab by ID
$singlePost = $pages->get('template=blog-post, sort=random, blog_categories=News Article, limit=1');// grab a random post
$content .= $blog->renderPosts($singlePost);

2. Render several posts from only 1 category. In this case, this will return an array. So, to avoid pagination, we need to grab ALL the available post, i.e. no limit (careful with this one if you have lots of posts!).

$content = '';
// render ALL blog posts from a single category on Blog Home Page
$oneCategoryPosts = $pages->find('template=blog-post, blog_categories=News Article');
$content .= $blog->renderPosts($oneCategoryPosts);
// these will also work; passing in a selector
#$selector = "template=blog-post, blog_categories=News Article";
#$content .= $blog->renderPosts($selector);

 

On 03/02/2017 at 5:05 PM, MaryMatlow said:

Second, I want to render posts from two categories on separate templates with different options. For example, when a news article is rendered I do not want author, comments etc but for the blog post I want to keep all that. The full single post uses the blog-post.php template by default. How can i make the news item to use let's say news-item.php?

No need to create a different template for blog posts classified as 'News Article'. Instead, we include some extra logic in the template file blog-post.php. See example below.

// get the category 'News Article'
$newsArticle = $pages->get('template=blog-category, name=news-article');

// special render for blog posts that are classified under 'News Article'
if($page->blog_categories->has($newsArticle)) {
    $options = array('post_categories'=>1, 'post_tags' => 0);// options ONLY for news articles 
    $renderAuthor = '';// don't render blog post author for news articles
    $renderComments = '';// ditto comments
}

// normal blog post
else {
    #$options = array();// if you wish, options for all other blog posts go in here
    $renderAuthor = $blog->postAuthor();// render authors for normal blog posts
    $renderComments = $blog->renderComments($page->blog_comments);// ditto comments
}

$content = $blog->renderPosts($page, false, $options) . $renderAuthor . $renderComments . $blog->renderNextPrevPosts($page);

 

Edited by kongondo
  • Like 2

Share this post


Link to post
Share on other sites

Hey @kongondo, thanks for your detailed response. Regarding, the homepage i should have explained that I need only the latest news article to display, and since there are going to be several news articles the pagination will appear by default, and i don't want to show it. Now I could hide it by using a CSS rule but thought there should be a more elegant solution.

The code for separating options for blog and news articles worked perfectly. :-) Thanks.

I thought I had worked out the rendering of blog and news articles separately but it doesn't seem to work. This is the code I'm using for display of news articles category, but all categories are being displayed:

$posts = $pages->find("template=blog-post, blog_categories='News', limit=10");//grab some posts
                $options = array('post_count' => 1, 'post_comments' => 2, 'post_small_image' => '1', 'post_small_image_width' => '740',);
                $posts = '';
                $posts .= $page->image;
                //render a limited number of summarised posts that belong to this category
                $posts .= $page->blog_body . $blog->renderPosts($posts, true, $options);
                    echo $posts;

Also, no featured image or images within the blog body are showing in any of the posts, summary view or single post view. On the previous site where I used the same code I had no problem with images. Appreciate your help.

Share this post


Link to post
Share on other sites
4 hours ago, MaryMatlow said:

Regarding, the homepage i should have explained that I need only the latest news article to display,

I already answered how to do this :). If you don't want pagination, then, in your case, grab only 1 item.

// GET 1 post, SORTED BY created {you could also sort by '-blog_date'}
$singlePost = $pages->get('template=blog-post, sort=-created, blog_categories=News');
$out = $blog->renderPosts($singlePost);
echo $out;

 

4 hours ago, MaryMatlow said:

This is the code I'm using for display of news articles category, but all categories are being displayed:


$posts = $pages->find("template=blog-post, blog_categories='News', limit=10");//grab some posts
                $options = array('post_count' => 1, 'post_comments' => 2, 'post_small_image' => '1', 'post_small_image_width' => '740',);
                $posts = '';
                $posts .= $page->image;
                //render a limited number of summarised posts that belong to this category
                $posts .= $page->blog_body . $blog->renderPosts($posts, true, $options);
                    echo $posts;

 

I am not being rude but this is the point at which I encourage you to get that 'PHP for beginners' book ;) (e.g., this one) as well as revisit the PW docs. Let's walk through your code:

Line 1#: You grab some posts using find(). That returns a PageArray. You then assign it to the variable $posts.

Line #3: You are overwriting the variable $post (which contains the PageArray from Line #1), assigning it an empty string, i.e. ''.

Line #4: You are appending to the empty string $post an Object which contains the current page's image.

Line # 6: You then append to $post  other stuff.....

That's why it doesn't work as expected :). I am surprised it didn't throw an error. Maybe you have debug turned off? 

  • Like 3

Share this post


Link to post
Share on other sites

@kongondo You are right. I'm a complete PHP novice, trying to wing my way through, copying code without understanding. Obviously that's no way to do things. It's time to teach myself the basics of PHP, and I'm determined to do that. :-) Thanks for pointing out the resources. And thanks for all your help and patience.

  • Like 3

Share this post


Link to post
Share on other sites
5 hours ago, MaryMatlow said:

It's time to teach myself the basics of PHP, and I'm determined to do that

...and we'll be here to help! Please have another go and let us know how it goes :)

  • Like 2

Share this post


Link to post
Share on other sites

Hi @kongondo, it's all coming together nicely. I have one Blog page and other News page (both outside the Blog page structure) and they display summary posts and news articles respectively. I'm using the Style number 3 from Blog configuration. Two issues:

1) When the post/news article opens the path is mysite/posts/blog1 or mysite/posts/news1 which is expected because I'm adding these under "Posts". Ideally I would want them to open as mysite/blog/blog1 or mysite/news/news1. Hope it makes sense. Is there a way to achieve this?

2) Clicking on "Categories" takes me to mysite/categories/news. I would want it go to mysite/news instead where all the summary news posts sit.

Thanks for your help.

Share this post


Link to post
Share on other sites
On 11/02/2017 at 4:21 PM, MaryMatlow said:

1) When the post/news article opens the path is mysite/posts/blog1 or mysite/posts/news1 which is expected because I'm adding these under "Posts". Ideally I would want them to open as mysite/blog/blog1 or mysite/news/news1. Hope it makes sense. Is there a way to achieve this

I am a bit confused here. Do you mean AND and not OR? I.e. do you want normal posts to open as /mysite/blog/blog1/ AND news posts to open as /mysite/news/news1? OR you are happy with either? If AND, then you will need URL rewriting as explained here (quite advanced code) or similar. If you mean OR, then just rename the page 'Posts' to whatever you need, i.e. either 'News' or 'Blog'.

On 11/02/2017 at 4:21 PM, MaryMatlow said:

2) Clicking on "Categories" takes me to mysite/categories/news. I would want it go to mysite/news instead where all the summary news posts sit.

I am not sure I understand this either. I assume you mean clicking on the sub-navigation on the right-hand side (in the demo blog template files)? If yes, that navigation is built using the method renderNav() in MarkupBlog. You might have to create your own custom navigation in that case.

  • Like 1

Share this post


Link to post
Share on other sites

I need some help. I have read all posts and documentation but can not get it to work. I have two questions.

1. Image summary page
My blog index page works but I would like to have the image on the right side. Can I do this with CSS (img.post-featured-image{float:right})?

<div class='row'>
	<div class='col-md-12'>			
		<?php
			$blog = $modules->get("MarkupBlog");
			$options = array('width'=>280, 'alt'=>'title', 'post_small_image'=>2);
			$content = $blog->renderPosts("limit=10", true, $options);
			echo $content; 
		?>	
	</div>
</div>

haddock.png

2. blog-post.php 

How can I output the post that is linked to. I mean the page with the full blog-item? I use this code but it does not work.

$blog = $modules->get("MarkupBlog");
$singlePost = $pages->get('template=blog-post, sort=-created');
$out = $blog->renderPosts($singlePost);
echo $out;

Can anyone help out or give directions on how to find solutions

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Robin S
      Another little admin helper module...
      Template Field Widths
      Adds a "Field widths" field to Edit Template that allows you to quickly set the widths of inputfields in the template.

      Why?
      When setting up a new template or trying out different field layouts I find it a bit slow and tedious to have to open each field individually in a modal just to set the width. This module speeds up the process.
      Installation
      Install the Template Field Widths module.
      Config options
      You can set the default presentation of the "Field widths" field to collapsed or open. You can choose Name or Label as the primary identifier shown for the field. The unchosen alternative will become the title attribute shown on hover. You can choose to show the original field width next to the template context field width.  
      https://github.com/Toutouwai/TemplateFieldWidths
      https://modules.processwire.com/modules/template-field-widths/
    • By horst
      Croppable Image 3
      for PW 3.0.20+
      Module Version 1.1.16
      Sponsored by http://dreikon.de/, many thanks Timo & Niko!
      You can get it in the modules directory!
      Please refer to the readme on github for instructions.
       
      -------------------------------------------------------------------------
       
      Updating from prior versions:
       
      Updating from Croppable Image 3 with versions prior to 1.1.7, please do this as a one time step:
      In the PW Admin, go to side -> modules -> new, use "install via ClassName" and use CroppableImage3 for the Module Class Name. This will update your existing CroppableImage3 module sub directory, even if it is called a new install. After that, the module will be recogniced by the PW updater module, what makes it a lot easier on further updates.
      -------------------------------------------------------------------------
       
      For updating from the legacy Thumbnail / CropImage to CroppableImage3 read on here.
       
      -------------------------------------------------------------------------
       
    • By MoritzLost
      UPDATE: I have published a stable version of this module!
      Discussion thread:
      Github: https://github.com/MoritzLost/TextformatterPageTitleLinks
      ---
      Hello there,
      I'm working on a tiny textformatter module that searches the text for titles of other pages on your site and creates hyperlinks to them. I'm not sure if something like this exists already, but I haven't found anything in the module directory, so I wrote my own solution 🙂
      It's not properly tested yet and is still missing some functionality I would like to implement, so at the moment it should be considered in BETA. Features include limiting the pages that will get searched by template, and adding a custom CSS class to the generated hyperlinks. As I'm writing this I noticed that it will probably include unpublished and hidden pages at the moment, so yeah ... it's still in development alright 😅
      You can download the module from Github:
      https://github.com/MoritzLost/TextformatterPageTitleLinks
      There's some more information in the readme as well.
      Anyway, let me know what you think! I'm happy about any feedback, possible improvements or ideas on how to improve the module. Cheers.
    • By Violet
      Here I'm writing up about my first ProcessWire site, Reached.space, a blog and directory about shops which offer international shipping. 
      I'm from The GrayFly Group, which is the registered trade name for GrayFly Stationery, LLC, a limited liability company registered in the state of Kentucky, USA. You might ask, why is a stationery company creating websites?! Well, in a way both activities are very similar: both activities have the goal of getting written messages across in a pleasing manner to the reader.
      With that out of the way, let's move on and explain what went on behind the scenes of the Reached.space site:
      Template
      I used a free CSS-based template from W3CSS at https://www.w3schools.com/w3css/w3css_templates.asp , using mainly the "Architect" template as the basis and modifying it as needed.
      Pagination
      The pagination feature of ProcessWire was very helpful here; I kept the home page to just two blogroll articles so that the reader was not overwhelmed, but upon pressing "more articles" the remainder of the blogroll is paginated with 4 articles to a page.
      Screen reader
      I made adjustments to my usage of the template to make it screen-reader-friendly. I used the Google Chrome extension to test out how the site would be handled with a screen reader.
      Security
      Security is always important, so I was thrilled to find a great all-in-one-place security guide in the ProcessWire docs at https://processwire.com/docs/security/ - I simply went through the guide and did what it said, using it as a checklist.  
      Modules
      As far as I'm aware, the only additional modules I used (that were not already activated by default in standard PW install) were the Upgrade and Upgrade Checker modules. The main reason for this was security considerations, but it was also an added convenience and peace of mind to have it check for updates every time I logged in.
      However, I did use additional software that was not modules, as described below.
      Other software - Simple HTML DOM
      Here I was very fortunate to receive help from the ProcessWire community on the forum. Due to the site's monetization model being affiliate marketing, I wished to make all my external links nofollow and target _blank by default. User @Robin S was instrumental in showing me how to do this using Simple HTML DOM in the forum post  https://processwire.com/talk/topic/17295-solved-how-to-make-external-links-nofollow-and-target-_blank-by-default-if-using-source-code-toggle-in-editor/
      Other software - Google Analytics cookie manager
      My site requirements for GDPR were specific enough that I felt I would rather develop my own code to handle Google Analytics tracking, which I'll describe here. I wanted to be certain GA tracking was disabled by default requiring opt-in, instead of opt-out. I also included in the Cookie Manager some written info about third party cookies (these are placed when clicking on affiliate links) and how the user can avoid such tracking (turn off third party cookies in their browser settings). 
      I also disabled front-end PW cookies as described here: https://processwire.com/talk/topic/15270-session-storage-and-lifetime/ 
      Google Analytics cookie settings
      The Google Analytics cookie setting code was done using JavaScript. I used a session storage variable to indicate whether the user had a) accepted GA tracking cookies b) declined them or c) had not made a choice yet. I also had to make some changes also to the <head> code to ensure Google Analytics cookies were not set unless the user had accepted them. 
      Efficiency - optimizing 404s
      I used the guide at https://processwire.com/blog/posts/optimizing-404s-in-processwire/ to sinkhole bot-driven 404 requests to a static 404 file. 
      Back office pic
      Below is an image of how ProcessWire allows helpful field descriptions and displays them when used in templates, so that when I come to actually use or enter content in fields I created months ago, I know what the ramifications are. Very helpful. Also, when using the back office I found the Reno admin theme to be very pleasing, efficient, and easy to use.

       
    • By blad
      Hi guys!
      I just uploaded a module to explore files based on elFinder. By default it will show the "Files" folder.
      Screenshots:

      Video:
       
      To do:
       More options To fix:
       The function of rotating or scaling an image fails  Image editors V 1.01 (view issue)
      Fixed the bug working with the Multi-Language support ( translation of folders ). Fixed the name of elfinder.en  Github:
      https://github.com/LuisSantiago/ProcessElFinder/
      I hope you like it.