Did you give anonymous users access to the new content?
Go to Groups, click on Anonymous and then grant anonymous view writes
to the new post type.
On May 28, 2009, at 8:38 PM, Tomas Gonzalez Dowling wrote:
>
> Chris J. Davis escribió:
>> I am not sure if anyone has gotten back to you yet, but this is the
>> process for creating post types and then displaying them, as far as I
>> remember:
>>
>> In your plugin you should have two methods, one that creates the post
>> type upon activation, and then on that removes it when deactivating:
>>
>> function action_plugin_activation( $plugin_file ) {
>> if( Plugins::id_from_file(__FILE__) ==
>> Plugins::id_from_file($plugin_file) ) {
>> Post::add_new_type( 'my_post_type' );
>> }
>> }
>>
>> public function action_plugin_deactivation ( $file='' ) {
>>
>> if ( Plugins::id_from_file( $file ) ==
>> Plugins::id_from_file( __FILE__ ) ) {
>> // deactivate our custom post type
>> Post::deactivate_post_type( 'my_post_type' );
>> }
>> }
>>
>> Then you need to have a custom set of rewrite rules that tell habari
>> when to show the new post type:
>>
>> public function filter_default_rewrite_rules( $rules ) {
>> $rules[] = array(
>> 'name' => 'display_ my_post_type',
>> 'parse_regex' => '%^
>> my_post_type(?:/page/(?P<page>[2-9]|[1-9]
>> [0-9]+))?/?$%',
>> 'build_str' => 'my_post_type/(page/{$page})',
>> 'handler' => 'PluginHandler',
>> 'action' => 'display_ my_post_type',
>> 'priority' => 90,
>> 'description' => 'Display my_post_type',
>> );
>> return $rules;
>> }
>>
>> And finally you need to have a method to actually handle the display.
>> Notice that the naming of this method matches the action in the rules
>> array.
>>
>> public function action_plugin_act_display_ my_post_type($handler) {
>> $paramarray = array();
>> $paramarray['fallback'] = array(
>> 'my_post_type.multiple',
>> 'my_post_type.single',
>> 'home',
>> );
>>
>> // Makes sure home displays only entries
>> $default_filters = array(
>> 'content_type' => Post::type( 'my_post_type' ),
>> );
>>
>> $paramarray['user_filters']= $default_filters;
>> return $handler->theme->act_display( $paramarray );
>> }
>>
>> Finally in your my_post_type.multiple you would call the post loop
>> like so:
>>
>> <?php foreach ( $posts as $post ) : ?>
>> <?php $theme->content($post, 'home_posts'); ?>
>> <?php endforeach; ?>
>>
>> This is mostly from memory, so the syntax might not be exactly write,
>> but I think it will give you a clear starting point.
>>
>> On May 23, 2009, at 11:46 AM, Tomas Gonzalez Dowling wrote:
>>
>>
>>> Hi all,
>>> I want to create a new post type, i inserted a new row in posttype
>>> table and after that i see at the admin that i can create that
>>> type of
>>> posts. But how I show that stuff from my theme?
>>>
>>> I'm using Habari 0.6.2.
>>> The main reason for doing this is to mantain a portfolio and manage
>>> it easy.
>>>
>>> You can see my page at http://macshack.com.ar/habari-0.6.2
>>>
>>>
>>> Thanks in advance,
>>>
>>> --
>>> ( )
>>> )\ ) ( /( )
>>> (((_) ( ( )\())( (
>>> )\___ )\ )\ '(_))/ )\ )\ '
>>> ((/ __|((_)_((_)) | |_ ((_)_((_))
>>> | (__/ _ \ ' \()| _/ _ \ ' \()
>>> \___\___/_|_|_| \__\___/_|_|_|
>>> 43 6F 6D 74 6F 6D
>>>
>>>
>>>
> Hi again,
> I'm still in trouble. My plugin seems to work perfectly when i
> enter
> the admin area. If i logout the posts doesn't show up.
>
> I'm using these lines to show the posts (they are images as you can
> see). I did try with the first commented line with the same results.
> All
> the following code is on theme.php on my theme. I call this function
> from header.php on my theme.
>
>
> public function galeria()
> {
> //$posteos=Posts::get(array ( 'status' => 'published',
> 'content_type' => 'portfolio', 'offset' => ($pagination)*($page),
> 'limit' => 5, ) );
>
> $posteos = Posts::get('content_type=portfolio');
>
> $i=0;
> //if ($i <= 5 ) {
> foreach ( $posteos as $post ) {
> $i=$i+1;
> $url=$post->info->version;
> echo "<a title=\"$post->title\" href=\"$url\"
> class=\"imagen\"><img id=\"thumb$i\" src=\"$post->content\" alt=\"\"
> style='opacity: 0.5;' /></a>";
> }
> //}
> }
>
>
> Also, i show to you my plugin:
>
>
> <?php
>
> class Portfolio extends Plugin
> {
>
> /**
> * Return plugin metadata for this plugin
> */
> public function info()
> {
> return array(
> 'name' => 'portfolio',
> 'version' => '1.0',
> 'url' => 'http://macshack.com.ar',
> 'author' => 'Tomás González Dowling',
> 'authorurl' => 'http://macshack.com.ar',
> 'license' => 'GPL v3',
> 'description' => 'Una galeria simple'
> );
> }
>
> /**
> * On plugin activation
> */
> public function action_plugin_activation( $file )
> {
> // Don't process other plugins
> if(Plugins::id_from_file($file) ==
> Plugins::id_from_file(__FILE__)) {
>
> // Insert new post content types
> Post::add_new_type( 'portfolio', true );
>
> }
> }
>
>
> /**
> * Manage portfolio
> */
> public function action_form_publish( &$form, &$post )
> {
> if( $form->content_type->value == Post::type('portfolio') ) {
>
> // Add portfolio settings fields
> $settings = $form->publish_controls->append('fieldset',
> 'portfolioSettings', _t('Portfolio Settings'));
>
> // Add version entry
> $settings->append('text', 'version', 'null:null', _t('Full
> image URL'), 'tabcontrol_text');
> $settings->version->value = $post->info->version;
>
> // Add license entry
> $settings->append('text', 'license', 'null:null',
> _t('License'), 'tabcontrol_text');
> $settings->license->value = $post->info->license;
> }
> }
>
>
> /**
> * Now we need to save our custom entries
> */
> public function action_publish_post( &$post, &$form )
> {
> // Run this action, Habari doesn't and we need our form inputs
> //$this->action_form_publish( $form, $post );
>
> if( $form->content_type->value == Post::type('portfolio') ) {
>
> // Save settings
> $post->info->version = $form->version->value;
> $post->info->license = $form->license->value;
> // No, it really is that easy to save data
> }
> }
>
>
> /**
> * Handle displays
> */
> public function filter_theme_act_display_portfolio($handled, &
> $theme)
> {
> /**
> * Tell Habari which files are to be used,
> * we attempt to get any portfolio theme file first.
> * if that fails we goto single and then multiple
> */
> $paramarray['fallback']= array(
> 'portfolio.{$id}',
> 'portfolio.{$slug}',
> 'portfolio.tag.{$posttag}',
> 'portfolio.single',
> 'portfolio.multiple',
> 'single',
> 'multiple',
>
> );
>
> // This is like Post::get().. Get one row, one item
> $paramarray['user_filters']= array(
> 'fetch_fn' => 'get_row',
> 'limit' => 1,
> );
>
> return $theme->act_display( $paramarray );
> }
>
> }
>
> ?>
>
>
>
> What i'm doing wrong?
>
> Thanks again,
>
> --
> ( )
> )\ ) ( /( )
> (((_) ( ( )\())( (
> )\___ )\ )\ '(_))/ )\ )\ '
> ((/ __|((_)_((_)) | |_ ((_)_((_))
> | (__/ _ \ ' \()| _/ _ \ ' \()
> \___\___/_|_|_| \__\___/_|_|_|
> 43 6F 6D 74 6F 6D
>
>
> >
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at http://groups.google.com/group/habari-dev
-~----------~----~----~----~------~----~------~--~---