Keresés

Drupal 7 - vízjel az eredeti képre

moha képe

Hello!

Drupal 7.9 alatt szeretnék a feltöltött képekre vízjelet tenni. Feltettem az imagecache_actions modult és a képstílusok között be is tudom állítani, hogy rátegye a vízjelet (ez szépen működik), de szeretném az eredeti képre is rátenni a vízjelet, azt viszont nem tudom, hogy kell.
Tegyem fel hozzá a sima imagecache modult is? Annak nincs Drupal 7-es verziója...
Esetleg van rá valami más modul, vagy egy feltöltési hook, amit el tudok kapni és saját kóddal rápaolni a vízjelet már feltöltéskor?

Semmi extrára nincs szükségem, elég az is, ha egy szöveget rá tudok tenni a képekre.

Ötletek?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 

Taxonómia: egy mindnek vagy mindnek egy-egy?

moha képe

Hello!

A véleményeteket szeretném kérni az alábbiban:

Van a site-on két különböző típusú tartalom (feltöltött vicces képek és cikkek, amik nem feltétlen poénosan), mindkettőt szeretném címkézni és később majd címkefelhőt is csinálni. Szerintetek melyik a jobb megoldás?

  1. Az összes tartalomnak egy taxonómia szótár (tehát egy címke alatt többféle tartalom is elérhető)
  2. Minden tartalomtípusnak saját taxonómia szótár (így több címkefelhőm is lesz később)

Szóval arra lennék kíváncsi, hogy oldalstruktúra/design és főleg SEO szempontból melyik a jobb választás? Első esetben xy.hu/cimke/valami lenne a taxonómia URL, második esetben pedig xy.hu/cikkek/cimke/valami

Egyelőre a listákban más kinézete van a cikkeknek és a vicces képeknek, de azt nem gond átalakítani, hogy egységes legyen.

Előre is kösz a válaszokat.
Moha

Drupal verzió: 
Fórum: 

E-mail lista kimentése

wittmanmark képe

Van egy 500+ fős felhesználói listám az egyik honlapomon, de nem volt feltéve a simplenews meg semmilyen ilyen E-mail küldő cuccos... A kérdésem az lenne, hogy hogyan tudom a simán csak beregisztrált felhasználók E-mailjeit kimenteni mondjuk egy .txt-be vagy ilyesmi...
Ha van vkinek ötlete az nagy segítség lenne és előre is köszi!

Drupal verzió: 

blokkban node ID php-val

Szekeres_Juli képe

Létrehoztam egy blokkot, ahová egy Facebook like gombot is tervezek tenni. Ahhoz, hogy az adott oldalra vonatkozzon a lájk, a következő kódot írtam még bele:

/node/<?php print $node->nid; ?>

Beviteli forma php kód, ürítettem mindent, amiről tudok, hogy üríteni lehet (admin menü bal felső + /admin/build/themes), de továbbra sem jelenik meg a node ID a forráskódban.

Hogy a problémát leszűkítsem, lértehoztam egy blokkot, amiben csak a fenti kód szerepel - ott sem jelenik meg a node ID.

Mit csináltam rosszul?

Drupal verzió: 
Fórum: 

Views 2 nézet kódba exportálása

gergely képe

Minden oldalon amit egy időre befejezek - mert ugye weboldalt csak elkezdeni lehet befejezni nem - megpróbálom a legjobb teljesítményt kicsikarni a rendszerből, hogy gyors legyen.

Ennek egyik legjobb módszere ha a nézetünket nem adatbázisban eltárolt adatok alapján kérdeztetjük le az adatbázisból, hanem mindezt kiexportáljuk egy modulba és az intézi csak a lekérdezés eredményét.

Elég elavult dolognak számít 2011 vége felé 6.x-2.x verziójú Views modulról írni, de hátha valaki még nem csinálta ezt. (7.x-3.x-en nem jöttem még rá, hogy kell.)

Tehát a lépések a következők:

  • Nyomjuk meg a nézeten az export linket
  • Ez ki fog adni egy hosszú php kódot.
  • Készítsünk egy modult melynek neve viewskodba.module tartalma pedig a következő legyen:

&lt;?php<br />function foobar_views_api() {<br />  return array(<br />    'api' =&gt; 2,<br />    'path' =&gt; drupal_get_path('module',foobar) . '/views/*.inc',<br />  );<br />}
<p>function foobar_views_default_views() {<br />  $path = './'. drupal_get_path('module',foobar) . '/views/*.inc';<br />  <br />  foreach (glob($path) as $views_filename) {<br />     require_once($views_filename);<br />  }<br />  return $views;<br />}</p>
  • Modul nem létezhet .info file nélkül:

name = "FooBar"<br />description = "Stores the view in code, idea from sgergely.hu"<br />core = "6.x"<br />version = "6.x-dev"<br />project = "foobar"<br />package = "Custom"

  • Hozzunk létre a modul könyvtárán belül egy views könyvtárat, ebben fogjuk tárolni az exportált nézetet. A file neve legyen mondjuk nezetem.inc amelynek a tartalma a következőképpen nézzen ki:

&lt;?php<br />//Ennek a sornak a helyére kell bemásolni az első pontban megkapott hosszú php kódot.<br />$views[$view-&gt;name] = $view;

  • Még nem végeztünk mert a felületen be kell állítani, hogy a Views tudja, hogy kódba raktuk a nézetet.
  • A Tools oldalon ( /admin/build/views/tools ) töröljük a Views Cache-t
  • A nézet list oldalon ( /admin/build/views/list ) kattintsunk a Visszaállít linkre
  • Töröljük mégegyszer a Views Cache-t.
  • Kész.

Címkék: drupaldrupal6views

Akiket ajánlok

gergely képe

Folyamatosan felmerül az a kérdés, hogy ha én nem érek rá egy éppen nagyon igéretes munkára akkor kiket javasoljak.
Álljanak itt azok, bárminemű sorrend nélkül, akikkel volt szerencsém együtt dolgozni vagy láttam munkájukat közelről ezért javaslom őket:

Címkék: drupalwebfejlesztő

Lokalizált telepítési profil készítése

gergely képe

Abba a problémába ütköztem, hogy egy olyan telepítési profilt szerettem volna létrehozni Drupal 6-os verziója alatt, ami telepítés után nem angol, hanem magyar lesz.

Meg is írtam a profil fájlt ahogyan le van írva a nagy könyvben, azaz létrehoztam - ebben az esetben - az example.profile fájlt a /profiles/example könyvtárban ezzel a tartalommal:

<br />
&lt;?php<br />
/**<br />
* Return a description of the profile for the initial installation screen.<br />
*<br />
* @return<br />
* An array with keys 'name' and 'description' describing this profile,<br />
* and optional 'language' to override the language selection for<br />
* language-specific profiles, e.g., 'language' =&gt; 'fr'.<br />
*/<br />
function example_profile_details() {<br />
return array(<br />
'name' =&gt; st('Example Drupal (Customized for Drupal development)'),<br />
'description' =&gt; st('Select this profile to enable settings typical for a development website.'),<br />
'language' =&gt; 'hu',<br />
);<br />
}<br />
/**<br />
* Return an array of the modules to be enabled when this profile is installed.<br />
*<br />
* The following required core modules are always enabled:<br />
* 'block', 'filter', 'node', 'system', 'user'.<br />
*<br />
* @return<br />
* An array of modules to be enabled.<br />
*/<br />
function example_profile_modules() {<br />
return array(<br />
// Enable optional core modules.<br />
'dblog', 'taxonomy', 'menu', 'path', 'locale',<br />
// Enable contributed modules<br />
'admin_menu', 'googleanalytics', 'votingapi', 'devel', 'coder', 'mollom',<br />
// Enable views<br />
'views', 'views_ui',<br />
// Enable cck<br />
'content', 'text', 'number', 'fieldgroup',<br />
// Enable organic groups<br />
'og', 'og_views',<br />
//Enable pathauto<br />
'token', 'pathauto',<br />
);<br />
}<br />
?&gt;<br />

Ami lényeges rész a lokalizációhoz, az a st(); függvény, hogy a name és a description tömbelemet tudja a rendszer fordítani.

A másik lényeges sor az a 'language' =&gt; 'hu', mert itt kerül definiálásra, hogy milyen .po fájlt keressen, és itt jön a trükk:

Azt a hu.po fájlt amit a fordítás tartalmaz a /profiles/default/translations könyvtárban, kell átmásolni és a végére beleírni az általunk írt profil angol szövegeinek fordítását.

Ha nagyon sok a fordítanivaló akkor segítségünkre lehet a Potx modul, mely legenerálja a .po fájlt amiben aztán csak fordítani kell és utána mindkét sort másolni.

A mi esetünkben például ezt kellene másolni:

<br />
#: example.profile:12<br />
msgid "Example Drupal (Customized for Drupal development)"<br />
msgstr "Példa Drupal Disztribúció (fejlesztéshez)"

#: example.profile:13
msgid "Select this profile to enable settings typical for a development website."
msgstr "Válaszd ezt, hogy telepítsd a disztribúciót ami egy tipikus fejlesztői környzetet hoz létre!"

Tehát így kellene hogy kinézzen a könyvtárrendszerünk a profil elkészítése után:

  • profiles
    • default
    • example
      • example.profile
      • translations
        • hu.po

Ezzel készen is van a magyar Drupalt telepítő telepítési profil.

Címkék: drupalinstall_profilelocalizationdrupal6

Views Bonus Pack használata röviden

gergely képe

Mivel elég sokat keresgéltem, hogyan is lehetne egy view-t amit már összekattingattam CSV vagy egyéb hasonló formátumba rakni, gondoltam megosztom.

Először is szükségünk lesz a Views Bonus Packra ami CSV, DOC, XML formátumokban tudja kiexportálni az általunk elkészített view-t.

A dokumentációja sajnos nem az igazi a modulnak, így ha van kedve valakinek írhatna hozzá egy oldalt a drupal.org-ra. :)
Ami nekünk kellene belőle arra ennyit mond:

These plugins will only appear on your views administration page, in the 'type' dropdown of the page and block sections.

Ezzel nem lehet semmire menni, ugyanis nem is itt kell keresni a megoldást. Ellenben egy ráakadtam egy issue-ban a helyes megoldásra webchicktől:

  1. Add a new "Feed" display to your view.
  2. Change its style to "CSV file"
  3. Configure the options (such as name, quote, etc.) by clicking the gear icon next to the style.
  4. Give it a path (such as path/to/view/csv)

Ami nyers fordításban ennyit tesz:

  1. Adjunk hozzá a view-nkhoz egy új "Feed" display-t
  2. Változtassuk a style-t "CSV file"-ra
  3. Állítsuk be az opciókat a style melletti fogaskerkére kattintva.
  4. Adjunk neki egy útvonalat a letöltéshez (mondju/ez/csv)

Azért írtam nyers fordításban félig meghagyva az angol szöveget, mert így vannak a views2-ben is a beállítási lehetőségek, így talán egyszerűbb elnavigálni.

Címkék: drupalhogyanviewsdrupal-6

Nagyméretű MySQL adatbázisok importja/exportja

gergely képe

Amikor MySQL adatbázissal dolgozok akkor általában phpMyAdmint használok, ami egy nagyon szép és egyszerű felület az adatbázis adminisztrálására. Néha sajnos az adatbázis túl nagy ahhoz, hogy phpMyAdmint használjunk, mert például kifut a php futási idejéből és nem csinálja meg a kért exportálást vagy importálást, ezért néha a parancssorhoz kell nyúlnom.

Tehát ebben az írásban ismertetni szeretnék néhány lehetőséget, hogyan is lehet ezt megejteni a konzolból.
A következő néhány sorban a [Felhasználónév] helyére a MySQL adatbázis felhasználóneve, a [ABnév] az adatbázis neve, a [/útvonal_a_fájlhoz/ABnév] az útvonal a kiexportált adatbázis fájlhoz - angolul dump - és végül a [/útvonal_a_mysqlhez/] az útvonal a MySQLhez (ez pl. Mac-en vagy Windows-on kell a parancssori parancsok kiadásához.)

Nagyméretű adatbázis másolása/exportálása

Először is a MySQLnek nincs másolás funkciója. Úgy lehet másolatot készíteni, hogy kiexportáljuk az adatbázist a mysqldump paranccsal. Hogy kiexportáljuk az adatbázist és egyből gzippel tömörítsük is használjuk a következő parancsot. Kérni fogja futás előtt a jelszavunkat.

mysqldump -u [Felhasználónév] -p [ABnév] | gzip &gt; [/útvonal_a_fájlhoz/ABnév].sql.gz

Nagyméretű adatbázis importálása

Ha vissza akarjuk állítani az előbbi módon exportált adatokat a rendszerbe a következőt kell tennünk.
Először csomagoljuk ki a fájlt:

gzip -d [/útvonal_a_fájlhoz/ABnév].sql.gz

Lépjünk be a MySQLbe (megint kérni fogja a jelszavunkat):

[/útvonal_a_mysqlhez/]mysql -u [Felhasználónév] -p

Utána a következőt kell tennünk, hogy kitöröljük az előző adatbázist és betöltsük a mentést. (Vigyázat adatvesztéshez vezethet!)

SHOW DATABASES;<br />DROP DATABASE [ABnév];<br />CREATE DATABASE [ABnév];<br />USE [ABnév];<br />SOURCE [/útvonal_a_fájlhoz/ABnév].sql;

Extra mentési funkciók

Van úgy, hogy például a keresés index táblája túl nagyra nő, így azt nem szeretnénk exportálni:

mysqldump -u [Felhasználónév] -p [ABnév] --ignore-table=[ABnév].search_index | gzip &gt; [/útvonal_a_fájlhoz/ABnév].sql.gz

Egyébként nagyon sok tábla van amit érdemes kihagyni, ezek a következők: watchdog, sessions és az összes cache* tábla.
Viszont, ha fenti példát használjuk a visszatöltésnél akkor hiányozni fognak a kihagyott táblák, így inkább ezt a két lépést használjuk ez esetben:

Először is akkor csináljunk mentést az adatbázisról az adatok nélkül, csak a szerkezetről:

mysqldump -u [Felhasználónév] -p [ABnév] --no-data | gzip &gt; [/útvonal_a_fájlhoz/ABnév].info.sql.gz

Ezután készítsük el a mentést csak azokról adatokról amelyek kellenek:

[/útvonal_a_mysqlhez/]mysqldump -u [Felhasználónév] -p [ABnév]  --no-create-info --ignore-table=[ABnév].search_index --ignore-table=[ABnév].cache --ignore-table=[ABnév].cache_block --ignore-table=[ABnév].cache_content --ignore-table=[ABnév].cache_filter --ignore-table=[ABnév].cache_form --ignore-table=[ABnév].cache_menu --ignore-table=[ABnév].cache_mollom --ignore-table=[ABnév].cache_page --ignore-table=[ABnév].cache_pathdst --ignore-table=[ABnév].cache_pathsrc --ignore-table=[ABnév].cache_views | gzip &gt; [/útvonal_a_fájlhoz/ABnév].data.sql.gz;

Nem lenne egyszerűbb minden egyes cache_ helyett helyettesítő karaktert használni? Dehogynem! Lássuk:

[/útvonal_a_mysqlhez/]mysqldump -u [Felhasználónév] -p [ABnév]  --no-create-info --ignore-table=[ABnév].search_index --ignore-table=[ABnév].cache% | gzip &gt; [/útvonal_a_fájlhoz/ABnév].data.sql.gz;

Miután ezzel készen vagyunk a fenti módon behúzhatjuk az adatokat az adatbázisba először azt amelyik csak a táblaszerkezetet tartalmazza (.info.sql.gz), és utána az adatokat (.data.sql.gz). Ez azért jó mert egy relatíve kis adatbázist kell csak bevinni a rendszerbe.

A fenti helyettesítő karakteres megoldást eddig sehol nem láttam dokumentálva ezért nem biztos, hogy működni fog, próbáld ki!

Egyéb lehetőségek

Van keresztplatformos grafikai program a MySQL adminisztráláshoz:
http://dev.mysql.com/downloads/gui-tools/5.0.html

Van egy Drupal modul is amely ezt meg tudja tenni:
http://drupal.org/project/backup_migrate

Ez a bejegyzés egy ~fordítása egy a drupal.org/planet oldalon megjelent blogbejegyzésnek. Külön köszönet a fordításban nyújtott segítségért a #drupal.hu irc csatorna tagjainak.

Címkék: drupalmysql