تغییر در مقدار فیلد از طریق ویوو

Events happening in the community are now at Drupal community events on www.drupal.org.
Posted by mehotkhan on November 21, 2013 at 7:35pm

سلام ،دوستان من یه مشکل برخوردم
توی بخشی از سایتم یه ویوو ساختم که مقدار یه محتوا رو به شرطی که تیک "تیتر 1" زده باشه نشون میده ، و فقط یه آیتم رو نشون میده
مشکل من اینجاست که می خوام اون محتوایی که که دیگه توی این ویوو نشون داده نمیشه رو اتوماتیک تیک "تیتر 1 " غیر فعال بشه
چطوری میتونم این کار رو انجام بدم ؟
مرسی

Categories:

Comments

Views Prebuild Hook

Posted by pcfeeler@gmail.com on November 22, 2013 at 8:02am

Your prefered way (on your view callbacks)

<?php
function yourmodule_views_prebuild ($view){
//dsm($view);
if ($view->name == "your_view_name"){
$lastNid = $view->result[0]->nid;// if view has only one result
setToZero = db_update('field_data_yourfieldname');
setToZero->fields(array('yourfieldname_value' => 0));
setToZero->condition("field_data_yourfieldname",0,"<>");
setToZero->condition("entity_id",$lastNid,"<>");
setToZero->execute();
}
return
$view;
}
?>

Another way on node save (more performant):
<?php
function yourmodule_node_presave($node){
$isZero = $node->yourfieldname['und'][0]['value'];
$nodeID = $node->nid;
if (
$isZero != '0'){
setToZero = db_update('field_data_yourfieldname');
setToZero->fields(array('yourfieldname_value' => 0));
setToZero->condition("field_data_yourfieldname",0,"<>");
setToZero->condition("entity_id",$nodeID,"<>");
setToZero->execute();
}
}
?>

مرسی ، این فانشن رو کجا باید

Posted by mehotkhan on November 22, 2013 at 9:22am

مرسی ، این فانشن رو کجا باید قرار بدم ؟
خیلی وارد نیستم به مباحث ویوو

yourmodule

Posted by pcfeeler@gmail.com on November 23, 2013 at 4:43am

باید یه ماژول درست کنید به اسم
yourmodule
یا هر اسم دیگری
مقدار
your_view_name
رو به اسم ماشینی ویوتون تغییر بدین
مقدار
yourfieldname
رو به اسم ماشینی فیلدتون تغییر بدین

دوستان کسی یه راهنمایی کنید

Posted by mehotkhan on November 22, 2013 at 7:31pm

دوستان کسی یه راهنمایی کنید چطوری این کد رو قرار بدم توی سایت
سپاس فراوان

bayad ye module custom

Posted by Exlord on November 23, 2013 at 4:24am

bayad ye module custom besazin va in function ro tuye un garar bedin

من الان یه ماژول ساختم ، کد

Posted by mehotkhan on November 23, 2013 at 4:59pm

من الان یه ماژول ساختم ، کد ها رو هم قرار دادم ، ولی کد ها خطا میگیره ، کلا با فعال کردنش سایت از کار می افته ،
محتوای فایل FirstTitle.module

<?php

function FirstTitle_views_prebuild ($view){
if (
$view->name == "first_title"){
$lastNid = $view->result[0]->nid;// if view has only one result
setToZero = db_update('field_data_field_first_title');
setToZero->fields(array('field_first_title_value' => 0));
setToZero->condition("field_data_yfield_first_title",0,"<>");
setToZero->condition("entity_id",$lastNid,"<>");
setToZero->execute();
}
return
$view;
}

?>

محتوای فایل FirstTitle.info
name = "First Title"
description = "create first title section dynamicly"
core=7.x
package = "Other"
files[] = FirstTitle.module

version = "7.x-1.0"
core = "7.x"

کجای کارم مشکل داره ؟

<?phpsetToZero->condition("fi

Posted by pcfeeler@gmail.com on November 24, 2013 at 10:42am
<?php
setToZero
->condition("field_data_yfield_first_title",0,"<>");
?>

yfield => field
<?php
setToZero
->condition("field_data_field_first_title",0,"<>");
?>

کد زیر رو داخل فایل
index.php
دروپال قرار بدید تا ارورها نمایش داده بشن
https://drupal.org/node/1056468
<?php
error_reporting
(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
?>

سپاس فراوان بابت اینکه همراه

Posted by mehotkhan on November 24, 2013 at 7:12pm

سپاس فراوان بابت اینکه همراه هستید
کاری که گفتید رو انجام دادم ولی کلا توی ادیتور هم سینتاکس ارور میده ، توی خطاهای دروپال هم همینطور
تصویر زیر رو ببینید :
Only local images are allowed.

ارور زیر هم توی ایندکس میگره ، همون کدی که گفتید رو گزاشتم

Parse error: syntax error, unexpected '=' in public_html/sites/all/modules/FirstTitle/FirstTitle.module on line 7

توی نت هم سرچ کردم ، چیزی نتونستم پیدا کنم که مشکل رو رفع کنم
مرسی از راهنماییتون

lol shoma chand vagte php kar

Posted by Exlord on November 24, 2013 at 7:36pm

lol shoma chand vagte php kar mikonid ?
tu php variable ha ba $ shuru mishan :D
setToZero --> $setToZero

آقا من همه این کارها رو کردم

Posted by mehotkhan on November 24, 2013 at 8:27pm

آقا من همه این کارها رو کردم ولی با جواب نداد !
با روش دوم هم رفتم ، ولی موقع ذخیره محتوا که تیک تیتر 1 زده باشه ، اروز میده :
وب سایت با یک خطای غیر منتظره مواجه شد. لطفا بعدا دوباره تلاش کنید.
این کدها رو گزاشتم توی ماژول

<?php
function FirstTitle_node_presave($node){
$isZero = $node->field_first_title['und'][0]['value'];
$nodeID = $node->nid;
if (
$isZero != '0'){
$setToZero = db_update('field_data_field_first_title');
$setToZero->fields(array('field_first_title_value' => 0));
$setToZero->condition("field_data_field_first_title",0,"<>");
$setToZero->condition("entity_id",$nodeID,"<>");
$setToZero->execute();
}
}
?>

چرا جواب نمیده ؟ :(

از لحاظ ساینتکسی به جز موردی که دوستمون اشاره کردن درباره دالر ساین به نظر نمیاد مشکل دیگه ای باشه
دقت کنید که نام جدول تو دیتابیس دقیقا همین نامی که توی ماژول هست باشه با پی اچ مای ادمین میتونید چک کنید.

لطفا این کد را تست کنید.

Posted by hejazee on January 18, 2014 at 11:49pm

لطفا این کد را تست کنید. البته ظاهرا مشکل جزیی وجود دارد و این که هر بار نود را ذخیره می کنید باید کش دروپال را پاک کنید. شاید راه حلی برای آن پیدا شود.

<?php
/**
* Implements hook_node_presave().
*/
function titr1_node_presave($node) {
//your boolean field name
$field_name = 'field_titr_1';

//on value
$on_value = 1;

//off value
$off_value = 0;

if (isset(
$node->$field_name)) {
$field = $node->$field_name;

if (isset(
$field['und'][0]['value'])) {
$field_value = $field['und'][0]['value'];

if (
$field_value == $on_value) {

$table_name = "field_data_{$field_name}";
$table_field_name = "{$field_name}_value";

$transaction = db_transaction();
try {
$q = db_update($table_name)
->
fields(array(
$table_field_name => $off_value,
))
->
condition($table_field_name, $on_value)
->
condition('entity_id', $node->nid, "<>");

$q->execute();

db_ignore_slave();
}
catch (\
Exception $e) {
$transaction->rollback();
watchdog_exception('Titr 1', $e, NULL, WATCHDOG_ERROR);
drupal_set_message('error', 'error');
return
FALSE;
}
}
}
}
}
?>

Drupal Persian

Group categories

دسته بندی اصلی

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

AltStyle によって変換されたページ (->オリジナル) /