Examen CMS

Responde a las siguientes preguntas. Cada pregunta vale un punto.

 

1.- En wordpress hay dos tipos básicos de contenido ¿Cuáles son y en que se diferencian?

 

2.- ¿En qué apartado podemos configurar nuestro sitio para que tenga urls amigables?

 

3.- ¿Podemos cambiar dinámicamente la barra lateral? Explica desde donde y con qué objetos.

 

4.- Dentro del index.php de un tema hay las siguientes líneas:

 

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

<?php get_template_part( ‘content’, get_post_format() ); ?>

<?php endwhile; ?>

 

¿Qué es lo que hacen?

 

5.- En mi carpeta de temas tengo los siguientes archivos:

content-image.php , content-video.php, content.php, content-quote.php

Suponiendo que mi index.php sea como el de la pregunta 4 ¿Para qué sirven tantos archivos?

 

6.- He creado un tema hijo de Twenty Fifteen y tengo esto en la cabecera del css:

 

/*

Theme Name:   Tema hijo

Description:  Tema hijo de Twenty Fifteen

Author:       Aitor Tilla

Author URI:   http://aitortilla.com

Version:      1.0.0

License:      GNU General Public License v2 or later

License URI:  http://www.gnu.org/licenses/gpl-2.0.html

Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready

* /

 

¿Hay algo qué esté mal? Si es así soluciónalo

 

7.- He creado un plugin con las siguientes líneas:

 

add_filter(‘the_content’, ‘miplugin_get_button’);

 

function miplugin_get_button($content) {

return $content . ‘<h2>Ola k ase?</h2>’;

}

 

¿Qué es lo que hace?

 

8.- En Drupal hay una carpeta donde se guarda la configuración, lo módulos y los temas instalados. ¿Cuál es?

 

9.- Tengo un módulo personalizado en Drupal con el siguiente código:

 

function mimodulo_menu() {

$items = array();

 

$items[‘mimo’] = array(

‘title’ => ‘Mi módulo’,

‘page callback’ => ‘_mimodulo_page’,

‘access arguments’ => array(‘access mimoduloextra content’),

‘type’ => MENU_NORMAL_ITEM,

);

return $items;

}

 

 

function _mimodulo_page() {

$result = mimodulo_contenido();

 

$items = array();

 

foreach ($result as $node) {

$items[] = array(

‘data’ => l($node->title, ‘node/’ . $node->nid),

);

}

 

$page_array[‘mimodulo_arguments’] = array(

‘#title’ => t(‘Contenido mi módulo’),

‘#items’ => $items,

//Theme hook with suggestion.

‘#theme’ => ‘item_list__mimodulo’,

);

return $page_array;

 

}

 

function mimodulo_contenido(){

$max_num = variable_get(‘current_posts_max’, 3);

$query = db_select(‘node’, ‘p’)

->fields(‘p’, array(‘nid’, ‘title’, ‘created’))

->condition(‘status’, 1) //Published.

->orderBy(‘created’, ‘DESC’) //Most recent first.

->range(0,$max_num)

->execute();

return $query;

}

 

Si mi drupal está en localhost/drupal ¿Qué se muestra si pongo localhost/drupal/mimo?

 

10.- Un amigo quiere montar una tienda online para vender productos de artesanía. Tiene unos 50 productos diferentes. ¿Qué CMS le instalaríais y por qué? ¿Cuál no y por qué?

Descargar magento

Siguiente enlace:

https://www.wetransfer.com/downloads/98018c556e2859ebc860af8c72ac233c20150504103752/c21d462db42e1692507ac6d20241331e20150504103752/950fd3

Ejercicio Sala conciertos

Tendremos tres tipos de contenido:

Salas

-Nombre

-Descripción

-Logo

– Aforo

Grupos

– Nombre

– Descripción

– Fotos

– Vídeos

– Mp3 para descargar

– Estilo (Taxonomy)

Conciertos

– Nombre

– Fecha

– Precio

– Sala

– Grupo

Ejercicios PHP

Ejercicio sencillo:

Obtener un listado de la base de datos agrupado por Código postal. Ejemplo:

08001

Juan Pi Agla, 6

Eva H Agla 6

08002

Luis

Rosa

….

 

Ejercicio más complicado:

Añadir al mantenimiento de la entrada anterior una pantalla de login/password. Crearemos una tabla ‘acceso’ con los campos user/password. El password lo guardaremos en md5. Si el usuario no está logueado no podrá acceder a ninguna pantalla.

Obtener dos imágenes aleatorias

El siguiente código nos muestra dos imágenes aleatorias del media library:

 

  $media_query = new WP_Query(
 array(
 'post_type' => 'attachment',
 'post_status' => 'inherit',
 'posts_per_page' => 2,
 'orderby'=>'rand'
 )
);

foreach ($media_query->posts as $post) {
 echo wp_get_attachment_image($post->ID,'thumbnail');
}

Esqueleto de widget

<?php
/*
Plugin Name: Entrada aleatoria
Plugin URI: http://jamesbruce.me/
Description: Muestra una entrada aleatoria
Author: James Bruce
Version: 1
Author URI: http://jamesbruce.me/
*/


class EntradasWidget extends WP_Widget
{
 function EntradasWidget()
 {
 $widget_ops = array('classname' => 'EntradasWidget', 'description' => 'Muestra entrada aleatoria' );
 $this->WP_Widget('EntradasWidget', 'Entrada aleatoria con thumbnail', $widget_ops);
 }
 
 function form($instance)
 {
 $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
 $title = $instance['title'];
?>
 <p><label for="<?php echo $this->get_field_id('title'); ?>"><?=_e('Title')?>: <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" /></label></p>
<?php
 }
 
 function update($new_instance, $old_instance)
 {
 $instance = $old_instance;
 $instance['title'] = $new_instance['title'];
 return $instance;
 }
 
 function widget($args, $instance)
 {
 extract($args, EXTR_SKIP);
 
 echo $before_widget;
 $title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']);
 
 if (!empty($title))
 echo $before_title . $title . $after_title;;
 
 // WIDGET CODE GOES HERE
 echo "<h1>Ola k ase?</h1>";
 
 echo $after_widget;
 }
 
}

add_action( 'widgets_init', create_function('', 'return register_widget("EntradasWidget");') );?>

Plugin validator!

function validator_get_url(){
 return get_permalink();
}


function validator_boton($contenido) {
 
 return $contenido.'<input type="button" value="Valida la página" onclick="location.href=\'http://validator.w3.org/check?uri='.urlencode(validator_get_url()).'\'"/>';
 
}
function validator_shortcode(){
 return '<input type="button" value="Valida la página" onclick="location.href=\'http://validator.w3.org/check?uri='.urlencode(validator_get_url()).'\'"/>';
}

add_filter( 'the_content', 'validator_boton' );

add_shortcode('validator', 'validator_shortcode');

Plugin censura

Código del plugin

 <?php
/*
Plugin Name: Censura
Plugin URI: https://es.wikiquote.org/wiki/Portada
Description: Censura palabras que pueden ofender
Author: Jota Peich
Version: 1.0
Author URI: http://intelisen.com
*/

function censura_get_palabras(){
 return explode( ",", get_option("censura_palabras"));

}

function censura_filtro($contenido) {
 $palabras = censura_get_palabras();
 foreach($palabras as $palabra){
 $contenido= str_replace($palabra, '<span class="censura">'.str_repeat("*",strlen($palabra)).'</span>' , $contenido);
 
 }
 return $contenido;
 
}


add_filter( 'the_content', 'censura_filtro' );


add_action( 'wp_enqueue_scripts', 'censura_pon_css' );

/**
 * Enqueue plugin style-file
 */
function censura_pon_css() {
 // Respects SSL, Style.css is relative to the current file
 wp_register_style( 'prefix-style', plugins_url('style.css', __FILE__) );
 wp_enqueue_style( 'prefix-style' );
}
add_action( 'admin_menu', 'censura_menu' );
add_action( 'admin_init', 'censura_settings');

function censura_settings() {
 register_setting( 'censura-group', 'censura_palabras' );
};

function censura_menu() {
 add_options_page( 'Opciones censura', 'Censura', 'manage_options', 'censura-identifier', 'censura_options' );
}

function censura_options() {
 if ( !current_user_can( 'manage_options' ) ) {
 wp_die( 'No tiene permiso.' );
 }
?>

 <div>
 <?php screen_icon(); ?>
 <h2>Opciones censura</h2>

 <form method="post" action="options.php">
 <?php 
 settings_fields( 'censura-group' ); 
 do_settings_fields( 'censura-group', '' );
 ?>

 <p>Introduzca las palabras a censurar</p>
 <input size="70" type="text" name="censura_palabras" value="<?php echo get_option('censura_palabras'); ?>" />

 <?php
 submit_button();
 ?>
 </form>
 </div>
<?php
}
?>