[Plugin: Article List Manager (arlima)] Displaying more than Arlima list on frontpage
-
I was wondering how I would go about adding more than one list to a Front Page. I tried the customfields approach figuring that by adding two list it would work, but it did not. Slightly confused here.
Viewing 2 replies - 1 through 2 (of 2 total)
-
It’s possible to display multiple list on a page, but you need to write some code in that case. I would suggest that you write a function in your theme (functions.php) that renders a list, taking page ID and slug as arguments. This is how it could look:
function arlima_render_list($page_id, $list_slug) { // Define the width of our list. This is later used to crop article images // This width is also defined in /plugins/arlima/css/template.css, so make // sure you change on both places if you need to change the width defined('TMPL_ARTICLE_WIDTH') or define('TMPL_ARTICLE_WIDTH', 480); // Get arlima slug added to this pages in a custom field $arlima_slug = get_post_meta($page_id, $list_slug, true); if( !$arlima_slug ) { echo '<p>'.__('No list slug is defined. Please add custom field "arlima" to this page with the slug name of the list that you want to display', 'arlima').'</p>'; } else { // Load the arlima list $version = isset( $_GET['arlima-preview'] ) && is_user_logged_in() ? 'preview':''; $list = new ArlimaList($arlima_slug, $version); if( !$list->exists ) { echo '<p>'.__('It does not exist any arlima list with the slug', 'arlima').' "'.$arlima_slug.'"</p>'; } else { // Show a link that takes logged in users directly to wp-admin // where current list can be edited arlima_edit_link($list); // Initiate template renderer that's responsible of // rendering current arlima list. $arlima_renderer = new ArlimaListTemplateRenderer($list); // Callback for article image $arlima_renderer->setGetImageCallback(function($article) { if( !empty($article['image_options']) && !empty( $article['image_options']['attach_id'] ) ) { $attach_meta = wp_get_attachment_metadata($article['image_options']['attach_id']); if( !$attach_meta ) return false; $article_width = empty($article['parent']) || $article['parent'] == -1 ? TMPL_ARTICLE_WIDTH : round(TMPL_ARTICLE_WIDTH * 0.5); switch($article['image_options']['size']) { case 'half': $width = round($article_width * 0.5); $size = array($width, round( $attach_meta['height'] * ($width / $attach_meta['width']))); break; case 'third': $width = round($article_width * 0.33); $size = array($width, round( $attach_meta['height'] * ($width / $attach_meta['width']))); break; case 'quarter': $width = round($article_width * 0.25); $size = array($width, round( $attach_meta['height'] * ($width / $attach_meta['width']))); break; default: $size = array($article_width, round( $attach_meta['height'] * ($article_width / $attach_meta['width']))); break; } $img_class = $article['image_options']['size'].' '.$article['image_options']['alignment']; $img_alt = htmlspecialchars( $article['title'] ); $attach_url = wp_get_attachment_url( $article['image_options']['attach_id'] ); $img_url = WP_PLUGIN_URL . '/arlima/timthumb/timthumb.php?q=90&w='.$size[0].'&h='.$size[1].'&src=' . urlencode($attach_url); return sprintf('<img src="%s" width="%s" height="%s" alt="%s" class="%s" />', $img_url, $size[0], $size[1], $img_alt, $img_class); } return false; }); // Callback used when a future posts comes up in the list $arlima_renderer->setFuturePostCallback(function($post, $article) { if( is_user_logged_in() ) { ?> <div class="future-post"> Hey dude, <a href="<?php echo get_permalink($post->ID) ?>" target="_blank">this post</a> will not show up in the list until its published, unless you're not logged in that is... </div> <?php } }); // Modify text content $arlima_renderer->setTextModifierCallback(function($article, $is_post, $post) { $article['text'] = apply_filters('the_arlima_content', $article['text']); return arlima_link_entrywords(trim($article['text']), $article['url']); }); // Callback for related posts $arlima_renderer->setRelatedPostsCallback(function($article, $is_post) { return $is_post ? arlima_related_posts('inline', null, false) : ''; }); // Callback taking place before every article is rendered $arlima_renderer->setBeforeArticleCallback(function($article_counter, $article) { // ... }); // Callback taking place after every article is rendered $arlima_renderer->setAfterArticleCallback(function($article_counter, $article) { // ... }); // The list doesn't have any articles :( if( !$arlima_renderer->havePosts() ) { echo '<p><em>'.__('Please feed me some articles, I\'m hungry').'</em></p>'; } // Let the magic happen... else { $arlima_renderer->renderList(); } } } }
Your arlima template (page-arlima.php) could then look like this:
<?php /** * Template Name: Article List Page * ------------------------------------- * @package Arlima */ get_header(); ?> <div id="primary" class="arlima-content"> <div id="content" role="main"> <?php // Get id of current page $page_id = false; while ( have_posts() ) : the_post(); global $post; $page_id = $post->ID; endwhile; arlima_render_list($page_id, 'arlima'); arlima_render_list($page_id, 'arlima-second'); ?> </div> </div> <?php get_sidebar(); ?> <?php get_footer(); ?>
I’m marking this topic as resolved now. If you run in to any problems or have any other questions just let us know!
Viewing 2 replies - 1 through 2 (of 2 total)
- The topic ‘[Plugin: Article List Manager (arlima)] Displaying more than Arlima list on frontpage’ is closed to new replies.