Necesito adjuntar un campo a algunos paquetes. Un fragmento de PHP hará el trabajo por mí, por lo que no necesito un módulo. El siguiente fragmento es lo que debe ejecutarse:
$field_name = 'field_custom_image';
// Create the field.
$field = array(
'field_name' => $field_name,
'type' => 'image',
);
field_create_field($field);
y luego el fragmento para agregar este campo al paquete:
// Create the instance.
$instance = array(
'field_name' => $field_name,
'entity_type' => 'node',
'bundle' => 'article',
'label' => 'Image',
'description' => 'An image for the article.',
'required' => TRUE,
);
field_create_instance($instance);
¿Hay alguna manera de ejecutar código PHP directamente en Drupal, sin la necesidad de escribir un módulo, instalarlo, ejecutarlo y desinstalarlo?
Respuestas:
Si dice "Necesito ejecutar PHP" y "No necesito un módulo" en el mismo pensamiento, le sugiero que siga el camino equivocado, ya sea en el enfoque de este problema específico , o el enfoque para construir el sitio en general.
drush scr
lo ayudará si esa es la dirección en la que realmente quiere ir, o podría escribir un script PHP independiente (básicamente solo copie / pegue todo a través de ladrupal_bootstrap()
llamada desde index.php y agregue su código personalizado después) pero hay un par de otros cosas que podrías mirar:Muchos sitios en los que he trabajado han tenido una combinación de ambas soluciones. La configuración debería ir principalmente a los módulos de características exportados, y cualquier cosa que no pueda (¿está realmente seguro de que no puede?) Puede ir a un enlace de actualización.
fuente
Sí, la hay, pero dada tu descripción, me pregunto si te ayudará:
fuente
Si necesita ejecutar código solo una vez, puede hacerlo sin instalar ningún módulo, incluido el módulo Devel.
Escriba un archivo PHP (por ejemplo, task.php ), póngalo donde está el archivo cron.php que viene con Drupal y agregue el siguiente código.
Si ya está usando Drush para mantener / implementar su sitio, entonces podría hacer un script Drush . De esta manera, podría ser ejecutado por CLI, y podría recibir cualquier argumento, haciéndolo reutilizable para muchas ocasiones.
También puede ejecutar un script PHP con
drush php-eval
(o simplementedrush ev
), por ejemplo:Crearía un script Drush, pero si no puede instalar Drush, o si necesita ejecutar código PHP desde el navegador, el primer método funciona bien.
fuente
Agregue su fragmento de código a un archivo y guárdelo como
file_name.php
en la carpeta raíz del sitio Drupal. Luego ejecute el siguiente comando en una terminal, desde la carpeta raíz del sitio Drupal como su directorio de trabajo:drush scr file_name.php
Este comando ejecutará su archivo PHP. (Para tener una idea de la ejecución, puede incluir algunas declaraciones de impresión en su archivo, que generarán el texto, los valores variables, etc. en el terminal donde ejecuta el comando drush).
Nota: Como requisito previo, debe tener
drush
instalado en su sistema.fuente
Puede usar el módulo en
Php
línea de Devel, pero le permite obtener uno de mis trucos en drupal para ejecutar mi código personalizado sin ningún módulo.primero crea un
menu item
enhook_menu
luego borre la memoria caché (porque los elementos del menú se almacenaron en caché en drupal), coloque todo lo que desee
my_function
y simplemente escribayoursite.com/ytest
Espero que te ayude en proyectos "dada";)
fuente
El objetivo de los módulos de Drupal es proporcionar una lógica separada a ciertos componentes, de modo que puedan desactivarse si algo sale mal.
hook_install
/ /hook_update
En su caso, que está creando un nuevo campo de una sola vez, el escenario ideal es usar
hook_install
ohook_update
.Si no tiene un módulo personalizado (por cierto, también puede usar el módulo de características exportado para eso), cree uno nuevo solo para actualizaciones (por ejemplo
site_updates
). En Drupal 7, todo lo que necesita es crear carpeta con 3 archivos:.info
,.module
y.install
y definir la instalación o actualización de gancho en su.install
. Usar el enlace de instalación / actualización es conveniente para tener entornos consistentes, especialmente cuando tiene múltiples servidores Drupal (como dev, test y prod), por lo que el cambio puede ser invocado durante la próxima implementación.Si aún no desea crear un módulo, aquí hay otros métodos.
Ejecución de una sola vez
Si solo necesita ejecutar cierto código PHP solo una vez, puede:
/devel/php
,Use CLI (y su comando / ) para ejecutar código PHP, por ejemplo
drush
eval
ev
Use
drush scr
para ejecutar script PHP:¿Dónde
my_file.php
está su script PHP simple con su código para ejecutar?Ejecución de página específica
Para ejecutar código personalizado en ciertas páginas o componentes:
template.php
archivo en su encargo el tema (por ejemplotemplate_preprocess_node
,template_preprocess_block
,template_preprocess_page
).Toda la ejecución de la página
Para agregar y ejecutar código PHP en cada página sin escribir un módulo, puede:
settings.php
archivo para eso. Solo se recomienda para código simple, como anulación de configuración. De lo contrario, debe usarlohook_init
como parte de su módulo personalizado.fuente